@hw-component/form 0.0.2 → 0.0.3-beta-v1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/es/CheckboxGroup/CheckBox/index.d.ts +2 -5
  2. package/es/CheckboxGroup/CheckBox/index.js +9 -5
  3. package/es/CheckboxGroup/hooks.d.ts +1 -1
  4. package/es/CheckboxGroup/hooks.js +18 -19
  5. package/es/CheckboxGroup/index.d.ts +2 -3
  6. package/es/CheckboxGroup/index.js +57 -15
  7. package/es/CheckboxGroup/modal.d.ts +13 -0
  8. package/es/DialogForm/DrawerForm/Footer.d.ts +4 -0
  9. package/es/DialogForm/DrawerForm/Footer.js +23 -0
  10. package/es/DialogForm/DrawerForm/Title.d.ts +4 -0
  11. package/es/DialogForm/DrawerForm/Title.js +18 -0
  12. package/es/DialogForm/DrawerForm/index.d.ts +4 -0
  13. package/es/DialogForm/DrawerForm/index.js +111 -0
  14. package/es/DialogForm/ModalForm.d.ts +4 -0
  15. package/es/DialogForm/ModalForm.js +89 -0
  16. package/es/DialogForm/hooks.d.ts +14 -0
  17. package/es/DialogForm/hooks.js +124 -0
  18. package/es/DialogForm/modal.d.ts +25 -0
  19. package/es/Form/Context/FormConfigProvider.d.ts +5 -0
  20. package/es/Form/Context/FormConfigProvider.js +47 -0
  21. package/es/Form/Context/index.d.ts +5 -0
  22. package/es/Form/Context/index.js +11 -0
  23. package/es/Form/FormItem/BasicItem.d.ts +4 -0
  24. package/es/Form/FormItem/BasicItem.js +73 -0
  25. package/es/Form/FormItem/Helper.d.ts +7 -0
  26. package/es/Form/FormItem/Helper.js +24 -0
  27. package/es/Form/FormItem/RegularFormItem.d.ts +4 -0
  28. package/es/Form/FormItem/RegularFormItem.js +15 -0
  29. package/es/Form/FormItem/UpFormItem.d.ts +4 -0
  30. package/es/Form/FormItem/UpFormItem.js +32 -0
  31. package/es/Form/FormItem/hooks.d.ts +10 -0
  32. package/es/Form/FormItem/hooks.js +38 -0
  33. package/es/Form/FormItem/index.d.ts +4 -0
  34. package/es/Form/FormItem/index.js +11 -0
  35. package/es/Form/HFormConnect.d.ts +5 -0
  36. package/es/Form/HFormConnect.js +55 -0
  37. package/es/Form/InitSet.d.ts +3 -0
  38. package/es/Form/InitSet.js +15 -0
  39. package/es/Form/Label.d.ts +10 -0
  40. package/es/Form/Label.js +46 -0
  41. package/es/Form/config.d.ts +29 -0
  42. package/es/Form/config.js +45 -0
  43. package/es/Form/hooks/index.d.ts +6 -0
  44. package/es/Form/hooks/index.js +45 -0
  45. package/es/Form/hooks/useHForm.d.ts +3 -0
  46. package/es/Form/hooks/useHForm.js +173 -0
  47. package/es/Form/hooks/useInitConfigData.d.ts +4 -0
  48. package/es/Form/hooks/useInitConfigData.js +124 -0
  49. package/es/Form/index.d.ts +4 -0
  50. package/es/Form/index.js +104 -0
  51. package/es/Form/modal.d.ts +104 -0
  52. package/es/Input/ButtonInput.d.ts +2 -2
  53. package/es/Input/ButtonInput.js +9 -6
  54. package/es/Input/InputNumber.js +6 -6
  55. package/es/Input/SelectInput.d.ts +2 -1
  56. package/es/Input/SelectInput.js +40 -10
  57. package/es/Input/defaultConfig.js +2 -2
  58. package/es/Input/index.js +4 -4
  59. package/es/Input/modal.d.ts +27 -0
  60. package/es/PageHandler/ErrorComponent.d.ts +4 -0
  61. package/es/PageHandler/ErrorComponent.js +33 -0
  62. package/es/PageHandler/LoadingComponent.d.ts +3 -0
  63. package/es/PageHandler/LoadingComponent.js +18 -0
  64. package/es/PageHandler/index.d.ts +4 -0
  65. package/es/PageHandler/index.js +24 -0
  66. package/es/PageHandler/modal.d.ts +6 -0
  67. package/es/RadioGroup/index.d.ts +2 -2
  68. package/es/RadioGroup/index.js +11 -7
  69. package/es/Select/components/AllSelect.d.ts +3 -3
  70. package/es/Select/components/AllSelect.js +26 -13
  71. package/es/Select/components/CheckBoxOption.js +2 -2
  72. package/es/Select/components/DropdownComponent.js +2 -2
  73. package/es/Select/components/NoFindItem.js +2 -2
  74. package/es/Select/components/NotFoundContent.js +3 -5
  75. package/es/Select/defaultConfig.js +2 -2
  76. package/es/Select/hooks/changeHooks.js +3 -4
  77. package/es/Select/hooks/norHooks.d.ts +3 -2
  78. package/es/Select/hooks/norHooks.js +9 -4
  79. package/es/Select/index.d.ts +1 -1
  80. package/es/Select/index.js +21 -14
  81. package/es/Select/modal.d.ts +1 -0
  82. package/es/Select/utils.js +2 -2
  83. package/es/Submit/index.d.ts +8 -0
  84. package/es/Submit/index.js +28 -0
  85. package/es/Switch/index.d.ts +4 -3
  86. package/es/Switch/index.js +14 -10
  87. package/es/TDPicker/RangePicker.d.ts +8 -0
  88. package/es/TDPicker/RangePicker.js +121 -0
  89. package/es/TDPicker/TimePicker.d.ts +4 -0
  90. package/es/TDPicker/TimePicker.js +31 -0
  91. package/es/TDPicker/hooks.d.ts +33 -0
  92. package/es/TDPicker/hooks.js +132 -0
  93. package/{lib/DatePicker → es/TDPicker}/index.d.ts +2 -2
  94. package/es/{DatePicker → TDPicker}/index.js +14 -20
  95. package/es/TDPicker/modal.d.ts +28 -0
  96. package/es/TextArea/index.d.ts +4 -0
  97. package/es/TextArea/index.js +21 -0
  98. package/es/Upload/Btn.d.ts +4 -0
  99. package/es/Upload/Btn.js +31 -0
  100. package/es/Upload/MediaTypeEle/TypeEle.d.ts +10 -0
  101. package/es/Upload/MediaTypeEle/TypeEle.js +40 -0
  102. package/es/Upload/MediaTypeEle/index.d.ts +4 -0
  103. package/es/Upload/MediaTypeEle/index.js +36 -0
  104. package/es/Upload/Preview/index.d.ts +6 -0
  105. package/es/Upload/Preview/index.js +21 -0
  106. package/es/Upload/UrlUpload/index.d.ts +4 -0
  107. package/es/Upload/UrlUpload/index.js +119 -0
  108. package/es/Upload/enums.d.ts +5 -0
  109. package/es/Upload/enums.js +10 -0
  110. package/es/Upload/hooks/change.d.ts +3 -0
  111. package/es/Upload/hooks/change.js +109 -0
  112. package/es/Upload/hooks/customRequest.d.ts +3 -0
  113. package/es/Upload/hooks/customRequest.js +132 -0
  114. package/es/Upload/hooks/propsMaker.d.ts +2 -0
  115. package/es/Upload/hooks/propsMaker.js +37 -0
  116. package/es/Upload/index.d.ts +3 -0
  117. package/es/Upload/index.js +141 -0
  118. package/es/Upload/modal.d.ts +30 -0
  119. package/es/Upload/util.d.ts +5 -0
  120. package/es/Upload/util.js +34 -0
  121. package/es/config.d.ts +2 -14
  122. package/es/config.js +55 -9
  123. package/{lib/hooks/useChangeOptions.d.ts → es/hooks/index.d.ts} +3 -0
  124. package/es/hooks/index.js +75 -0
  125. package/es/index.css +33 -1
  126. package/es/index.d.ts +24 -11
  127. package/es/index.js +31 -13
  128. package/es/modal.d.ts +15 -0
  129. package/lib/CheckboxGroup/CheckBox/index.d.ts +2 -5
  130. package/lib/CheckboxGroup/CheckBox/index.js +7 -3
  131. package/lib/CheckboxGroup/hooks.d.ts +1 -1
  132. package/lib/CheckboxGroup/hooks.js +16 -17
  133. package/lib/CheckboxGroup/index.d.ts +2 -3
  134. package/lib/CheckboxGroup/index.js +54 -12
  135. package/lib/CheckboxGroup/modal.d.ts +13 -0
  136. package/lib/DialogForm/DrawerForm/Footer.d.ts +4 -0
  137. package/lib/DialogForm/DrawerForm/Footer.js +26 -0
  138. package/lib/DialogForm/DrawerForm/Title.d.ts +4 -0
  139. package/lib/DialogForm/DrawerForm/Title.js +21 -0
  140. package/lib/DialogForm/DrawerForm/index.d.ts +4 -0
  141. package/lib/DialogForm/DrawerForm/index.js +114 -0
  142. package/lib/DialogForm/ModalForm.d.ts +4 -0
  143. package/lib/DialogForm/ModalForm.js +92 -0
  144. package/lib/DialogForm/hooks.d.ts +14 -0
  145. package/lib/DialogForm/hooks.js +128 -0
  146. package/lib/DialogForm/modal.d.ts +25 -0
  147. package/lib/Form/Context/FormConfigProvider.d.ts +5 -0
  148. package/lib/Form/Context/FormConfigProvider.js +51 -0
  149. package/lib/Form/Context/index.d.ts +5 -0
  150. package/lib/Form/Context/index.js +14 -0
  151. package/lib/Form/FormItem/BasicItem.d.ts +4 -0
  152. package/lib/Form/FormItem/BasicItem.js +76 -0
  153. package/lib/Form/FormItem/Helper.d.ts +7 -0
  154. package/lib/Form/FormItem/Helper.js +27 -0
  155. package/lib/Form/FormItem/RegularFormItem.d.ts +4 -0
  156. package/lib/Form/FormItem/RegularFormItem.js +18 -0
  157. package/lib/Form/FormItem/UpFormItem.d.ts +4 -0
  158. package/lib/Form/FormItem/UpFormItem.js +35 -0
  159. package/lib/Form/FormItem/hooks.d.ts +10 -0
  160. package/lib/Form/FormItem/hooks.js +41 -0
  161. package/lib/Form/FormItem/index.d.ts +4 -0
  162. package/lib/Form/FormItem/index.js +14 -0
  163. package/lib/Form/HFormConnect.d.ts +5 -0
  164. package/lib/Form/HFormConnect.js +58 -0
  165. package/lib/Form/InitSet.d.ts +3 -0
  166. package/lib/Form/InitSet.js +18 -0
  167. package/lib/Form/Label.d.ts +10 -0
  168. package/lib/Form/Label.js +49 -0
  169. package/lib/Form/config.d.ts +29 -0
  170. package/lib/Form/config.js +49 -0
  171. package/lib/Form/hooks/index.d.ts +6 -0
  172. package/lib/Form/hooks/index.js +47 -0
  173. package/lib/Form/hooks/useHForm.d.ts +3 -0
  174. package/lib/Form/hooks/useHForm.js +176 -0
  175. package/lib/Form/hooks/useInitConfigData.d.ts +4 -0
  176. package/lib/Form/hooks/useInitConfigData.js +127 -0
  177. package/lib/Form/index.d.ts +4 -0
  178. package/lib/Form/index.js +107 -0
  179. package/lib/Form/modal.d.ts +104 -0
  180. package/lib/Input/ButtonInput.d.ts +2 -2
  181. package/lib/Input/ButtonInput.js +7 -4
  182. package/lib/Input/InputNumber.js +2 -2
  183. package/lib/Input/SelectInput.d.ts +2 -1
  184. package/lib/Input/SelectInput.js +39 -8
  185. package/lib/Input/index.js +2 -2
  186. package/lib/Input/modal.d.ts +27 -0
  187. package/lib/PageHandler/ErrorComponent.d.ts +4 -0
  188. package/lib/PageHandler/ErrorComponent.js +36 -0
  189. package/lib/PageHandler/LoadingComponent.d.ts +3 -0
  190. package/lib/PageHandler/LoadingComponent.js +21 -0
  191. package/lib/PageHandler/index.d.ts +4 -0
  192. package/lib/PageHandler/index.js +27 -0
  193. package/lib/PageHandler/modal.d.ts +6 -0
  194. package/lib/RadioGroup/index.d.ts +2 -2
  195. package/lib/RadioGroup/index.js +9 -5
  196. package/lib/Select/components/AllSelect.d.ts +3 -3
  197. package/lib/Select/components/AllSelect.js +24 -11
  198. package/lib/Select/components/NotFoundContent.js +1 -3
  199. package/lib/Select/hooks/changeHooks.js +1 -2
  200. package/lib/Select/hooks/norHooks.d.ts +3 -2
  201. package/lib/Select/hooks/norHooks.js +7 -2
  202. package/lib/Select/index.d.ts +1 -1
  203. package/lib/Select/index.js +18 -11
  204. package/lib/Select/modal.d.ts +1 -0
  205. package/lib/Submit/index.d.ts +8 -0
  206. package/lib/Submit/index.js +31 -0
  207. package/lib/Switch/index.d.ts +4 -3
  208. package/lib/Switch/index.js +12 -8
  209. package/lib/TDPicker/RangePicker.d.ts +8 -0
  210. package/lib/TDPicker/RangePicker.js +124 -0
  211. package/lib/TDPicker/TimePicker.d.ts +4 -0
  212. package/lib/TDPicker/TimePicker.js +34 -0
  213. package/lib/TDPicker/hooks.d.ts +33 -0
  214. package/lib/TDPicker/hooks.js +139 -0
  215. package/{es/DatePicker → lib/TDPicker}/index.d.ts +2 -2
  216. package/lib/{DatePicker → TDPicker}/index.js +11 -17
  217. package/lib/TDPicker/modal.d.ts +28 -0
  218. package/lib/TextArea/index.d.ts +4 -0
  219. package/lib/TextArea/index.js +24 -0
  220. package/lib/Upload/Btn.d.ts +4 -0
  221. package/lib/Upload/Btn.js +34 -0
  222. package/lib/Upload/MediaTypeEle/TypeEle.d.ts +10 -0
  223. package/lib/Upload/MediaTypeEle/TypeEle.js +43 -0
  224. package/lib/Upload/MediaTypeEle/index.d.ts +4 -0
  225. package/lib/Upload/MediaTypeEle/index.js +39 -0
  226. package/lib/Upload/Preview/index.d.ts +6 -0
  227. package/lib/Upload/Preview/index.js +24 -0
  228. package/lib/Upload/UrlUpload/index.d.ts +4 -0
  229. package/lib/Upload/UrlUpload/index.js +122 -0
  230. package/lib/Upload/enums.d.ts +5 -0
  231. package/lib/Upload/enums.js +9 -0
  232. package/lib/Upload/hooks/change.d.ts +3 -0
  233. package/lib/Upload/hooks/change.js +110 -0
  234. package/lib/Upload/hooks/customRequest.d.ts +3 -0
  235. package/lib/Upload/hooks/customRequest.js +133 -0
  236. package/lib/Upload/hooks/propsMaker.d.ts +2 -0
  237. package/lib/Upload/hooks/propsMaker.js +38 -0
  238. package/lib/Upload/index.d.ts +3 -0
  239. package/lib/Upload/index.js +144 -0
  240. package/lib/Upload/modal.d.ts +30 -0
  241. package/lib/Upload/util.d.ts +5 -0
  242. package/lib/Upload/util.js +38 -0
  243. package/lib/config.d.ts +2 -14
  244. package/lib/config.js +53 -7
  245. package/{es/hooks/useChangeOptions.d.ts → lib/hooks/index.d.ts} +3 -0
  246. package/lib/hooks/index.js +78 -0
  247. package/lib/index.css +33 -1
  248. package/lib/index.d.ts +24 -11
  249. package/lib/index.js +48 -23
  250. package/lib/modal.d.ts +15 -0
  251. package/package.json +4 -3
  252. package/scripts/rollup.config.js +3 -8
  253. package/scripts/webpack.config.js +6 -2
  254. package/src/Layout.tsx +4 -4
  255. package/src/components/CheckboxGroup/CheckBox/index.tsx +7 -7
  256. package/src/components/CheckboxGroup/hooks.ts +12 -13
  257. package/src/components/CheckboxGroup/index.tsx +40 -7
  258. package/src/components/CheckboxGroup/{modal.d.ts → modal.ts} +4 -1
  259. package/src/components/DialogForm/DrawerForm/Footer.tsx +19 -0
  260. package/src/components/DialogForm/DrawerForm/Title.tsx +12 -0
  261. package/src/components/DialogForm/DrawerForm/index.tsx +85 -0
  262. package/src/components/DialogForm/ModalForm.tsx +60 -0
  263. package/src/components/DialogForm/hooks.ts +87 -0
  264. package/src/components/DialogForm/modal.ts +27 -0
  265. package/src/components/Form/Context/FormConfigProvider.tsx +38 -0
  266. package/src/components/Form/Context/index.tsx +14 -0
  267. package/src/components/Form/FormItem/BasicItem.tsx +70 -0
  268. package/src/components/Form/FormItem/Helper.tsx +25 -0
  269. package/src/components/Form/FormItem/RegularFormItem.tsx +7 -0
  270. package/src/components/Form/FormItem/UpFormItem.tsx +20 -0
  271. package/src/components/Form/FormItem/hooks.tsx +44 -0
  272. package/src/components/Form/FormItem/index.tsx +8 -0
  273. package/src/components/Form/HFormConnect.tsx +67 -0
  274. package/src/components/Form/InitSet.tsx +10 -0
  275. package/src/components/Form/Label.tsx +50 -0
  276. package/src/components/Form/config.ts +41 -0
  277. package/src/components/Form/hooks/index.ts +22 -0
  278. package/src/components/Form/hooks/useHForm.ts +147 -0
  279. package/src/components/Form/hooks/useInitConfigData.tsx +100 -0
  280. package/src/components/Form/index.less +22 -0
  281. package/src/components/Form/index.tsx +79 -0
  282. package/src/components/Form/modal.ts +154 -0
  283. package/src/components/Input/ButtonInput.tsx +5 -5
  284. package/src/components/Input/SelectInput.tsx +34 -3
  285. package/src/components/Input/modal.ts +33 -0
  286. package/src/components/PageHandler/ErrorComponent.tsx +20 -0
  287. package/src/components/PageHandler/LoadingComponent.tsx +9 -0
  288. package/src/components/PageHandler/index.tsx +14 -0
  289. package/src/components/PageHandler/modal.ts +6 -0
  290. package/src/components/RadioGroup/index.tsx +8 -4
  291. package/src/components/Select/components/AllSelect.tsx +28 -15
  292. package/src/components/Select/components/DropdownComponent.tsx +1 -0
  293. package/src/components/Select/components/NotFoundContent.tsx +1 -1
  294. package/src/components/Select/hooks/changeHooks.tsx +1 -2
  295. package/src/components/Select/hooks/norHooks.ts +6 -1
  296. package/src/components/Select/index.less +20 -3
  297. package/src/components/Select/index.tsx +17 -9
  298. package/src/components/Select/modal.ts +8 -7
  299. package/src/components/Submit/index.tsx +28 -0
  300. package/src/components/Switch/index.tsx +14 -9
  301. package/src/components/TDPicker/RangePicker.tsx +105 -0
  302. package/src/components/TDPicker/TimePicker.tsx +15 -0
  303. package/src/components/TDPicker/hooks.ts +150 -0
  304. package/src/components/TDPicker/index.tsx +22 -0
  305. package/src/components/TDPicker/modal.ts +30 -0
  306. package/src/components/TextArea/index.tsx +8 -0
  307. package/src/components/Upload/Btn.tsx +24 -0
  308. package/src/components/Upload/MediaTypeEle/TypeEle.tsx +26 -0
  309. package/src/components/Upload/MediaTypeEle/index.tsx +34 -0
  310. package/src/components/Upload/Preview/index.tsx +14 -0
  311. package/src/components/Upload/UrlUpload/index.tsx +91 -0
  312. package/src/components/Upload/enums.ts +5 -0
  313. package/src/components/Upload/hooks/change.ts +79 -0
  314. package/src/components/Upload/hooks/customRequest.ts +87 -0
  315. package/src/components/Upload/hooks/propsMaker.ts +20 -0
  316. package/src/components/Upload/index.tsx +118 -0
  317. package/src/components/Upload/modal.ts +33 -0
  318. package/src/components/Upload/util.ts +27 -0
  319. package/src/components/config.ts +34 -8
  320. package/src/components/hooks/index.ts +53 -0
  321. package/src/components/index.tsx +27 -12
  322. package/src/components/modal.ts +15 -0
  323. package/src/components/styles/index.less +2 -0
  324. package/src/components/styles/local.less +1 -0
  325. package/src/components/typings.d.ts +0 -5
  326. package/src/pages/Checkbox/index.tsx +4 -5
  327. package/src/pages/DatePicker/index.tsx +20 -2
  328. package/src/pages/DrawerForm/index.tsx +127 -0
  329. package/src/pages/Form/index.tsx +147 -0
  330. package/src/pages/ModalForm/index.tsx +127 -0
  331. package/src/pages/Select/index.tsx +6 -2
  332. package/src/pages/Switch/index.tsx +1 -1
  333. package/src/pages/Upload/index.tsx +14 -0
  334. package/src/routes.tsx +24 -0
  335. package/es/DatePicker/RangePicker.d.ts +0 -4
  336. package/es/DatePicker/RangePicker.js +0 -23
  337. package/es/Select/index.less.js +0 -5
  338. package/es/TimePicker/index.d.ts +0 -2
  339. package/es/hooks/useChangeOptions.js +0 -25
  340. package/lib/DatePicker/RangePicker.d.ts +0 -4
  341. package/lib/DatePicker/RangePicker.js +0 -26
  342. package/lib/Select/index.less.js +0 -8
  343. package/lib/TimePicker/index.d.ts +0 -2
  344. package/lib/hooks/useChangeOptions.js +0 -26
  345. package/src/components/DatePicker/RangePicker.tsx +0 -7
  346. package/src/components/DatePicker/index.tsx +0 -38
  347. package/src/components/DatePicker/modal.d.ts +0 -16
  348. package/src/components/Input/modal.d.ts +0 -26
  349. package/src/components/TimePicker/index.tsx +0 -1
  350. package/src/components/hooks/useChangeOptions.ts +0 -22
