name.jsx 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import React, { useState, useLayoutEffect, useEffect, useRef } from 'react';
  2. import { storiesOf } from '@storybook/react';
  3. import { Button, Modal, TreeSelect, Row, Col, Avatar, Tabs, TabPane, Badge } from '@douyinfe/semi-ui';
  4. import {
  5. Form,
  6. useFormState,
  7. useFormApi,
  8. useFieldApi,
  9. useFieldState,
  10. withFormState,
  11. withFormApi,
  12. withField,
  13. ArrayField
  14. } from '../../index';
  15. import {
  16. UseFormApiDemo,
  17. UseFormStateDemo,
  18. UseFieldApiDemo,
  19. UseFieldStateDemo,
  20. WithFormStateDemo,
  21. WithFormApiDemo,
  22. ComponentUsingFormState,
  23. CustomStringify
  24. } from '../Hook/hookDemo';
  25. const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker } = Form;
  26. const NameDemo = () => {
  27. const style = { width: '90%' };
  28. const helpText = <span style={{ color: 'var(--semi-color-warning)' }}>密码强度:弱</span>;
  29. return (
  30. <Form extraTextPosition="middle">
  31. <Form.Input
  32. field="b"
  33. name='test'
  34. />
  35. <Form.Input
  36. field='name'
  37. label="名称"
  38. name='name'
  39. // initValue={'mikeya'}
  40. style={style}
  41. trigger='blur'
  42. rules={[
  43. { required: true, message: 'required error' },
  44. { type: 'string', message: 'type error' },
  45. { validator: (rule, value) => value === 'muji', message: 'not muji' }
  46. ]}
  47. />
  48. <Form.DatePicker field="date" name='date' label='日期' style={style} placeholder='请选择生效日期' />
  49. <Form.Select field="role" name='role' style={style} label='角色' placeholder='请选择你的角色'>
  50. <Form.Select.Option value="operate">运营</Form.Select.Option>
  51. <Form.Select.Option value="rd">开发</Form.Select.Option>
  52. <Form.Select.Option value="pm">产品</Form.Select.Option>
  53. <Form.Select.Option value="ued">设计</Form.Select.Option>
  54. </Form.Select>
  55. <Form.Select
  56. field="business"
  57. name='business'
  58. multiple
  59. style={style}
  60. placeholder='请选择业务线'
  61. label="业务线(多选)"
  62. >
  63. <Form.Select.Option value="dy">抖音</Form.Select.Option>
  64. <Form.Select.Option value="hootsoon">火山小视频</Form.Select.Option>
  65. <Form.Select.Option value="toutiao">今日头条</Form.Select.Option>
  66. </Form.Select>
  67. <Form.Cascader
  68. placeholder="请选择所在地区"
  69. field='area'
  70. name='area'
  71. label='地区(级联选择)'
  72. >
  73. </Form.Cascader>
  74. <Form.TreeSelect
  75. field="tree"
  76. name='tree'
  77. style={style}
  78. label='节点(树选择)'
  79. placeholder='请选择服务节点'
  80. filterTreeNode
  81. >
  82. </Form.TreeSelect>
  83. <Form.TimePicker
  84. field='time'
  85. name='time'
  86. helpText='原则上应当在 9:00 - 18:00 之间'
  87. label='时间选择'
  88. >
  89. </Form.TimePicker>
  90. <Form.AutoComplete
  91. field='typeData'
  92. label='类型选择'
  93. name='typeData'
  94. data={['1', '2', '3']}
  95. >
  96. </Form.AutoComplete>
  97. <Form.TagInput
  98. field='tags'
  99. label='tags'
  100. name='tags'
  101. />
  102. <Form.TextArea
  103. style={style}
  104. field='description'
  105. name='description'
  106. label='申请理由'
  107. placeholder='请填写申请资源理由'
  108. />
  109. <Form.CheckboxGroup
  110. field="type"
  111. name='anotherType'
  112. label='申请类型'
  113. initValue={['user', 'admin']}
  114. rules={[
  115. { required: true }
  116. ]}
  117. >
  118. <Form.Checkbox value="admin">管理员admin</Form.Checkbox>
  119. <Form.Checkbox value="user">用户user</Form.Checkbox>
  120. <Form.Checkbox value="guest">访客guest</Form.Checkbox>
  121. <Form.Checkbox value="root">根用户root</Form.Checkbox>
  122. </Form.CheckboxGroup>
  123. <Form.RadioGroup
  124. name='anotherSource'
  125. field="isMonopolize" label='是否独占资源' rules={[
  126. { type: 'boolean' },
  127. { required: true, message: '必须选择是否独占 ' }
  128. ]}>
  129. <Form.Radio value={true}>是</Form.Radio>
  130. <Form.Radio value={false}>否</Form.Radio>
  131. </Form.RadioGroup>
  132. <Form.InputNumber field='number' name='number' label='申请数量' initValue={20} style={style}/>
  133. <Form.Slider field="range" name='range' label='资源使用报警阈值(%)' initValue={10} style={{ width: '90%' }}/>
  134. <Form.Rating field="rating" name='rating' label='满意度(Rating)' initValue={2} style={{ width: '90%' }}/>
  135. <Form.Switch field='switch' name='switch' label='开关(Switch)'/>
  136. <Form.CheckboxGroup field="cardCheckbox" label='卡片选择' style={{ width: '90%' }} type='card' initValue={['1', '3']} direction={'horizontal'} aria-label="CheckboxGroup 示例">
  137. <Form.Checkbox value={'1'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
  138. 单选框标题
  139. </Form.Checkbox>
  140. <Form.Checkbox value={'2'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
  141. 单选框标题
  142. </Form.Checkbox>
  143. </Form.CheckboxGroup>
  144. <Form.RadioGroup field='buttonRadio' type='button' buttonSize='middle' defaultValue={1} aria-label="单选组合示例">
  145. <Radio value={1}>即时推送</Radio>
  146. <Radio value={2}>定时推送</Radio>
  147. <Radio value={3}>动态推送</Radio>
  148. </Form.RadioGroup>
  149. <Form.Checkbox value="false" field="agree" name='agree' useOutSideGroup={true} noLabel={true}>
  150. 我已阅读并清楚相关规定
  151. </Form.Checkbox>
  152. </Form>
  153. );
  154. };
  155. export { NameDemo };