TriggerAndStopValidateWithError.jsx 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. import React, { useState, useLayoutEffect, Component } from 'react';
  2. import { storiesOf } from '@storybook/react';
  3. import { Button, Modal, TreeSelect, Row, Col, Avatar, Toast, Select as BasicSelect,
  4. Form,
  5. useFormState,
  6. useFormApi,
  7. useFieldApi,
  8. useFieldState,
  9. withFormState,
  10. withFormApi,
  11. withField,
  12. ArrayField,
  13. AutoComplete,
  14. Collapse,
  15. Icon } from '../../../index';
  16. import { ComponentUsingFormState } from '../Hook/hookDemo';
  17. const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker, InputNumber, InputGroup } = Form;
  18. const FieldLevelTriggerDemo = () => {
  19. const initValues = {
  20. name: 'semi',
  21. role: 'rd'
  22. };
  23. const style = { width: '100%' };
  24. const { Select, Input } = Form;
  25. return (
  26. <Form initValues={initValues}>
  27. <Form.Section text='FieldLevelTrigger'>
  28. <Input
  29. field="system"
  30. label='trigger=change(default)'
  31. style={style}
  32. rules={[
  33. { required: true, message: 'required error' },
  34. { type: 'string', message: 'type error' },
  35. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  36. ]}
  37. />
  38. <Input
  39. field="name"
  40. label='trigger=blur'
  41. style={style}
  42. trigger='blur'
  43. rules={[
  44. { required: true, message: 'required error' },
  45. { type: 'string', message: 'type error' },
  46. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  47. ]}
  48. />
  49. <Input
  50. field="both"
  51. label='trigger=blur & change'
  52. style={style}
  53. trigger={['blur', 'change']}
  54. rules={[
  55. { required: true, message: 'required error' },
  56. { type: 'string', message: 'type error' },
  57. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  58. ]}
  59. />
  60. <Input
  61. field="role"
  62. label='trigger=mount'
  63. style={style}
  64. trigger='mount'
  65. rules={[
  66. { required: true, message: 'required error' },
  67. { type: 'string', message: 'type error' },
  68. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  69. ]}
  70. />
  71. <Button htmlType='submit'>提交</Button>
  72. <Button htmlType='reset'>reset</Button>
  73. </Form.Section>
  74. </Form>
  75. );
  76. };
  77. const FormLevelTriggerDemo = () => {
  78. const initValues = {
  79. name: 'semi',
  80. role: 'rd'
  81. };
  82. const style = { width: '100%' };
  83. const { Select, Input } = Form;
  84. return (
  85. <Form initValues={initValues} trigger='blur'>
  86. <Form.Section text='FormLevelTrigger blur'>
  87. <Input
  88. field="name"
  89. style={style}
  90. label='fieldTrigger=change'
  91. trigger='change'
  92. rules={[
  93. { required: true, message: 'required error' },
  94. { type: 'string', message: 'type error' },
  95. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  96. ]}
  97. />
  98. <Input
  99. field="role"
  100. label="fieldTrigger unset (default)"
  101. style={style}
  102. rules={[
  103. { required: true, message: 'required error' },
  104. { type: 'string', message: 'type error' },
  105. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  106. ]}
  107. />
  108. <Input
  109. field="custom"
  110. label="fieldTrigger=custom"
  111. trigger='custom'
  112. style={style}
  113. rules={[
  114. { required: true, message: 'required error' },
  115. { type: 'string', message: 'type error' },
  116. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  117. ]}
  118. />
  119. <Input
  120. field="both"
  121. label="fieldTrigger=mount & custom"
  122. trigger={['custom', 'mount']}
  123. style={style}
  124. rules={[
  125. { required: true, message: 'required error' },
  126. { type: 'string', message: 'type error' },
  127. { validator: (rule, value) => value === 'semi', message: 'should be semi' }
  128. ]}
  129. />
  130. <Button htmlType='submit'>提交</Button>
  131. <Button htmlType='reset'>reset</Button>
  132. </Form.Section>
  133. </Form>
  134. );
  135. };
  136. const FieldStopDemo = () => {
  137. const initValues = {
  138. name: 'semi',
  139. role: 'rd'
  140. };
  141. const style = { width: '100%' };
  142. const { Select, Input } = Form;
  143. return (
  144. <Form initValues={initValues}>
  145. <Form.Section text='Field Stop=true'>
  146. <Input
  147. field="name"
  148. style={style}
  149. label='field stop=true'
  150. stopValidateWithError
  151. rules={[
  152. { required: true, message: 'required error' },
  153. { validator: (rule, value) => value === 'semi', message: 'should be semi' },
  154. { validator: (rule, value) => value.startsWith('s'), message: 'should startwith s' },
  155. ]}
  156. />
  157. <Input
  158. field="role"
  159. style={style}
  160. label='field stop default (false)'
  161. rules={[
  162. { required: true, message: 'required error' },
  163. { validator: (rule, value) => value === 'semi', message: 'should be semi' },
  164. { validator: (rule, value) => value && value.startsWith('s'), message: 'should startwith s' },
  165. ]}
  166. />
  167. <Button htmlType='submit'>提交</Button>
  168. <Button htmlType='reset'>reset</Button>
  169. </Form.Section>
  170. </Form>
  171. );
  172. };
  173. const FormStopDemo = () => {
  174. const style = { width: '100%' };
  175. const { Select, Input } = Form;
  176. return (
  177. <Form stopValidateWithError>
  178. <Form.Section text='Form Stop=true'>
  179. <Input
  180. field="name"
  181. style={style}
  182. label='field stop default (false)'
  183. rules={[
  184. { required: true, message: 'required error' },
  185. { validator: (rule, value) => value === 'semi', message: 'should be semi' },
  186. { validator: (rule, value) => value.startsWith('s'), message: 'should startwith s' },
  187. ]}
  188. />
  189. <Input
  190. field="role"
  191. style={style}
  192. label='field stop default (false)'
  193. rules={[
  194. { required: true, message: 'required error' },
  195. { validator: (rule, value) => value === 'semi', message: 'should be semi' },
  196. { validator: (rule, value) => value && value.startsWith('s'), message: 'should startwith s' },
  197. ]}
  198. />
  199. <Input
  200. field="role"
  201. style={style}
  202. stopValidateWithError={false}
  203. label='field stop false'
  204. rules={[
  205. { required: true, message: 'required error' },
  206. { validator: (rule, value) => value === 'semi', message: 'should be semi' },
  207. { validator: (rule, value) => value && value.startsWith('s'), message: 'should startwith s' },
  208. ]}
  209. />
  210. <Button htmlType='submit'>提交</Button>
  211. <Button htmlType='reset'>reset</Button>
  212. </Form.Section>
  213. </Form>
  214. );
  215. };
  216. const TriggerDemo = () => {
  217. return (
  218. <>
  219. <FieldLevelTriggerDemo></FieldLevelTriggerDemo>
  220. <FormLevelTriggerDemo></FormLevelTriggerDemo>
  221. <FieldStopDemo></FieldStopDemo>
  222. <FormStopDemo></FormStopDemo>
  223. </>
  224. );
  225. };
  226. export { TriggerDemo };