@@ -0,0 +1,10 @@
1
+ import { useFormContext } from "./Context";
2
+ import { useEffect } from "react";
3
+
4
+ export default () => {
5
+ const { form } = useFormContext();
6
+ useEffect(() => {
7
+ form.initValues();
8
+ }, []);
9
+ return <></>;
10
+ };
@@ -0,0 +1,50 @@
1
+ import type { HoverModal } from "./modal";
2
+ import React from "react";
3
+ import { QuestionCircleOutlined } from "@ant-design/icons";
4
+ import { Tooltip } from "antd";
5
+ import { useClassName } from "../hooks";
6
+
7
+ interface IProps {
8
+ labelWidth?: number;
9
+ hover?: string | HoverModal;
10
+ colon?: boolean;
11
+ required?: boolean;
12
+ }
13
+ const useHover = ({ hover }: IProps) => {
14
+ if (!hover || typeof hover === "string") {
15
+ return {
16
+ text: hover,
17
+ icon: <QuestionCircleOutlined />,
18
+ };
19
+ }
20
+ return hover;
21
+ };
22
+ const Index: React.FC<IProps> = ({
23
+ labelWidth,
24
+ children,
25
+ colon,
26
+ required,
27
+ hover,
28
+ }) => {
29
+ const { text, icon } = useHover({ hover });
30
+ const array = [
31
+ colon ? "hw-form-item-colon" : "",
32
+ required ? "hw-form-item-required" : "",
33
+ ];
34
+
35
+ const className = useClassName(array);
36
+ return (
37
+ <div style={{ width: labelWidth }} className={className}>
38
+ {children}
39
+ {text && (
40
+ <span style={{ marginLeft: 4 }}>
41
+ <Tooltip placement="top" title={text}>
42
+ {icon}
43
+ </Tooltip>
44
+ </span>
45
+ )}
46
+ </div>
47
+ );
48
+ };
49
+
50
+ export default Index;
@@ -0,0 +1,41 @@
1
+ import HSelect from "../Select";
2
+ import HInput from "../Input";
3
+ import HInputNumber from "../Input/InputNumber";
4
+ import HSelectInput from "../Input/SelectInput";
5
+ import HButtonInput from "../Input/ButtonInput";
6
+ import HCheckboxGroup from "../CheckboxGroup";
7
+ import HCheckBox from "../CheckboxGroup/CheckBox";
8
+ import HRadioGroup from "../RadioGroup";
9
+ import HSwitch from "../Switch";
10
+ import HDatePicker from "../TDPicker";
11
+ import HRangePicker from "../TDPicker/RangePicker";
12
+ import HTimePicker from "../TDPicker/TimePicker";
13
+ import HUpload from "../Upload";
14
+ import HUrlUpload from "../Upload/UrlUpload";
15
+ import HSubmit from "../Submit";
16
+ import FormConfigProvider from "../Form/Context/FormConfigProvider";
17
+ import TextArea from "../TextArea";
18
+ export const placeholderConfig = {
19
+ inputType: ["input", "inputNumber", "selectInput", "buttonInput"],
20
+ selectType: ["select", "datePicker", "timePicker"],
21
+ };
22
+
23
+ export default {
24
+ select: HSelect,
25
+ inputNumber: HInputNumber,
26
+ selectInput: HSelectInput,
27
+ buttonInput: HButtonInput,
28
+ checkboxGroup: HCheckboxGroup,
29
+ checkBox: HCheckBox,
30
+ radioGroup: HRadioGroup,
31
+ switch: HSwitch,
32
+ datePicker: HDatePicker,
33
+ rangePicker: HRangePicker,
34
+ timePicker: HTimePicker,
35
+ input: HInput,
36
+ upload: HUpload,
37
+ urlUpload: HUrlUpload,
38
+ submit: HSubmit,
39
+ formConfigProvider: FormConfigProvider,
40
+ textArea: TextArea,
41
+ };
@@ -0,0 +1,22 @@
1
+ import { useRequest } from "ahooks";
2
+ import type { HFormProps } from "@/components/Form/modal";
3
+ import useHForm from "./useHForm";
4
+ import type { HFormInstance } from "@/components/Form/modal";
5
+ export const useCurrentForm = (form?: HFormInstance) => {
6
+ const selfForm = useHForm();
7
+ return form || selfForm;
8
+ };
9
+ type ParamsModal = Omit<HFormProps, "configData">;
10
+
11
+ export const useSub = ({ request, onFinish, form }: ParamsModal) => {
12
+ return useRequest(
13
+ async (value) => {
14
+ const subVal = form?.outputValues(value);
15
+ if (request) {
16
+ await request(subVal);
17
+ }
18
+ onFinish?.(subVal);
19
+ },
20
+ { manual: true }
21
+ );
22
+ }; //提交
@@ -0,0 +1,147 @@
1
+ import { useMemo } from "react";
2
+ import { Form } from "antd";
3
+ import type { FormatItemModal, HFormInstance } from "../modal";
4
+ import type { argsFn } from "../modal";
5
+
6
+ interface DispatchItemData {
7
+ keysFn: Record<string, argsFn>;
8
+ defaultFn: argsFn[];
9
+ }
10
+
11
+ export default () => {
12
+ const [form] = Form.useForm();
13
+ return useMemo<HFormInstance>(() => {
14
+ const formatSourceData: Record<string, FormatItemModal> = {};
15
+ let dispatchSourceData: Record<string, DispatchItemData> = {};
16
+ let cacheValues: Record<string, any> = {};
17
+ let isLoading=false;
18
+ const norAddItemDispatch = (name, fn) => {
19
+ if (!name) {
20
+ return {
21
+ keysFn: {},
22
+ defaultFn: [fn],
23
+ };
24
+ }
25
+ return {
26
+ keysFn: {
27
+ [name]: fn,
28
+ },
29
+ defaultFn: [],
30
+ };
31
+ };
32
+ return {
33
+ initValues() {
34
+ if (cacheValues) {
35
+ const newValue = this.formatValues(cacheValues);
36
+ form.setFieldsValue(newValue);
37
+ }
38
+ isLoading=true;
39
+ },
40
+ addFormat(name: string, format?: FormatItemModal) {
41
+ if (!format) {
42
+ return;
43
+ }
44
+ const { inputValue, outputValue } = format;
45
+ formatSourceData[name] = {
46
+ inputValue,
47
+ outputValue,
48
+ };
49
+ }, //注册转化方法
50
+ formatValues(value = {}, formatKey = "inputValue") {
51
+ const valKeys = Object.keys(value).length;
52
+ if (!valKeys) {
53
+ return {};
54
+ }
55
+ let newValue = { ...value };
56
+ const keys = Object.keys(formatSourceData);
57
+ keys.forEach((key) => {
58
+ const format = formatSourceData[key]?.[formatKey];
59
+ if (!format) {
60
+ return;
61
+ }
62
+ const resultValue = format(value);
63
+ Reflect.deleteProperty(newValue, key);
64
+ newValue = {
65
+ ...newValue,
66
+ ...resultValue,
67
+ };
68
+ });
69
+ return newValue;
70
+ }, //转化方法
71
+ dispatch(action, ...args) {
72
+ const { key, name } = action;
73
+ const items = dispatchSourceData[key];
74
+ if (!items) {
75
+ return;
76
+ }
77
+ const { keysFn, defaultFn } = items;
78
+ if (name) {
79
+ return keysFn[name]?.(...args);
80
+ }
81
+ const fnArrays = Object.keys(keysFn).map((itemKey) => {
82
+ return keysFn[itemKey];
83
+ }); //不存在name就合并
84
+ [...fnArrays, ...defaultFn].forEach((fn) => {
85
+ fn(...args);
86
+ });
87
+ },
88
+ addDispatchListener(action, fn) {
89
+ const { key, name } = action;
90
+ const items = dispatchSourceData[key];
91
+ if (!items) {
92
+ dispatchSourceData[key] = norAddItemDispatch(name, fn);
93
+ return;
94
+ }
95
+ const { keysFn, defaultFn } = items;
96
+ if (name) {
97
+ keysFn[name] = fn;
98
+ } else {
99
+ defaultFn.push(fn);
100
+ }
101
+ dispatchSourceData[key] = {
102
+ keysFn,
103
+ defaultFn,
104
+ };
105
+ },
106
+ removeDispatchListener(action) {
107
+ if (!action) {
108
+ dispatchSourceData = {};
109
+ return;
110
+ }
111
+ const { key, name } = action;
112
+ const items = dispatchSourceData[key];
113
+ if (!items) {
114
+ return;
115
+ }
116
+ if (name) {
117
+ const { keysFn } = items;
118
+ Reflect.deleteProperty(keysFn, name);
119
+ items.keysFn = keysFn;
120
+ dispatchSourceData[key] = items;
121
+ return;
122
+ }
123
+ Reflect.deleteProperty(dispatchSourceData, key);
124
+ },
125
+ outputValues(value) {
126
+ return this.formatValues(value, "outputValue");
127
+ },
128
+ ...form,
129
+ setFieldsValue(values) {
130
+ if (!isLoading){
131
+ cacheValues = values;
132
+ return;
133
+ }
134
+ const newValue = this.formatValues(values);
135
+ form.setFieldsValue(newValue);
136
+ },
137
+ validateFields(nameList) {
138
+ return new Promise((resolve) => {
139
+ form.validateFields(nameList).then((value) => {
140
+ const result = this.formatValues(value, "outputValue");
141
+ return resolve(result);
142
+ });
143
+ });
144
+ },
145
+ };
146
+ }, []);
147
+ };
@@ -0,0 +1,100 @@
1
+ import { useMemo } from "react";
2
+ import type {
3
+ FormItemWithRender,
4
+ HFormItemProps,
5
+ HFormProps,
6
+ HItemProps,
7
+ } from "@/components/Form/modal";
8
+ import FormConfig, { placeholderConfig } from "../config";
9
+ import type { Rule } from "rc-field-form/lib/interface";
10
+ import type { FormInstance } from "antd";
11
+
12
+ const mathRequired = (configItem: HFormItemProps, form: FormInstance) => {
13
+ const { required, placeholder, rules, type = "input" } = configItem;
14
+ let resultRequired = false;
15
+ const dom = FormConfig[type];
16
+ const resultRules = rules?.map((item) => {
17
+ let eachItem = item;
18
+ if (typeof item === "function") {
19
+ eachItem = item(form);
20
+ }
21
+
22
+ const { required: itemRequired, message } = eachItem as any;
23
+ if (itemRequired) {
24
+ resultRequired = itemRequired;
25
+ }
26
+ if (itemRequired && !message) {
27
+ return {
28
+ ...eachItem,
29
+ required: itemRequired,
30
+ message: !!dom?.requiredErrMsg
31
+ ? dom.requiredErrMsg(configItem)
32
+ : placeholder,
33
+ };
34
+ }
35
+ return eachItem;
36
+ });
37
+ return {
38
+ required: typeof required === "boolean" ? required : resultRequired,
39
+ rules: resultRules as Rule[],
40
+ };
41
+ }; //是否必填
42
+ const matchDefaultPlaceholder = (props: HFormItemProps) => {
43
+ const { label, placeholder, type = "input" } = props;
44
+ const dom = FormConfig[type];
45
+ if (placeholder) {
46
+ return placeholder;
47
+ }
48
+ if (dom?.placeholder) {
49
+ return dom.placeholder(props);
50
+ }
51
+ if (placeholderConfig.inputType.indexOf(type) !== -1) {
52
+ return `请输入${label}`;
53
+ }
54
+ return `请选择${label}`;
55
+ }; //自动构建
56
+ const defaultRenderMaker = (props: HFormItemProps) => {
57
+ const { render, type = "input", itemProps = {}, ...componentProps } = props;
58
+ const dom = FormConfig[type];
59
+ return (form: FormInstance) => {
60
+ const Component = !!dom?.Component ? dom.Component : dom;
61
+ const node = Component && (
62
+ <Component {...componentProps} {...itemProps} form={form} />
63
+ );
64
+ if (render) {
65
+ return render(props, node, form);
66
+ }
67
+ return node;
68
+ };
69
+ };
70
+
71
+ const defaultPlaceholderPropsMaker = (props: HFormItemProps) => {
72
+ const placeholder = matchDefaultPlaceholder(props);
73
+ return {
74
+ ...props,
75
+ placeholder,
76
+ render: defaultRenderMaker({ ...props, placeholder }),
77
+ };
78
+ }; //组装参数
79
+ const itemControl = (
80
+ item: HItemProps,
81
+ form: FormInstance
82
+ ): FormItemWithRender => {
83
+ const { render, ...defaultProps } = defaultPlaceholderPropsMaker(item);
84
+ const { rules, required } = mathRequired(defaultProps, form);
85
+ return {
86
+ ...defaultProps,
87
+ required,
88
+ rules,
89
+ render,
90
+ };
91
+ };
92
+ type InitConfigModal = Required<Pick<HFormProps, "configData" | "form">>;
93
+
94
+ export default ({ configData, form }: InitConfigModal) => {
95
+ return useMemo(() => {
96
+ return configData.map((item) => {
97
+ return itemControl(item, form);
98
+ });
99
+ }, [configData]);
100
+ };
@@ -0,0 +1,22 @@
1
+ @import "../styles/local.less";
2
+ .@{ant-prefix}-hw-form-item-colon:after {
3
+ position: relative;
4
+ top: -0.5px;
5
+ margin: 0 0 0 2px;
6
+ content: ":";
7
+ }
8
+ .@{ant-prefix}-hw-form-item-required:before {
9
+ display: inline-block;
10
+ margin-right: 4px;
11
+ color: #ff4d4f;
12
+ font-size: 14px;
13
+ font-family: SimSun, sans-serif;
14
+ line-height: 1;
15
+ content: "*";
16
+ }
17
+
18
+ .@{ant-prefix}-hw-form-base-item {
19
+ display: flex;
20
+ align-items: center;
21
+ min-height: 32px;
22
+ }
@@ -0,0 +1,79 @@
1
+ import { Form } from "antd";
2
+ import type { HFormProps } from "./modal";
3
+ import Item from "./FormItem";
4
+ import { useCurrentForm, useSub } from "./hooks";
5
+ import { FormContext } from "./Context";
6
+ import PageHandler from "../PageHandler";
7
+ import useInitConfigData from "./hooks/useInitConfigData";
8
+ import { useEffect } from "react";
9
+ import { useRequest } from "ahooks";
10
+ import InitSet from "./InitSet";
11
+
12
+ export default ({
13
+ configData,
14
+ labelWidth,
15
+ form,
16
+ request,
17
+ onFinish,
18
+ infoRequest,
19
+ valueType = "float",
20
+ initialValues,
21
+ ...props
22
+ }: HFormProps) => {
23
+ const hForm = useCurrentForm(form);
24
+ const newConfigData = useInitConfigData({
25
+ configData,
26
+ form: hForm,
27
+ });
28
+ const { run, loading } = useSub({
29
+ request,
30
+ onFinish,
31
+ valueType,
32
+ form: hForm,
33
+ });
34
+ const {
35
+ run: infoRun,
36
+ loading: infoLoading,
37
+ error: infoErr,
38
+ data: infoData,
39
+ } = useRequest(async () => {
40
+ let setValue = initialValues;
41
+ if (!initialValues && !infoRequest) {
42
+ return {};
43
+ }
44
+ if (infoRequest) {
45
+ setValue = await infoRequest();
46
+ }
47
+ hForm.setFieldsValue(setValue);
48
+ return setValue||{};
49
+ });
50
+ useEffect(() => {
51
+ return () => {
52
+ hForm.removeDispatchListener();
53
+ };
54
+ }, []);
55
+ return (
56
+ <PageHandler
57
+ loading={infoLoading}
58
+ error={infoErr}
59
+ data={infoData}
60
+ reload={infoRun}
61
+ >
62
+ <FormContext.Provider value={{ loading, form: hForm, valueType }}>
63
+ <Form form={hForm} onFinish={run} {...props}>
64
+ {newConfigData.map((itemData, index) => {
65
+ const { labelWidth: itemLabelWidth } = itemData;
66
+ return (
67
+ <Item
68
+ {...itemData}
69
+ key={index}
70
+ labelWidth={itemLabelWidth || labelWidth}
71
+ />
72
+ );
73
+ })}
74
+ <InitSet />
75
+ </Form>
76
+ </FormContext.Provider>
77
+ </PageHandler>
78
+ );
79
+ };
@@ -0,0 +1,154 @@
1
+ import type { FormInstance, FormItemProps, FormProps } from "antd";
2
+ import type { HCheckboxProps } from "@/components/CheckboxGroup/modal";
3
+ import type React from "react";
4
+ import type {
5
+ HButtonProps,
6
+ HInputProps,
7
+ HSelectInputProps,
8
+ } from "@/components/Input/modal";
9
+ import type { HRadioGroupProps } from "@/components/RadioGroup";
10
+ import type { HSelectProps } from "@/components/Select/modal";
11
+ import type { ButtonProps } from "antd/es";
12
+ import type { HSwitchProps } from "@/components/Switch";
13
+ import type {
14
+ HDatePickerProps,
15
+ HRangePickerProps,
16
+ HTimePickerProps,
17
+ } from "@/components/TDPicker/modal";
18
+ import type { TextAreaProps } from "antd/es/input";
19
+ import type { IUpLoadProps } from "@/components/Upload/modal";
20
+ import type { SelectProps } from "antd";
21
+ import type { RangePickerProps } from "antd/es/date-picker";
22
+ import type {
23
+ PromiseFnResult,
24
+ ValueCheckMapModal,
25
+ ValueSwitchMapModal,
26
+ DateRangePickerValueMapModal,
27
+ } from "../modal";
28
+ import type { ForwardedRef } from "react";
29
+ type RenderFun = (
30
+ props: HItemProps,
31
+ node: React.ReactNode,
32
+ form: FormInstance
33
+ ) => void;
34
+ type ItemPropsType =
35
+ | HCheckboxProps
36
+ | HInputProps
37
+ | HSelectInputProps
38
+ | HButtonProps
39
+ | HRadioGroupProps
40
+ | HSelectProps
41
+ | ButtonProps
42
+ | HSwitchProps
43
+ | HDatePickerProps
44
+ | HRangePickerProps
45
+ | HTimePickerProps
46
+ | TextAreaProps
47
+ | IUpLoadProps;
48
+
49
+ export interface HoverModal {
50
+ text?: string;
51
+ icon?: React.ReactNode;
52
+ }
53
+ type HelperModal = (form: HFormInstance) => React.ReactNode | string;
54
+
55
+ export type HideModal = (form: HFormInstance) => boolean;
56
+
57
+ export type AddDispatchListenerFn = (action: ActionModal, fn: argsFn) => void;
58
+
59
+ export interface HItemProps extends Omit<FormItemProps, "name"> {
60
+ type?: string;
61
+ itemProps?: ItemPropsType;
62
+ render?: RenderFun;
63
+ helper?: HelperModal | string;
64
+ hover?: string | HoverModal;
65
+ // formItems?: HItemProps[]; 保留感觉没必要
66
+ labelWidth?: number;
67
+ hide?: boolean | HideModal;
68
+ placeholder?: string | string[];
69
+ // formatKeys?: string[];
70
+ name?: string;
71
+ }
72
+
73
+ export interface HFormProps<T = any, R = any> extends Omit<FormProps, "form"> {
74
+ configData: HItemProps[];
75
+ labelWidth?: number;
76
+ request?: PromiseFnResult<T, R>;
77
+ infoRequest?: () => Promise<T>;
78
+ valueType?: string;
79
+ form?: HFormInstance;
80
+ }
81
+
82
+ export interface HFormItemProps extends HItemProps {
83
+ required?: boolean;
84
+ value?: any;
85
+ onChange?: (val: any, item: any) => void;
86
+ }
87
+ export interface FormItemWithRender extends Omit<HFormItemProps, "render"> {
88
+ render: (form: HFormInstance) => React.ReactNode;
89
+ }
90
+ export type argsFn = (...args: any[]) => void;
91
+ export interface FormContextProps {
92
+ loading?: boolean;
93
+ form: HFormInstance;
94
+ valueType?: string;
95
+ }
96
+ interface ConfigUploadProps {
97
+ exFiles?: string[];
98
+ maxSize?: number;
99
+ request?: PromiseFnResult;
100
+ }
101
+
102
+ export interface IFormConfigContextProps {
103
+ fieldNames?: SelectProps["fieldNames"];
104
+ valueCheckMap?: ValueCheckMapModal;
105
+ valueSwitchMap?: ValueSwitchMapModal;
106
+ valueRangePickerValueMap?: DateRangePickerValueMapModal;
107
+ dateRanges?: RangePickerProps["ranges"];
108
+ uploadProps?: ConfigUploadProps;
109
+ }
110
+ interface ActionModal {
111
+ key: string;
112
+ name?: string;
113
+ }
114
+ export interface HFormInstance extends FormInstance {
115
+ addFormat: (name: string, formats?: FormatItemModal) => void;
116
+ initValues: VoidFunction;
117
+ formatValues: (
118
+ values?: Record<string, any>,
119
+ formatKey?: string
120
+ ) => Record<string, any>;
121
+ dispatch: (action: ActionModal, ...args: any[]) => void;
122
+ outputValues: (values?: Record<string, any>) => Record<string, any>;
123
+ addDispatchListener: AddDispatchListenerFn;
124
+ removeDispatchListener: (action?: ActionModal, fn?: argsFn) => void;
125
+ }
126
+
127
+ export interface ConnectConfigModal {
128
+ format?: Record<string, addFormatItemModal>;
129
+ }
130
+
131
+ type ValueFormat = (value: Record<string, any>) => Record<string, any>;
132
+
133
+ export interface FormatItemModal {
134
+ inputValue: ValueFormat;
135
+ outputValue: ValueFormat;
136
+ }
137
+
138
+ type addValueFormat = (
139
+ item: HFormItemProps,
140
+ value: Record<string, any>
141
+ ) => Record<string, any>;
142
+
143
+ export interface addFormatItemModal {
144
+ inputValue: addValueFormat;
145
+ outputValue: addValueFormat;
146
+ }
147
+
148
+ export interface ConnectResultProps extends HFormItemProps {
149
+ addFormat?: (format: Record<string, addFormatItemModal>) => void;
150
+ addDispatchListener?: (key: string, fn: argsFn) => void;
151
+ ref?: ForwardedRef<any>;
152
+ value?: any;
153
+ onChange?: (value: any, item?: any) => void;
154
+ }
@@ -1,9 +1,9 @@
1
1
  import { Input, Button } from "antd";
