checkbox.stories.js 27 KB

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