checkbox.stories.js 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. import React, { useState, useCallback, useMemo } from 'react';
  2. import { storiesOf } from '@storybook/react'; // import { withKnobs, text, boolean } from '@storybook/addon-knobs';
  3. import Button from '../../button';
  4. import Popover from '../../popover';
  5. import Checkbox from '../index';
  6. import CheckboxGroup from '../checkboxGroup';
  7. import { Input, Row, Col } from '../../index';
  8. import { IconClose } from '@douyinfe/semi-icons';
  9. const stories = storiesOf('Checkbox', module); // stories.addDecorator(withKnobs);;
  10. stories.add('checkbox default', () => {
  11. return (
  12. <div>
  13. <Checkbox onChange={e => console.log(e)} value={1} onChange={v => console.log(v)}>
  14. hello
  15. </Checkbox>
  16. <br />
  17. <Checkbox checked>这是一个受控的checked=true的checkbox,没有配onChange</Checkbox>
  18. <br />
  19. <Checkbox defaultChecked>这是一个不受控的defaultChecked=true的checkbox</Checkbox>
  20. <br />
  21. <Checkbox disabled>这是一个受控的disabled=true的checkbox</Checkbox>
  22. <br />
  23. <Checkbox checked disabled>
  24. 既checked又disabled
  25. </Checkbox>
  26. <br />
  27. <Checkbox indeterminate>indeterminate</Checkbox>
  28. </div>
  29. );
  30. });
  31. stories.add('checkbox without text', () => {
  32. return (
  33. <div>
  34. <Checkbox onChange={e => console.log(e)} />
  35. </div>
  36. );
  37. });
  38. class CheckboxControl extends React.Component {
  39. state = {
  40. checked: true,
  41. disabled: false,
  42. };
  43. toggleChecked = () => {
  44. this.setState({
  45. checked: !this.state.checked,
  46. });
  47. };
  48. toggleDisable = () => {
  49. this.setState({
  50. disabled: !this.state.disabled,
  51. });
  52. };
  53. onChange = e => {
  54. console.log('checked = ', e.target.checked);
  55. this.setState({
  56. checked: e.target.checked,
  57. });
  58. };
  59. render() {
  60. const label = `${this.state.checked ? 'Checked' : 'Unchecked'}-${this.state.disabled ? 'Disabled' : 'Enabled'}`;
  61. return (
  62. <div>
  63. <p
  64. style={{
  65. marginBottom: '20px',
  66. }}
  67. >
  68. <Checkbox checked={this.state.checked} disabled={this.state.disabled} onChange={this.onChange}>
  69. {label}
  70. </Checkbox>
  71. </p>
  72. <p>
  73. <Button type="primary" size="small" onClick={this.toggleChecked}>
  74. {!this.state.checked ? 'Check' : 'Uncheck'}
  75. </Button>
  76. <Button
  77. style={{
  78. marginLeft: '10px',
  79. }}
  80. type="primary"
  81. size="small"
  82. onClick={this.toggleDisable}
  83. >
  84. {!this.state.disabled ? 'Disable' : 'Enable'}
  85. </Button>
  86. </p>
  87. </div>
  88. );
  89. }
  90. }
  91. stories.add('checkbox controlled disabled & checked', () => <CheckboxControl />);
  92. class GroupDemo extends React.Component {
  93. constructor() {
  94. super();
  95. this.state = {
  96. value: [],
  97. };
  98. this.onChange = this.onChange.bind(this);
  99. }
  100. onChange(value) {
  101. console.log(value);
  102. this.setState({
  103. value: value,
  104. });
  105. }
  106. render() {
  107. let { value } = this.state;
  108. return (
  109. <>
  110. 水平Group
  111. <Checkbox.Group direction="horizontal" onChange={v => console.log(v)}>
  112. <Checkbox value="dy">抖音</Checkbox>
  113. <Checkbox value="hotsoon">火山</Checkbox>
  114. <Checkbox value="toutiao">今日头条</Checkbox>
  115. <Checkbox value="xigua">西瓜视频</Checkbox>
  116. </Checkbox.Group>
  117. <br />
  118. <br />
  119. 垂直Group
  120. <Checkbox.Group onChange={v => console.log(v)}>
  121. <Checkbox value="dy">抖音</Checkbox>
  122. <Checkbox value="hotsoon">火山</Checkbox>
  123. <Checkbox value="toutiao">今日头条</Checkbox>
  124. <Checkbox value="xigua">西瓜视频</Checkbox>
  125. </Checkbox.Group>
  126. <br />
  127. <br />
  128. 默认Group
  129. <Checkbox.Group direction="horizontal" defaultValue={['xigua']} onChange={console.log}>
  130. <Checkbox value="dy">抖音</Checkbox>
  131. <Checkbox value="hotsoon">火山</Checkbox>
  132. <Checkbox value="toutiao">今日头条</Checkbox>
  133. <Checkbox value="xigua">西瓜视频</Checkbox>
  134. </Checkbox.Group>
  135. <br />
  136. <br />
  137. 受控Group
  138. <Checkbox.Group direction="horizontal" value={value} onChange={console.log}>
  139. <Checkbox value="dy">抖音</Checkbox>
  140. <Checkbox value="hotsoon">火山</Checkbox>
  141. <Checkbox value="toutiao">今日头条</Checkbox>
  142. <Checkbox value="xigua">西瓜视频</Checkbox>
  143. </Checkbox.Group>
  144. <br />
  145. <br />
  146. 受控Group+onChange
  147. <Checkbox.Group direction="horizontal" value={value} onChange={this.onChange}>
  148. <Checkbox value="dy">抖音</Checkbox>
  149. <Checkbox value="hotsoon">火山</Checkbox>
  150. <Checkbox value="toutiao">今日头条</Checkbox>
  151. <Checkbox value="xigua">西瓜视频</Checkbox>
  152. </Checkbox.Group>
  153. <br />
  154. <br />
  155. disabled
  156. <Checkbox.Group disabled>
  157. <Checkbox value="dy">抖音</Checkbox>
  158. <Checkbox value="hotsoon">火山</Checkbox>
  159. <Checkbox value="toutiao">今日头条</Checkbox>
  160. <Checkbox value="xigua">西瓜视频</Checkbox>
  161. </Checkbox.Group>
  162. </>
  163. );
  164. }
  165. }
  166. stories.add('checkbox group', () => <GroupDemo />);
  167. stories.add('checkbox group with options ', () => {
  168. function onChange(checkedValues) {
  169. console.log('checked = ', checkedValues);
  170. }
  171. const plainOptions = ['Apple', 'Pear', 'Orange'];
  172. const options = [
  173. {
  174. label: 'Apple',
  175. value: 'Apple',
  176. },
  177. {
  178. label: 'Pear',
  179. value: 'Pear',
  180. },
  181. {
  182. label: 'Orange',
  183. value: 'Orange',
  184. disabled: true,
  185. },
  186. ];
  187. const optionsWithDisabled = [
  188. {
  189. label: 'Apple',
  190. value: 'Apple',
  191. },
  192. {
  193. label: 'Pear',
  194. value: 'Pear',
  195. },
  196. {
  197. label: 'Orange',
  198. value: 'Orange',
  199. disabled: false,
  200. },
  201. ];
  202. return (
  203. <div>
  204. default
  205. <CheckboxGroup options={plainOptions} defaultValue={['Apple']} onChange={onChange} />
  206. <br />
  207. <br />
  208. 受控
  209. <CheckboxGroup options={plainOptions} value={['Apple']} onChange={onChange} />
  210. <br />
  211. 最后一个disabled
  212. <br />
  213. <CheckboxGroup options={options} defaultValue={['Pear']} onChange={onChange} />
  214. <br />
  215. 全体disabled, 优先父级disabled,次选子级disabled
  216. <br />
  217. <CheckboxGroup options={optionsWithDisabled} disabled defaultValue={['Apple']} onChange={onChange} />
  218. </div>
  219. );
  220. });
  221. stories.add('checkboxGroup-直接后代是其他类型Node', () => {
  222. return (
  223. <CheckboxGroup>
  224. <div className="test">
  225. <Checkbox value="Apple" extra="苹果">
  226. Apple
  227. </Checkbox>
  228. <Checkbox value="Pear" extra="梨">
  229. Pear
  230. </Checkbox>
  231. <Checkbox value="Orange" extra="橙子">
  232. Orange
  233. </Checkbox>
  234. </div>
  235. </CheckboxGroup>
  236. );
  237. });
  238. stories.add('checkbox 主文本+副文本', () => {
  239. let options = [
  240. {
  241. label: 'Apple',
  242. value: 'Apple',
  243. extra: '苹果',
  244. },
  245. {
  246. label: 'Pear',
  247. value: 'Pear',
  248. extra: '梨',
  249. },
  250. {
  251. label: 'Orange',
  252. value: 'Orange',
  253. disabled: true,
  254. extra: '橙子',
  255. },
  256. ];
  257. return (
  258. <div>
  259. checkbox
  260. <Checkbox
  261. onChange={e => console.log(e)}
  262. extra="我是副文本,这是辅助的文本,辅助文本会更长一些,甚至还可能换行"
  263. >
  264. 我是主文本
  265. </Checkbox>
  266. <Checkbox
  267. style={{
  268. width: 200,
  269. }}
  270. onChange={e => console.log(e)}
  271. extra="我是副文本,这是辅助的文本,辅助文本会更长一些,甚至还可能换行"
  272. >
  273. 我是主文本
  274. </Checkbox>
  275. <br />
  276. <br />
  277. checkboxGroup
  278. <CheckboxGroup>
  279. <Checkbox value="Apple" extra="苹果">
  280. Apple
  281. </Checkbox>
  282. <Checkbox value="Pear" extra="梨">
  283. Pear
  284. </Checkbox>
  285. <Checkbox value="Orange" extra="橙子">
  286. Orange
  287. </Checkbox>
  288. </CheckboxGroup>
  289. <br />
  290. <br />
  291. checkboxGroup with options
  292. <CheckboxGroup options={options}></CheckboxGroup>
  293. </div>
  294. );
  295. });
  296. stories.add('checkbox + grid', () => {
  297. return (
  298. <Checkbox.Group
  299. style={{
  300. width: '100%',
  301. }}
  302. onChange={v => console.log(v)}
  303. >
  304. <Row>
  305. <Col span={8}>
  306. <Checkbox value="A">
  307. 无限长的一串字The Storybook webapp UI can be customised with this addon. It can be used to
  308. change the header, show/hide various UI elements and to enable full-screen mode by default.
  309. </Checkbox>
  310. </Col>
  311. <Col span={8}>
  312. <Checkbox value="B">B</Checkbox>
  313. </Col>
  314. <Col span={8}>
  315. <Checkbox value="C">C</Checkbox>
  316. </Col>
  317. <Col span={8}>
  318. <Checkbox value="D">D</Checkbox>
  319. </Col>
  320. <Col span={8}>
  321. <Checkbox value="E">E</Checkbox>
  322. </Col>
  323. </Row>
  324. </Checkbox.Group>
  325. );
  326. });
  327. const plainOptions = ['Apple', 'Pear', 'Orange'];
  328. const defaultCheckedList = ['Apple', 'Orange'];
  329. class IndeterminateDemo extends React.Component {
  330. state = {
  331. checkedList: defaultCheckedList,
  332. indeterminate: true,
  333. checkAll: false,
  334. };
  335. onChange = checkedList => {
  336. this.setState({
  337. checkedList,
  338. indeterminate: !!checkedList.length && checkedList.length < plainOptions.length,
  339. checkAll: checkedList.length === plainOptions.length,
  340. });
  341. };
  342. onCheckAllChange = e => {
  343. this.setState({
  344. checkedList: e.target.checked ? plainOptions : [],
  345. indeterminate: false,
  346. checkAll: e.target.checked,
  347. });
  348. };
  349. render() {
  350. return (
  351. <div>
  352. <div
  353. style={{
  354. borderBottom: '1px solid #E9E9E9',
  355. }}
  356. >
  357. <Checkbox
  358. indeterminate={this.state.indeterminate}
  359. onChange={this.onCheckAllChange}
  360. checked={this.state.checkAll}
  361. >
  362. Check all
  363. </Checkbox>
  364. </div>
  365. <br />
  366. <CheckboxGroup options={plainOptions} value={this.state.checkedList} onChange={this.onChange} />
  367. </div>
  368. );
  369. }
  370. }
  371. stories.add('checkbox inderterminate联动', () => <IndeterminateDemo />);
  372. stories.add('checkbox render in div', () => (
  373. <>
  374. <div
  375. onClick={(...args) => {
  376. console.log('clicked checkbox outer: ', ...args);
  377. }}
  378. >
  379. <Checkbox
  380. onChange={(...args) => {
  381. console.log('clicked checkbox: ', ...args);
  382. }}
  383. />
  384. </div>
  385. </>
  386. ));
  387. stories.add(`checkbox in popover`, () => (
  388. <div>
  389. <Popover
  390. content={
  391. <div>
  392. <Checkbox>选项一</Checkbox>
  393. <Checkbox defaultChecked>选项二</Checkbox>
  394. <Checkbox>选项三</Checkbox>
  395. </div>
  396. }
  397. >
  398. <Button>click me</Button>
  399. </Popover>
  400. </div>
  401. ));
  402. const SwitchCheckedFromTrue2Undefined = () => {
  403. const [props, setProps] = useState();
  404. const [flag, setFlag] = useState(0);
  405. const change = () => {
  406. if (flag === 0) {
  407. setFlag(1);
  408. setProps({ checked: true });
  409. } else {
  410. setFlag(0);
  411. setProps({ checked: false });
  412. }
  413. };
  414. return <>
  415. <Checkbox {...props} >123</Checkbox>
  416. <Button onClick={() => change()}>switch</Button>
  417. </>
  418. };
  419. stories.add('checkbox switch checked: true => undefined', () => <SwitchCheckedFromTrue2Undefined />);
  420. const TransformSelect = props => {
  421. const { onChange, value, options = [], defaultValue = [], placeholder } = props;
  422. const [currentValue, setCurrentValue] = useState([]);
  423. const [inputValue, setInputValue] = useState(''); // 变化
  424. const onSelectChange = useCallback(() => {
  425. setCurrentValue(currentValue);
  426. onChange && onChange(currentValue);
  427. }, []); // 选择某一个
  428. const removeValue = useCallback(
  429. currentIndex => {
  430. currentValue.splice(currentIndex, 1);
  431. onSelectChange([...currentValue]);
  432. },
  433. [currentValue]
  434. ); // 选择所有
  435. const selectAllValue = useCallback(() => {
  436. const value = options.map(option => option.value);
  437. onSelectChange(value);
  438. }, [options]);
  439. const viewsOptions = useMemo(() => {
  440. if (inputValue) {
  441. const newOptions = options.filter(option => option.label.indexOf(inputValue) !== -1);
  442. return newOptions;
  443. }
  444. return options;
  445. }, [options, inputValue]);
  446. return (
  447. <div>
  448. <div>
  449. <div>
  450. <Input
  451. value={inputValue}
  452. prefix="search"
  453. clearable
  454. onChange={value => setInputValue(value)}
  455. placeholder={placeholder}
  456. />
  457. </div>
  458. <div>
  459. <span>{`共 ${options.length} 项`}</span>
  460. <Button type="tertiary" size="small" theme="borderless" onClick={() => selectAllValue()}>
  461. 全选
  462. </Button>
  463. </div>
  464. <div>
  465. <CheckboxGroup
  466. options={viewsOptions}
  467. value={currentValue}
  468. onChange={onSelectChange}
  469. direction="vertical"
  470. />
  471. </div>
  472. </div>
  473. <div>
  474. <div>
  475. <span>{`已选 ${currentValue.length} 项`}</span>
  476. <Button type="tertiary" size="small" theme="borderless" onClick={() => onSelectChange([])}>
  477. 清空
  478. </Button>
  479. </div>
  480. <div>
  481. {currentValue.length > 0 ? (
  482. currentValue.map((value, idx) => {
  483. // 不存在不需要展示
  484. const option = options.find(option => option.value === value);
  485. return (
  486. <div key={option.key ? option.key : idx}>
  487. <span>{option.label}</span>
  488. <span onClick={() => removeValue(idx)}>
  489. <IconClose size="small" />
  490. </span>
  491. </div>
  492. );
  493. })
  494. ) : (
  495. <div>暂无内容,可从左侧勾选</div>
  496. )}
  497. </div>
  498. </div>
  499. </div>
  500. );
  501. };
  502. stories.add(`bugDemo`, () => <TransformSelect />);
  503. stories.add(`checkboxGroup card style`, () => (
  504. <>
  505. <div>常见情况</div>
  506. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  507. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  508. 多选框标题
  509. </Checkbox>
  510. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  511. 多选框标题
  512. </Checkbox>
  513. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  514. 多选框标题
  515. </Checkbox>
  516. </CheckboxGroup>
  517. <br />
  518. <br />
  519. <div>radio disabled</div>
  520. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  521. <Checkbox value='1' disabled extra='Semi Design' style={{ width: 280 }}>
  522. 多选框标题
  523. </Checkbox>
  524. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  525. 多选框标题
  526. </Checkbox>
  527. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  528. 多选框标题
  529. </Checkbox>
  530. </CheckboxGroup>
  531. <br />
  532. <br />
  533. <div>checkboxGroup disabled</div>
  534. <CheckboxGroup type='card' direction='horizontal' disabled defaultValue={['1']}>
  535. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  536. 多选框标题
  537. </Checkbox>
  538. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  539. 多选框标题
  540. </Checkbox>
  541. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  542. 多选框标题
  543. </Checkbox>
  544. </CheckboxGroup>
  545. <br />
  546. <br />
  547. <div>文字很长,并且没有设置宽度,因此换行显示</div>
  548. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  549. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  550. 多选框标题
  551. </Checkbox>
  552. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  553. 多选框标题
  554. </Checkbox>
  555. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  556. 多选框标题
  557. </Checkbox>
  558. </CheckboxGroup>
  559. <br />
  560. <br />
  561. <div>设置了width=180</div>
  562. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  563. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  564. 多选框标题
  565. </Checkbox>
  566. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  567. 多选框标题
  568. </Checkbox>
  569. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  570. 多选框标题
  571. </Checkbox>
  572. </CheckboxGroup>
  573. <br />
  574. <br />
  575. <div>没有extra,width=180</div>
  576. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  577. <Checkbox value='1' style={{ width: 180 }}>
  578. 多选框标题
  579. </Checkbox>
  580. <Checkbox value='2' style={{ width: 180 }}>
  581. 多选框标题
  582. </Checkbox>
  583. <Checkbox value='3' style={{ width: 180 }}>
  584. 多选框标题
  585. </Checkbox>
  586. </CheckboxGroup>
  587. <br />
  588. <br />
  589. <div>没有标题,width=380</div>
  590. <CheckboxGroup type='card' direction='horizontal' defaultValue={['1']}>
  591. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  592. </Checkbox>
  593. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  594. </Checkbox>
  595. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  596. </Checkbox>
  597. </CheckboxGroup>
  598. <br />
  599. <br />
  600. <hr />
  601. <div>下面是垂直的情况:</div>
  602. <div>常见情况</div>
  603. <CheckboxGroup direction='vertical' type='card' defaultValue={['1']}>
  604. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  605. 多选框标题
  606. </Checkbox>
  607. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  608. 多选框标题
  609. </Checkbox>
  610. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  611. 多选框标题
  612. </Checkbox>
  613. </CheckboxGroup>
  614. <br />
  615. <br />
  616. <div>没有设置宽度</div>
  617. <CheckboxGroup direction='vertical' type='card' defaultValue={['1']}>
  618. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  619. 多选框标题
  620. </Checkbox>
  621. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  622. 多选框标题
  623. </Checkbox>
  624. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  625. 多选框标题
  626. </Checkbox>
  627. </CheckboxGroup>
  628. <br />
  629. <br />
  630. <div>设置了width=380</div>
  631. <CheckboxGroup direction='vertical' type='card' defaultValue={['1']}>
  632. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  633. 多选框标题
  634. </Checkbox>
  635. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  636. 多选框标题
  637. </Checkbox>
  638. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  639. 多选框标题
  640. </Checkbox>
  641. </CheckboxGroup>
  642. </>
  643. ));
  644. stories.add(`checkboxGroup pureCard style`, () => (
  645. <>
  646. <div>常见情况</div>
  647. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  648. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  649. 多选框标题
  650. </Checkbox>
  651. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  652. 多选框标题
  653. </Checkbox>
  654. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  655. 多选框标题
  656. </Checkbox>
  657. </CheckboxGroup>
  658. <br />
  659. <br />
  660. <div>radio disabled</div>
  661. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  662. <Checkbox value='1' disabled extra='Semi Design' style={{ width: 280 }}>
  663. 多选框标题
  664. </Checkbox>
  665. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  666. 多选框标题
  667. </Checkbox>
  668. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  669. 多选框标题
  670. </Checkbox>
  671. </CheckboxGroup>
  672. <br />
  673. <br />
  674. <div>checkboxGroup disabled</div>
  675. <CheckboxGroup type='pureCard' disabled defaultValue={['1']}>
  676. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  677. 多选框标题
  678. </Checkbox>
  679. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  680. 多选框标题
  681. </Checkbox>
  682. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  683. 多选框标题
  684. </Checkbox>
  685. </CheckboxGroup>
  686. <br />
  687. <br />
  688. <div>文字很长,并且没有设置宽度,因此换行显示</div>
  689. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  690. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  691. 多选框标题
  692. </Checkbox>
  693. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  694. 多选框标题
  695. </Checkbox>
  696. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  697. 多选框标题
  698. </Checkbox>
  699. </CheckboxGroup>
  700. <br />
  701. <br />
  702. <div>设置了width=180</div>
  703. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  704. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  705. 多选框标题
  706. </Checkbox>
  707. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  708. 多选框标题
  709. </Checkbox>
  710. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 180 }}>
  711. 多选框标题
  712. </Checkbox>
  713. </CheckboxGroup>
  714. <br />
  715. <br />
  716. <div>没有extra,width=180</div>
  717. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  718. <Checkbox value='1' style={{ width: 180 }}>
  719. 多选框标题
  720. </Checkbox>
  721. <Checkbox value='2' style={{ width: 180 }}>
  722. 多选框标题
  723. </Checkbox>
  724. <Checkbox value='3' style={{ width: 180 }}>
  725. 多选框标题
  726. </Checkbox>
  727. </CheckboxGroup>
  728. <br />
  729. <br />
  730. <div>没有标题,width=380</div>
  731. <CheckboxGroup type='pureCard' defaultValue={['1']}>
  732. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  733. </Checkbox>
  734. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  735. </Checkbox>
  736. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  737. </Checkbox>
  738. </CheckboxGroup>
  739. <br />
  740. <br />
  741. <hr />
  742. <div>下面是垂直的情况:</div>
  743. <div>常见情况</div>
  744. <CheckboxGroup direction='vertical' type='pureCard' defaultValue={['1']}>
  745. <Checkbox value='1' extra='Semi Design' style={{ width: 280 }}>
  746. 多选框标题
  747. </Checkbox>
  748. <Checkbox value='2' extra='Semi Design' style={{ width: 280 }}>
  749. 多选框标题
  750. </Checkbox>
  751. <Checkbox value='3' extra='Semi Design' style={{ width: 280 }}>
  752. 多选框标题
  753. </Checkbox>
  754. </CheckboxGroup>
  755. <br />
  756. <br />
  757. <div>没有设置宽度</div>
  758. <CheckboxGroup direction='vertical' type='pureCard' defaultValue={['1']}>
  759. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  760. 多选框标题
  761. </Checkbox>
  762. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  763. 多选框标题
  764. </Checkbox>
  765. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
  766. 多选框标题
  767. </Checkbox>
  768. </CheckboxGroup>
  769. <br />
  770. <br />
  771. <div>设置了width=380</div>
  772. <CheckboxGroup direction='vertical' type='pureCard' defaultValue={['1']}>
  773. <Checkbox value='1' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  774. 多选框标题
  775. </Checkbox>
  776. <Checkbox value='2' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  777. 多选框标题
  778. </Checkbox>
  779. <Checkbox value='3' extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 380 }}>
  780. 多选框标题
  781. </Checkbox>
  782. </CheckboxGroup>
  783. </>
  784. ));