radio.stories.jsx 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. import React, { useState } from 'react';
  2. import Button from '../../button';
  3. import Space from '../../space';
  4. import { Radio, RadioGroup, Form, Tooltip } from '../../index';
  5. import { Row, Col } from '../../grid';
  6. import './radio.scss';
  7. export default {
  8. title: 'Radio'
  9. }
  10. export const _Radio = () => {
  11. let cssStyle = {
  12. width: '200px',
  13. };
  14. return (
  15. <div style={cssStyle}>
  16. <Radio value="1">
  17. Experts say the abandonment of book reading may have some unappealing consequences for
  18. cognition. “People are clearly reading fewer books now than they used to, and that has to
  19. have a cost because we know book reading is very good cognitive exercise,” says Ken Pugh,
  20. director of research at the Yale-affiliated Haskins Laboratories, which examines the
  21. importance of spoken and written language.
  22. </Radio>
  23. </div>
  24. );
  25. };
  26. _Radio.story = {
  27. name: 'radio',
  28. };
  29. export const RadioWithExtra = () => {
  30. return (
  31. <>
  32. <Radio value="1" extra="这是辅助的文本,同厂辅助文本会更长一些,甚至还可能换行" name="demo-radio-1">
  33. 示例文本
  34. </Radio>
  35. <Radio
  36. style={{ width: 200 }}
  37. value="1"
  38. extra="这是辅助的文本,同厂辅助文本会更长一些,甚至还可能换行"
  39. name="demo-radio-2"
  40. >
  41. 示例文本
  42. </Radio>
  43. </>
  44. );
  45. };
  46. RadioWithExtra.story = {
  47. name: 'radio with extra',
  48. };
  49. export const RadioChecked = () => {
  50. return (
  51. <div>
  52. {'受控的checked = true'}
  53. <Radio value="1" checked>
  54. 111
  55. </Radio>
  56. <br />
  57. {'受控的checked = false'}
  58. <Radio value="1" checked={false}>
  59. 111
  60. </Radio>
  61. <br />
  62. {'不受控的defaultChecked = true'}
  63. <Radio value="1" defaultChecked={true}>
  64. 111
  65. </Radio>
  66. <br />
  67. {'不受控的defaultChecked = false'}
  68. <Radio value="1" defaultChecked={false}>
  69. 111
  70. </Radio>
  71. </div>
  72. );
  73. };
  74. RadioChecked.story = {
  75. name: 'radio checked',
  76. };
  77. export const RadioDisabled = () => {
  78. return (
  79. <div>
  80. <Radio value="1" checked disabled>
  81. 111
  82. </Radio>
  83. <Radio value="1" disabled>
  84. 111
  85. </Radio>
  86. </div>
  87. );
  88. };
  89. RadioDisabled.story = {
  90. name: 'radio disabled',
  91. };
  92. class RadioControl extends React.Component {
  93. state = {
  94. checked: true,
  95. disabled: false,
  96. };
  97. toggleChecked = () => {
  98. this.setState({ checked: !this.state.checked });
  99. };
  100. toggleDisable = () => {
  101. this.setState({ disabled: !this.state.disabled });
  102. };
  103. onChange = e => {
  104. console.log('checked = ', e.target.checked);
  105. this.setState({
  106. checked: e.target.checked,
  107. });
  108. };
  109. render() {
  110. const label = `${this.state.checked ? 'Checked' : 'Unchecked'}-${
  111. this.state.disabled ? 'Disabled' : 'Enabled'
  112. }`;
  113. return (
  114. <div>
  115. <p style={{ marginBottom: '20px' }}>
  116. <Radio
  117. checked={this.state.checked}
  118. disabled={this.state.disabled}
  119. onChange={this.onChange}
  120. >
  121. {label}
  122. </Radio>
  123. </p>
  124. <p>
  125. <Button type="primary" size="small" onClick={this.toggleChecked}>
  126. {!this.state.checked ? 'Check' : 'Uncheck'}
  127. </Button>
  128. <Button
  129. style={{ marginLeft: '10px' }}
  130. type="primary"
  131. size="small"
  132. onClick={this.toggleDisable}
  133. >
  134. {!this.state.disabled ? 'Disable' : 'Enable'}
  135. </Button>
  136. </p>
  137. </div>
  138. );
  139. }
  140. }
  141. export const RadioControlledDisabledChecked = () => <RadioControl />;
  142. RadioControlledDisabledChecked.story = {
  143. name: 'Radio controlled disabled & checked',
  144. };
  145. const RadioGroup1 = () => {
  146. const [state, setChecked] = useState('1');
  147. console.log(state);
  148. return (
  149. <div>
  150. <Radio.Group
  151. value={state}
  152. onChange={evt => {
  153. setChecked(evt.target.value);
  154. }}
  155. >
  156. <Radio value="1" grouped>
  157. 1
  158. </Radio>
  159. <Radio value="2" grouped>
  160. 2
  161. </Radio>
  162. </Radio.Group>
  163. 点击触发state变化,state变化触发展示变化
  164. <Radio.Group
  165. value={state}
  166. onChange={evt => {
  167. setChecked(evt.target.value);
  168. }}
  169. >
  170. <Radio value="2" grouped>
  171. 2
  172. </Radio>
  173. <Radio value="1" grouped>
  174. 1
  175. </Radio>
  176. </Radio.Group>
  177. </div>
  178. );
  179. };
  180. class RadioWithControlled extends React.Component {
  181. constructor(props) {
  182. super(props);
  183. this.state = {
  184. value: false,
  185. };
  186. }
  187. onChange(value) {
  188. this.setState({
  189. value: value.target.value,
  190. });
  191. }
  192. render() {
  193. return (
  194. <RadioGroup name="apple" value={this.state.value} onChange={this.onChange.bind(this)}>
  195. <Radio value={true}>111</Radio>
  196. <Radio value={false}>222</Radio>
  197. </RadioGroup>
  198. );
  199. }
  200. }
  201. export const _RadioGroup = () => {
  202. let onChange = data => {
  203. console.log('change', data);
  204. };
  205. return (
  206. <div>
  207. value=1
  208. <RadioGroup name="pie1" value="1" onChange={onChange}>
  209. <Radio value="1">111</Radio>
  210. <Radio value="2">222</Radio>
  211. </RadioGroup>
  212. <br />
  213. defaultValue=1
  214. <RadioGroup name="pie2" defaultValue="1" onChange={onChange}>
  215. <Radio value="1">111</Radio>
  216. <Radio value="2">222</Radio>
  217. </RadioGroup>
  218. <br />
  219. value+onchange
  220. <RadioWithControlled />
  221. <br />
  222. 联动
  223. <RadioGroup1 />
  224. </div>
  225. );
  226. };
  227. _RadioGroup.story = {
  228. name: 'radio group',
  229. };
  230. export const RadioWithVertical = () => {
  231. return (
  232. <Radio.Group direction="vertical">
  233. <Radio value="A">
  234. 无限长的一串字The Storybook webapp UI can be customised with this addon. It can be used to
  235. change the header, show/hide various UI elements and to enable full-screen mode by default.
  236. </Radio>
  237. <Radio value="C">
  238. C
  239. </Radio>
  240. <Radio value="D">
  241. D
  242. </Radio>
  243. <Radio value="E">
  244. E
  245. </Radio>
  246. </Radio.Group>
  247. );
  248. };
  249. RadioWithVertical.story = {
  250. name: 'radio with vertical',
  251. };
  252. export const RadioGroupWithOptions = () => {
  253. const plainOptions = ['Apple', 'Pear', 'Orange'];
  254. const options = [
  255. { label: 'Apple', value: 'Apple' },
  256. { label: 'Pear', value: 'Pear' },
  257. { label: 'Orange', value: 'Orange', disabled: true },
  258. ];
  259. const optionsWithDisabled = [
  260. { label: 'Apple', value: 'Apple' },
  261. { label: 'Pear', value: 'Pear' },
  262. { label: 'Orange', value: 'Orange', disabled: false },
  263. ];
  264. function onChange(event) {
  265. console.log(event);
  266. }
  267. return (
  268. <div>
  269. <RadioGroup name="apple" options={plainOptions} onChange={onChange} />
  270. <RadioGroup name="apple" options={options} onChange={onChange} />
  271. <RadioGroup name="apple" disabled options={optionsWithDisabled} onChange={onChange} />
  272. </div>
  273. );
  274. };
  275. RadioGroupWithOptions.story = {
  276. name: 'radio group with options',
  277. };
  278. const RadioWithAdvancedMode = () => {
  279. const [state, setChecked] = useState([true]);
  280. return (
  281. <div>
  282. <Radio
  283. checked={state}
  284. mode="advanced"
  285. onChange={e => {
  286. console.log(e);
  287. setChecked(e.target.checked);
  288. e.stopPropagation();
  289. e.preventDefault();
  290. }}
  291. >
  292. 111
  293. </Radio>
  294. </div>
  295. );
  296. };
  297. export const _RadioWithAdvancedMode = () => <RadioWithAdvancedMode />;
  298. _RadioWithAdvancedMode.story = {
  299. name: 'radio with advanced mode',
  300. };
  301. export const RadioGroupWithAdvancedMode = () => {
  302. function onChange(evt) {
  303. console.log(evt);
  304. }
  305. return (
  306. <>
  307. <RadioGroup mode="advanced" onChange={onChange}>
  308. <Radio value="1">111</Radio>
  309. <Radio value="2">222</Radio>
  310. <Radio value="3">333</Radio>
  311. </RadioGroup>
  312. <br />
  313. <br />
  314. <RadioGroup mode="advanced" onChange={onChange} direction="horizontal">
  315. <div className="block-radio-wrapper">
  316. <Radio value="1">111</Radio>
  317. </div>
  318. <div className="block-radio-wrapper">
  319. <Radio value="2">222</Radio>
  320. </div>
  321. <div className="block-radio-wrapper">
  322. <Radio value="3">333</Radio>
  323. </div>
  324. </RadioGroup>
  325. </>
  326. );
  327. };
  328. RadioGroupWithAdvancedMode.story = {
  329. name: 'radio group with advanced mode',
  330. };
  331. export const RadioGrid = () => {
  332. return (
  333. <Radio.Group style={{ width: '100%' }}>
  334. <Row>
  335. <Col span={8}>
  336. <Radio value="A">
  337. 无限长的一串字The Storybook webapp UI can be customised with this addon. It can be used
  338. to change the header, show/hide various UI elements and to enable full-screen mode by
  339. default.
  340. </Radio>
  341. </Col>
  342. <Col span={8}>
  343. <Radio value="B">B</Radio>
  344. </Col>
  345. <Col span={8}>
  346. <Radio value="C">C</Radio>
  347. </Col>
  348. <Col span={8}>
  349. <Radio value="D">D</Radio>
  350. </Col>
  351. <Col span={8}>
  352. <Radio value="E">E</Radio>
  353. </Col>
  354. </Row>
  355. </Radio.Group>
  356. );
  357. };
  358. RadioGrid.story = {
  359. name: 'radio + grid',
  360. };
  361. export const DynamicRadioGroup = () => {
  362. const Demo = () => {
  363. const [value, setValue] = useState(1);
  364. const onChange = e => {
  365. console.log('radio checked', e.target.value);
  366. setValue(e.target.value);
  367. };
  368. return (
  369. <RadioGroup onChange={onChange} value={value}>
  370. {value !== 4 ? <Radio value={1}>A</Radio> : null}
  371. <Radio value={2}>B</Radio>
  372. <Radio value={3}>C</Radio>
  373. <Radio value={4}>D</Radio>
  374. </RadioGroup>
  375. );
  376. };
  377. return <Demo />;
  378. };
  379. DynamicRadioGroup.style = {
  380. name: 'dynamic radioGroup'
  381. };
  382. export const RadioGroupButtonStyle = () => {
  383. const Demo = () => {
  384. const [value1, setValue1] = useState(1);
  385. const [value2, setValue2] = useState(2);
  386. const [value3, setValue3] = useState(3);
  387. const onChange1 = e => {
  388. setValue1(e.target.value);
  389. };
  390. const onChange2 = e => {
  391. setValue2(e.target.value);
  392. };
  393. const onChange3 = e => {
  394. setValue3(e.target.value);
  395. };
  396. return (
  397. <Space vertical spacing="loose" align="start">
  398. <RadioGroup type="button" buttonSize="small" onChange={onChange1} value={value1} name="demo-radio-button-1">
  399. <Radio value={1}>semi</Radio>
  400. <Radio value={2}>pipixia</Radio>
  401. <Radio value={3}>hotsoon</Radio>
  402. <Radio value={4}>toutiao</Radio>
  403. </RadioGroup>
  404. <RadioGroup type="button" buttonSize="middle" onChange={onChange2} value={value2} name="demo-radio-button-2">
  405. <Radio value={1}>semi</Radio>
  406. <Radio value={2}>pipixia</Radio>
  407. <Radio value={3}>hotsoon</Radio>
  408. <Radio value={4}>toutiao</Radio>
  409. </RadioGroup>
  410. <RadioGroup type="button" buttonSize="large" onChange={onChange3} value={value3} name="demo-radio-button-3">
  411. <Radio value={1}>semi</Radio>
  412. <Radio value={2}>pipixia</Radio>
  413. <Radio value={3}>hotsoon</Radio>
  414. <Radio value={4}>toutiao</Radio>
  415. </RadioGroup>
  416. </Space>
  417. );
  418. };
  419. return <Demo />;
  420. };
  421. RadioGroupButtonStyle.story = {
  422. name: 'radioGroup button style'
  423. };
  424. export const RadioGroupCardStyle = () => (
  425. <>
  426. <div>常见情况</div>
  427. <RadioGroup type="card" defaultValue={1}>
  428. <Radio value={1} extra="Semi Design" style={{ width: 280 }}>
  429. 多选框标题
  430. </Radio>
  431. <Radio value={2} extra="Semi Design" style={{ width: 280 }}>
  432. 多选框标题
  433. </Radio>
  434. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  435. 多选框标题
  436. </Radio>
  437. </RadioGroup>
  438. <br />
  439. <br />
  440. <div>radio disabled</div>
  441. <RadioGroup type="card" defaultValue={1}>
  442. <Radio value={1} disabled extra="disabled+checked" style={{ width: 280 }}>
  443. 多选框标题
  444. </Radio>
  445. <Radio value={2} disabled extra="disabled+unchecked" style={{ width: 280 }}>
  446. 多选框标题
  447. </Radio>
  448. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  449. 多选框标题
  450. </Radio>
  451. </RadioGroup>
  452. <br />
  453. <br />
  454. <div>radioGroup disabled</div>
  455. <RadioGroup type="card" disabled defaultValue={1}>
  456. <Radio value={1} extra="disabled+checked" style={{ width: 280 }}>
  457. 多选框标题
  458. </Radio>
  459. <Radio value={2} extra="disabled+unchecked" style={{ width: 280 }}>
  460. 多选框标题
  461. </Radio>
  462. <Radio value={3} extra="disabled+unchecked" style={{ width: 280 }}>
  463. 多选框标题
  464. </Radio>
  465. </RadioGroup>
  466. <br />
  467. <br />
  468. <div>文字很长,并且没有设置宽度,因此换行显示</div>
  469. <RadioGroup type="card" defaultValue={1}>
  470. <Radio
  471. value={1}
  472. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  473. >
  474. 多选框标题
  475. </Radio>
  476. <Radio
  477. value={2}
  478. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  479. >
  480. 多选框标题
  481. </Radio>
  482. <Radio
  483. value={3}
  484. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  485. >
  486. 多选框标题
  487. </Radio>
  488. </RadioGroup>
  489. <br />
  490. <br />
  491. <div>设置了width=180</div>
  492. <RadioGroup type="card" defaultValue={1}>
  493. <Radio
  494. value={1}
  495. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  496. style={{ width: 180 }}
  497. >
  498. 多选框标题
  499. </Radio>
  500. <Radio
  501. value={2}
  502. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  503. style={{ width: 180 }}
  504. >
  505. 多选框标题
  506. </Radio>
  507. <Radio
  508. value={3}
  509. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  510. style={{ width: 180 }}
  511. >
  512. 多选框标题
  513. </Radio>
  514. </RadioGroup>
  515. <br />
  516. <br />
  517. <div>没有extra,width=180</div>
  518. <RadioGroup type="card" defaultValue={1}>
  519. <Radio value={1} style={{ width: 180 }}>
  520. 多选框标题
  521. </Radio>
  522. <Radio value={2} style={{ width: 180 }}>
  523. 多选框标题
  524. </Radio>
  525. <Radio value={3} style={{ width: 180 }}>
  526. 多选框标题
  527. </Radio>
  528. </RadioGroup>
  529. <br />
  530. <br />
  531. <div>没有标题,width=380</div>
  532. <RadioGroup type="card" defaultValue={1}>
  533. <Radio
  534. value={1}
  535. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  536. style={{ width: 380 }}
  537. ></Radio>
  538. <Radio
  539. value={2}
  540. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  541. style={{ width: 380 }}
  542. ></Radio>
  543. <Radio
  544. value={3}
  545. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  546. style={{ width: 380 }}
  547. ></Radio>
  548. </RadioGroup>
  549. <br />
  550. <br />
  551. <hr />
  552. <div>下面是垂直的情况:</div>
  553. <div>常见情况</div>
  554. <RadioGroup direction="vertical" type="card" defaultValue={1}>
  555. <Radio value={1} extra="Semi Design" style={{ width: 280 }}>
  556. 多选框标题
  557. </Radio>
  558. <Radio value={2} extra="Semi Design" style={{ width: 280 }}>
  559. 多选框标题
  560. </Radio>
  561. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  562. 多选框标题
  563. </Radio>
  564. </RadioGroup>
  565. <br />
  566. <br />
  567. <div>没有设置宽度</div>
  568. <RadioGroup direction="vertical" type="card" defaultValue={1}>
  569. <Radio
  570. value={1}
  571. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  572. >
  573. 多选框标题
  574. </Radio>
  575. <Radio
  576. value={2}
  577. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  578. >
  579. 多选框标题
  580. </Radio>
  581. <Radio
  582. value={3}
  583. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  584. >
  585. 多选框标题
  586. </Radio>
  587. </RadioGroup>
  588. <br />
  589. <br />
  590. <div>设置了width=380</div>
  591. <RadioGroup direction="vertical" type="card" defaultValue={1}>
  592. <Radio
  593. value={1}
  594. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  595. style={{ width: 380 }}
  596. >
  597. 多选框标题
  598. </Radio>
  599. <Radio
  600. value={2}
  601. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  602. style={{ width: 380 }}
  603. >
  604. 多选框标题
  605. </Radio>
  606. <Radio
  607. value={3}
  608. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  609. style={{ width: 380 }}
  610. >
  611. 多选框标题
  612. </Radio>
  613. </RadioGroup>
  614. </>
  615. );
  616. RadioGroupCardStyle.story = {
  617. name: 'radioGroup card style'
  618. }
  619. export const RadioGroupPureCardStyle = () => (
  620. <>
  621. <div>常见情况</div>
  622. <RadioGroup type="pureCard" defaultValue={1}>
  623. <Radio value={1} extra="Semi Design" style={{ width: 280 }}>
  624. 多选框标题
  625. </Radio>
  626. <Radio value={2} extra="Semi Design" style={{ width: 280 }}>
  627. 多选框标题
  628. </Radio>
  629. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  630. 多选框标题
  631. </Radio>
  632. </RadioGroup>
  633. <br />
  634. <br />
  635. <div>radio disabled</div>
  636. <RadioGroup type="pureCard" defaultValue={1}>
  637. <Radio value={1} disabled extra="disabled+checked" style={{ width: 280 }}>
  638. 多选框标题
  639. </Radio>
  640. <Radio value={2} disabled extra="disabled+unchecked" style={{ width: 280 }}>
  641. 多选框标题
  642. </Radio>
  643. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  644. 多选框标题
  645. </Radio>
  646. </RadioGroup>
  647. <br />
  648. <br />
  649. <div>radioGroup disabled</div>
  650. <RadioGroup type="pureCard" disabled defaultValue={1}>
  651. <Radio value={1} extra="disabled+checked" style={{ width: 280 }}>
  652. 多选框标题
  653. </Radio>
  654. <Radio value={2} extra="disabled+unchecked" style={{ width: 280 }}>
  655. 多选框标题
  656. </Radio>
  657. <Radio value={3} extra="disabled+unchecked" style={{ width: 280 }}>
  658. 多选框标题
  659. </Radio>
  660. </RadioGroup>
  661. <br />
  662. <br />
  663. <div>文字很长,并且没有设置宽度,因此换行显示</div>
  664. <RadioGroup type="pureCard" defaultValue={1}>
  665. <Radio
  666. value={1}
  667. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  668. >
  669. 多选框标题
  670. </Radio>
  671. <Radio
  672. value={2}
  673. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  674. >
  675. 多选框标题
  676. </Radio>
  677. <Radio
  678. value={3}
  679. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  680. >
  681. 多选框标题
  682. </Radio>
  683. </RadioGroup>
  684. <br />
  685. <br />
  686. <div>设置了width=180</div>
  687. <RadioGroup type="pureCard" defaultValue={1}>
  688. <Radio
  689. value={1}
  690. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  691. style={{ width: 180 }}
  692. >
  693. 多选框标题
  694. </Radio>
  695. <Radio
  696. value={2}
  697. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  698. style={{ width: 180 }}
  699. >
  700. 多选框标题
  701. </Radio>
  702. <Radio
  703. value={3}
  704. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  705. style={{ width: 180 }}
  706. >
  707. 多选框标题
  708. </Radio>
  709. </RadioGroup>
  710. <br />
  711. <br />
  712. <div>没有extra,width=180</div>
  713. <RadioGroup type="pureCard" defaultValue={1}>
  714. <Radio value={1} style={{ width: 180 }}>
  715. 多选框标题
  716. </Radio>
  717. <Radio value={2} style={{ width: 180 }}>
  718. 多选框标题
  719. </Radio>
  720. <Radio value={3} style={{ width: 180 }}>
  721. 多选框标题
  722. </Radio>
  723. </RadioGroup>
  724. <br />
  725. <br />
  726. <div>没有标题,width=380</div>
  727. <RadioGroup type="pureCard" defaultValue={1}>
  728. <Radio
  729. value={1}
  730. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  731. style={{ width: 380 }}
  732. ></Radio>
  733. <Radio
  734. value={2}
  735. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  736. style={{ width: 380 }}
  737. ></Radio>
  738. <Radio
  739. value={3}
  740. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  741. style={{ width: 380 }}
  742. ></Radio>
  743. </RadioGroup>
  744. <br />
  745. <br />
  746. <hr />
  747. <div>下面是垂直的情况:</div>
  748. <div>常见情况</div>
  749. <RadioGroup direction="vertical" type="pureCard" defaultValue={1}>
  750. <Radio value={1} extra="Semi Design" style={{ width: 280 }}>
  751. 多选框标题
  752. </Radio>
  753. <Radio value={2} extra="Semi Design" style={{ width: 280 }}>
  754. 多选框标题
  755. </Radio>
  756. <Radio value={3} extra="Semi Design" style={{ width: 280 }}>
  757. 多选框标题
  758. </Radio>
  759. </RadioGroup>
  760. <br />
  761. <br />
  762. <div>没有设置宽度</div>
  763. <RadioGroup direction="vertical" type="pureCard" defaultValue={1}>
  764. <Radio
  765. value={1}
  766. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  767. >
  768. 多选框标题
  769. </Radio>
  770. <Radio
  771. value={2}
  772. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  773. >
  774. 多选框标题
  775. </Radio>
  776. <Radio
  777. value={3}
  778. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  779. >
  780. 多选框标题
  781. </Radio>
  782. </RadioGroup>
  783. <br />
  784. <br />
  785. <div>设置了width=380</div>
  786. <RadioGroup direction="vertical" type="pureCard" defaultValue={1}>
  787. <Radio
  788. value={1}
  789. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  790. style={{ width: 380 }}
  791. >
  792. 多选框标题
  793. </Radio>
  794. <Radio
  795. value={2}
  796. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  797. style={{ width: 380 }}
  798. >
  799. 多选框标题
  800. </Radio>
  801. <Radio
  802. value={3}
  803. extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
  804. style={{ width: 380 }}
  805. >
  806. 多选框标题
  807. </Radio>
  808. </RadioGroup>
  809. </>
  810. );
  811. RadioGroupPureCardStyle.story = {
  812. name: 'radioGroup pureCard style'
  813. }
  814. export const FixWithFieldLossRef = () => {
  815. return (
  816. <Form>
  817. <Tooltip visible trigger="custom" content={'hi bytedance'}>
  818. <Form.Radio>Semi</Form.Radio>
  819. </Tooltip>
  820. </Form>
  821. );
  822. }
  823. FixWithFieldLossRef.storyName = '修复 Form Field 丢失 ref 问题 #384';
  824. export const SwitchValueToNaN = () => {
  825. const [val, setVal] = useState(1);
  826. return (
  827. <>
  828. <RadioGroup direction="vertical" aria-label="单选组合示例" value={val}>
  829. <Radio value={1}>A</Radio>
  830. <Radio value={2}>B</Radio>
  831. <Radio value={3}>C</Radio>
  832. <Radio value={4}>D</Radio>
  833. </RadioGroup>
  834. <Space>
  835. <Button onClick={() => setVal(NaN)}>NaN</Button>
  836. <Button onClick={() => setVal(2)}>2</Button>
  837. </Space>
  838. </>
  839. );
  840. }
  841. SwitchValueToNaN.storyName = 'SwitchValueToNaN';