1
0

switch.stories.jsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. import React, { useState } from 'react';
  2. import { Button } from '@douyinfe/semi-ui/';
  3. import { Switch } from '../../index';
  4. export default {
  5. title: 'Switch'
  6. }
  7. export const _Switch = () => (
  8. <div>
  9. <Switch onChange={(v, e) => console.log(v)} aria-label='power-switch'></Switch>
  10. <Switch defaultChecked={true} onChange={(v, e) => console.log(v)} aria-label='mode-switch'></Switch>
  11. </div>
  12. );
  13. _Switch.story = {
  14. name: 'switch',
  15. };
  16. export const SwitchSize = () => (
  17. <div>
  18. <Switch onChange={(v, e) => console.log(v)} aria-label='power-switch'></Switch>
  19. <Switch onChange={(v, e) => console.log(v)} size="small" aria-label='power-switch'></Switch>
  20. <Switch onChange={(v, e) => console.log(v)} size="large" aria-label='power-switch'></Switch>
  21. </div>
  22. );
  23. SwitchSize.story = {
  24. name: 'switch size',
  25. };
  26. export const SwitchCheckedTextUncheckedText = () => (
  27. <div>
  28. <Switch defaultChecked checkedText="开" uncheckedText="关" aria-label='power-switch'/>
  29. <Switch checkedText={'|'} uncheckedText="〇" aria-label='power-switch'/>
  30. <br />
  31. <br />
  32. <Switch checkedText="开" uncheckedText="关" aria-label='power-switch'/>
  33. <Switch defaultChecked checkedText="|" uncheckedText="〇" aria-label='power-switch'/>
  34. <br />
  35. <br />
  36. <Switch checkedText="开" uncheckedText="关" size="large" aria-label='power-switch'/>
  37. <Switch checkedText="|" uncheckedText="〇" size="large" aria-label='power-switch'/>
  38. <br />
  39. <br />
  40. <Switch defaultChecked checkedText="开" uncheckedText="关" size="large" aria-label='power-switch'/>
  41. <Switch defaultChecked checkedText="|" uncheckedText="〇" size="large" aria-label='power-switch'/>
  42. </div>
  43. );
  44. SwitchCheckedTextUncheckedText.story = {
  45. name: 'switch checkedText & uncheckedText',
  46. };
  47. export const SwitchDisabled = () => (
  48. <>
  49. <Switch disabled aria-label='power-switch'>disabled</Switch>
  50. <Switch disabled checked={true} onChange={(v, e) => console.log(v)} aria-label='power-switch'></Switch>
  51. </>
  52. );
  53. SwitchDisabled.story = {
  54. name: 'switch disabled',
  55. };
  56. const ControlledSwitch = () => {
  57. const [checked, onChange] = useState(true);
  58. return <Switch checked={checked} onChange={(v, e) => onChange(v)} aria-label='power-switch'/>;
  59. };
  60. export const SwitchCheckedOnChange = () => <ControlledSwitch />;
  61. SwitchCheckedOnChange.story = {
  62. name: 'switch checked + onChange',
  63. };
  64. const UnControlledSwitch = () => {
  65. const onChange = checked => {
  66. console.log(checked);
  67. };
  68. return (
  69. <>
  70. {/* <Switch onChange={onChange} defaultChecked={false}/> */}
  71. <Switch onChange={onChange} defaultChecked={true} aria-label='power-switch'/>
  72. </>
  73. );
  74. };
  75. export const SwitchDefaultCheckedOnChange = () => <UnControlledSwitch />;
  76. SwitchDefaultCheckedOnChange.story = {
  77. name: 'switch defaultChecked + onChange',
  78. };
  79. class LoadingDemo extends React.Component {
  80. constructor() {
  81. super();
  82. this.state = {
  83. checked: true,
  84. loading: false,
  85. };
  86. this.onChange = this.onChange.bind(this);
  87. }
  88. onChange(checked) {
  89. this.setState({ checked });
  90. }
  91. render() {
  92. return (
  93. <>
  94. <Button
  95. onClick={() => {
  96. this.setState({ checked: true });
  97. }}
  98. >
  99. checked
  100. </Button>
  101. <br />
  102. <br />
  103. <Button
  104. onClick={() => {
  105. this.setState({ checked: false });
  106. }}
  107. >
  108. unchecked
  109. </Button>
  110. <br />
  111. <br />
  112. <Button
  113. onClick={() => {
  114. this.setState({ loading: !this.state.loading });
  115. }}
  116. >
  117. loading
  118. </Button>
  119. <br />
  120. <br />
  121. <Switch
  122. checked={this.state.checked}
  123. onChange={this.onChange}
  124. aria-label='power-switch'
  125. loading={this.state.loading}
  126. ></Switch>
  127. <br />
  128. <br />
  129. <hr />
  130. <Switch loading disabled aria-label='power-switch'/>
  131. <br />
  132. <br />
  133. <Switch loading disabled defaultChecked aria-label='power-switch'/>
  134. <br />
  135. <br />
  136. </>
  137. );
  138. }
  139. }
  140. export const Loading = () => <LoadingDemo />;
  141. Loading.story = {
  142. name: 'loading',
  143. };