locale.stories.jsx 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. import React from 'react';
  2. import { useState } from 'react';
  3. import {
  4. Modal,
  5. Pagination,
  6. DatePicker,
  7. TimePicker,
  8. Select,
  9. Button,
  10. Cascader,
  11. LocaleProvider
  12. } from '../../index';
  13. import zh_CN from '@douyinfe/semi-ui/locale/source/zh_CN';
  14. import en_GB from '@douyinfe/semi-ui/locale/source/en_GB';
  15. import en_US from '@douyinfe/semi-ui/locale/source/en_US';
  16. import ko_KR from '@douyinfe/semi-ui/locale/source/ko_KR';
  17. import ja_JP from '@douyinfe/semi-ui/locale/source/ja_JP';
  18. import ru_RU from '@douyinfe/semi-ui/locale/source/ru_RU';
  19. import vi_VN from '@douyinfe/semi-ui/locale/source/vi_VN';
  20. const { Option } = Select;
  21. export default {
  22. title: 'LocaleProvider'
  23. }
  24. // -√ Pagination
  25. // -√ Modal
  26. // -× DatePicker
  27. // -√ Table
  28. // -√ Select
  29. // -× Calendar
  30. // -√ Timepicker
  31. const TableDemo = () => {};
  32. const CascaderDemo = () => {
  33. const treeData = [
  34. {
  35. label: '亚洲',
  36. value: 'yazhou',
  37. children: [
  38. {
  39. label: '中国',
  40. value: 'zhongguo',
  41. children: [
  42. {
  43. label: '北京',
  44. value: 'beijing',
  45. },
  46. {
  47. label: '上海',
  48. value: 'shanghai',
  49. },
  50. ],
  51. },
  52. {
  53. label: '日本',
  54. value: 'riben',
  55. children: [
  56. {
  57. label: '大阪',
  58. value: 'daban',
  59. },
  60. ],
  61. },
  62. ],
  63. },
  64. ];
  65. return <Cascader style={{ width: 300, margin: 10 }} treeData={treeData} filterTreeNode />;
  66. };
  67. const I18nComponent = () => {
  68. const [modalVisible, setModalVisible] = useState(false);
  69. const style = { margin: 10 };
  70. return (
  71. <>
  72. <Pagination total={100} showTotal showSizeChanger style={style} />
  73. <div style={style}>
  74. <Button onClick={() => setModalVisible(true)}>Show Modal</Button>
  75. </div>
  76. <div style={style}>
  77. <Select filter style={{ width: '180px' }}>
  78. <Option value="abc">abc</Option>
  79. <Option value="vigo" disabled>
  80. vigo
  81. </Option>
  82. <Option value="hotsoon">hotsoon</Option>
  83. </Select>
  84. <CascaderDemo />
  85. </div>
  86. <Modal
  87. title="Modal"
  88. visible={modalVisible}
  89. onOk={() => setModalVisible(false)}
  90. onCancel={() => setModalVisible(false)}
  91. >
  92. <p>This is the content of a basic modal.</p>
  93. <p>More content...</p>
  94. </Modal>
  95. <DatePicker style={{ ...style, width: 200 }} />
  96. <DatePicker style={{ ...style, width: 250 }} type="dateTime" />
  97. <DatePicker style={{ ...style, width: 250 }} type="dateRange" />
  98. <DatePicker style={{ ...style, width: 400 }} type="dateTimeRange" />
  99. <TimePicker style={style} />
  100. <TimePicker use12Hours style={style} />
  101. <br />
  102. <br />
  103. </>
  104. );
  105. };
  106. class I18nDemo extends React.Component {
  107. constructor(props) {
  108. super(props);
  109. this.state = {
  110. locale: zh_CN,
  111. };
  112. this.onLanguageChange = this.onLanguageChange.bind(this);
  113. }
  114. onLanguageChange(code) {
  115. let language = {
  116. zh_CN: zh_CN,
  117. en_GB: en_GB,
  118. ko_KR: ko_KR,
  119. ja_JP: ja_JP,
  120. };
  121. this.setState({ locale: language[code] });
  122. }
  123. render() {
  124. const { locale } = this.state;
  125. return (
  126. <>
  127. <Select onChange={this.onLanguageChange}>
  128. <Option value="zh_CN">中文</Option>
  129. <Option value="en_GB">英语(英)</Option>
  130. <Option value="ja_JP">日语</Option>
  131. <Option value="ko_KR">韩语</Option>
  132. </Select>
  133. <hr />
  134. <LocaleProvider locale={locale}>
  135. <I18nComponent />
  136. </LocaleProvider>
  137. </>
  138. );
  139. }
  140. }
  141. export const LocaleZhCn = () => (
  142. <LocaleProvider locale={zh_CN}>
  143. <I18nComponent />
  144. </LocaleProvider>
  145. );
  146. LocaleZhCn.story = {
  147. name: 'Locale zh_CN',
  148. };
  149. export const LocaleEnGb = () => (
  150. <LocaleProvider locale={en_GB}>
  151. <I18nComponent />
  152. </LocaleProvider>
  153. );
  154. LocaleEnGb.story = {
  155. name: 'Locale en-GB',
  156. };
  157. export const LocaleEnUs = () => (
  158. <LocaleProvider locale={en_US}>
  159. <I18nComponent />
  160. </LocaleProvider>
  161. );
  162. LocaleEnUs.story = {
  163. name: 'Locale en-US',
  164. };
  165. export const LocaleJaJp = () => (
  166. <LocaleProvider locale={ja_JP}>
  167. <I18nComponent />
  168. </LocaleProvider>
  169. );
  170. LocaleJaJp.story = {
  171. name: 'Locale ja_JP',
  172. };
  173. export const LocaleKoKr = () => (
  174. <LocaleProvider locale={ko_KR}>
  175. <I18nComponent />
  176. </LocaleProvider>
  177. );
  178. LocaleKoKr.story = {
  179. name: 'Locale ko_KR',
  180. };
  181. export const LocaleRuRu = () => (
  182. <LocaleProvider locale={ru_RU}>
  183. <I18nComponent />
  184. </LocaleProvider>
  185. );
  186. LocaleRuRu.story = {
  187. name: 'Locale ru_RU',
  188. };
  189. export const LocaleViVn = () => (
  190. <LocaleProvider locale={vi_VN}>
  191. <I18nComponent />
  192. </LocaleProvider>
  193. );
  194. LocaleViVn.story = {
  195. name: 'Locale vi_VN',
  196. };
  197. export const Locale = () => <I18nDemo />;