2
- import type { HButtonPropsProps } from "./modal";
3
2
  import React from "react";
4
3
  import { useRequest } from "ahooks";
4
+ import type { HButtonInputProps } from "./modal";
5
5
 
6
- const Index: React.FC<HButtonPropsProps> = ({
6
+ const Index: React.FC<HButtonInputProps> = ({
7
7
  buttonProps = {},
8
8
  value,
9
9
  onChange,
@@ -21,18 +21,18 @@ const Index: React.FC<HButtonPropsProps> = ({
21
21
  const change = (e) => {
22
22
  onChange?.(e.target.value);
23
23
  };
24
- const click = async (e) => {
24
+ const click = async () => {
25
25
  let result = value;
26
26
  if (request) {
27
27
  result = await run(value);
28
28
  }
29
- onClick?.(result, e);
29
+ onClick?.(result, onChange);
30
30
  };
31
31
 
32
32
  return (
33
33
  <Input.Group compact style={{ display: "flex" }}>
34
34
  <Input {...props} style={{ flex: 1 }} value={value} onChange={change} />
35
- <Button {...oProps} type={type} onClick={click} loading={loading}>
35
+ <Button {...oProps} type={type} onClick={click} loading={loading} style={{marginLeft:4}}>
36
36
  {children}
37
37
  </Button>
38
38
  </Input.Group>