@hw-component/form 0.0.1 → 0.0.2-bate

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 (326) hide show
  1. package/LICENSE +201 -0
  2. package/es/CheckboxGroup/CheckBox/index.d.ts +4 -0
  3. package/es/CheckboxGroup/CheckBox/index.js +40 -0
  4. package/es/CheckboxGroup/hooks.d.ts +5 -0
  5. package/es/CheckboxGroup/hooks.js +123 -0
  6. package/es/CheckboxGroup/index.d.ts +3 -0
  7. package/es/CheckboxGroup/index.js +89 -0
  8. package/es/CheckboxGroup/modal.d.ts +13 -0
  9. package/es/Form/Context/FormConfigProvider.d.ts +5 -0
  10. package/es/Form/Context/FormConfigProvider.js +47 -0
  11. package/es/Form/Context/index.d.ts +5 -0
  12. package/es/Form/Context/index.js +11 -0
  13. package/es/Form/FormItem/BasicItem.d.ts +4 -0
  14. package/es/Form/FormItem/BasicItem.js +73 -0
  15. package/es/Form/FormItem/Helper.d.ts +7 -0
  16. package/es/Form/FormItem/Helper.js +24 -0
  17. package/es/Form/FormItem/RegularFormItem.d.ts +4 -0
  18. package/es/Form/FormItem/RegularFormItem.js +15 -0
  19. package/es/Form/FormItem/UpFormItem.d.ts +4 -0
  20. package/es/Form/FormItem/UpFormItem.js +31 -0
  21. package/es/Form/FormItem/hooks.d.ts +10 -0
  22. package/es/Form/FormItem/hooks.js +38 -0
  23. package/es/Form/FormItem/index.d.ts +4 -0
  24. package/es/Form/FormItem/index.js +11 -0
  25. package/es/Form/HFormConnect.d.ts +6 -0
  26. package/es/Form/HFormConnect.js +54 -0
  27. package/es/Form/InitSet.d.ts +6 -0
  28. package/es/Form/InitSet.js +16 -0
  29. package/es/Form/Label.d.ts +10 -0
  30. package/es/Form/Label.js +46 -0
  31. package/es/Form/config.d.ts +28 -0
  32. package/es/Form/config.js +43 -0
  33. package/es/Form/hooks/index.d.ts +12 -0
  34. package/es/Form/hooks/index.js +77 -0
  35. package/es/Form/hooks/useHForm.d.ts +3 -0
  36. package/es/Form/hooks/useHForm.js +111 -0
  37. package/es/Form/hooks/useInitConfigData.d.ts +4 -0
  38. package/es/Form/hooks/useInitConfigData.js +124 -0
  39. package/es/Form/index.d.ts +4 -0
  40. package/es/Form/index.js +73 -0
  41. package/es/Form/modal.d.ts +92 -0
  42. package/es/Input/ButtonInput.d.ts +4 -0
  43. package/es/Input/ButtonInput.js +80 -0
  44. package/es/Input/InputNumber.d.ts +4 -0
  45. package/es/Input/InputNumber.js +20 -0
  46. package/es/Input/SelectInput.d.ts +9 -0
  47. package/es/Input/SelectInput.js +94 -0
  48. package/es/Input/defaultConfig.d.ts +7 -0
  49. package/es/Input/defaultConfig.js +11 -0
  50. package/es/Input/index.d.ts +4 -0
  51. package/es/Input/index.js +13 -0
  52. package/es/Input/modal.d.ts +25 -0
  53. package/es/PageHandler/ErrorComponent.d.ts +4 -0
  54. package/es/PageHandler/ErrorComponent.js +33 -0
  55. package/es/PageHandler/LoadingComponent.d.ts +3 -0
  56. package/es/PageHandler/LoadingComponent.js +18 -0
  57. package/es/PageHandler/index.d.ts +4 -0
  58. package/es/PageHandler/index.js +24 -0
  59. package/es/PageHandler/modal.d.ts +6 -0
  60. package/es/RadioGroup/index.d.ts +9 -0
  61. package/es/RadioGroup/index.js +48 -0
  62. package/es/Select/components/AllSelect.d.ts +3 -3
  63. package/es/Select/components/AllSelect.js +31 -15
  64. package/es/Select/components/CheckBoxOption.js +2 -2
  65. package/es/Select/components/DropdownComponent.js +2 -2
  66. package/es/Select/components/NoFindItem.js +2 -2
  67. package/es/Select/components/NotFoundContent.js +3 -5
  68. package/es/Select/defaultConfig.d.ts +0 -1
  69. package/es/Select/defaultConfig.js +3 -7
  70. package/es/Select/hooks/changeHooks.d.ts +1 -1
  71. package/es/Select/hooks/changeHooks.js +9 -5
  72. package/es/Select/hooks/norHooks.d.ts +4 -6
  73. package/es/Select/hooks/norHooks.js +20 -37
  74. package/es/Select/index.d.ts +1 -1
  75. package/es/Select/index.js +31 -19
  76. package/es/Select/modal.d.ts +2 -2
  77. package/es/Select/utils.d.ts +2 -0
  78. package/es/Select/utils.js +39 -0
  79. package/es/Submit/index.d.ts +8 -0
  80. package/es/Submit/index.js +28 -0
  81. package/es/Switch/index.d.ts +11 -0
  82. package/es/Switch/index.js +45 -0
  83. package/es/TDPicker/RangePicker.d.ts +8 -0
  84. package/es/TDPicker/RangePicker.js +119 -0
  85. package/es/TDPicker/TimePicker.d.ts +4 -0
  86. package/es/TDPicker/TimePicker.js +31 -0
  87. package/es/TDPicker/hooks.d.ts +33 -0
  88. package/es/TDPicker/hooks.js +132 -0
  89. package/es/TDPicker/index.d.ts +4 -0
  90. package/es/TDPicker/index.js +33 -0
  91. package/es/TDPicker/modal.d.ts +28 -0
  92. package/es/TextArea/index.d.ts +4 -0
  93. package/es/Upload/Btn.d.ts +4 -0
  94. package/es/Upload/Btn.js +31 -0
  95. package/es/Upload/MediaTypeEle/TypeEle.d.ts +10 -0
  96. package/es/Upload/MediaTypeEle/TypeEle.js +40 -0
  97. package/es/Upload/MediaTypeEle/index.d.ts +4 -0
  98. package/es/Upload/MediaTypeEle/index.js +36 -0
  99. package/es/Upload/Preview/index.d.ts +6 -0
  100. package/es/Upload/Preview/index.js +21 -0
  101. package/es/Upload/UrlUpload/index.d.ts +4 -0
  102. package/es/Upload/UrlUpload/index.js +119 -0
  103. package/es/Upload/enums.d.ts +5 -0
  104. package/es/Upload/enums.js +10 -0
  105. package/es/Upload/hooks/change.d.ts +3 -0
  106. package/es/Upload/hooks/change.js +109 -0
  107. package/es/Upload/hooks/customRequest.d.ts +3 -0
  108. package/es/Upload/hooks/customRequest.js +69 -0
  109. package/es/Upload/hooks/propsMaker.d.ts +2 -0
  110. package/es/Upload/hooks/propsMaker.js +37 -0
  111. package/es/Upload/index.d.ts +4 -0
  112. package/es/Upload/index.js +106 -0
  113. package/es/Upload/modal.d.ts +28 -0
  114. package/es/Upload/util.d.ts +5 -0
  115. package/es/Upload/util.js +34 -0
  116. package/es/config.d.ts +2 -0
  117. package/es/config.js +64 -0
  118. package/es/hooks/index.d.ts +13 -0
  119. package/es/hooks/index.js +75 -0
  120. package/es/index.css +33 -1
  121. package/es/index.d.ts +20 -1
  122. package/es/index.js +25 -3
  123. package/es/modal.d.ts +15 -0
  124. package/lib/CheckboxGroup/CheckBox/index.d.ts +4 -0
  125. package/lib/CheckboxGroup/CheckBox/index.js +43 -0
  126. package/lib/CheckboxGroup/hooks.d.ts +5 -0
  127. package/lib/CheckboxGroup/hooks.js +124 -0
  128. package/lib/CheckboxGroup/index.d.ts +3 -0
  129. package/lib/CheckboxGroup/index.js +92 -0
  130. package/lib/CheckboxGroup/modal.d.ts +13 -0
  131. package/lib/Form/Context/FormConfigProvider.d.ts +5 -0
  132. package/lib/Form/Context/FormConfigProvider.js +51 -0
  133. package/lib/Form/Context/index.d.ts +5 -0
  134. package/lib/Form/Context/index.js +14 -0
  135. package/lib/Form/FormItem/BasicItem.d.ts +4 -0
  136. package/lib/Form/FormItem/BasicItem.js +76 -0
  137. package/lib/Form/FormItem/Helper.d.ts +7 -0
  138. package/lib/Form/FormItem/Helper.js +27 -0
  139. package/lib/Form/FormItem/RegularFormItem.d.ts +4 -0
  140. package/lib/Form/FormItem/RegularFormItem.js +18 -0
  141. package/lib/Form/FormItem/UpFormItem.d.ts +4 -0
  142. package/lib/Form/FormItem/UpFormItem.js +34 -0
  143. package/lib/Form/FormItem/hooks.d.ts +10 -0
  144. package/lib/Form/FormItem/hooks.js +41 -0
  145. package/lib/Form/FormItem/index.d.ts +4 -0
  146. package/lib/Form/FormItem/index.js +14 -0
  147. package/lib/Form/HFormConnect.d.ts +6 -0
  148. package/lib/Form/HFormConnect.js +57 -0
  149. package/lib/Form/InitSet.d.ts +6 -0
  150. package/lib/Form/InitSet.js +19 -0
  151. package/lib/Form/Label.d.ts +10 -0
  152. package/lib/Form/Label.js +49 -0
  153. package/lib/Form/config.d.ts +28 -0
  154. package/lib/Form/config.js +47 -0
  155. package/lib/Form/hooks/index.d.ts +12 -0
  156. package/lib/Form/hooks/index.js +80 -0
  157. package/lib/Form/hooks/useHForm.d.ts +3 -0
  158. package/lib/Form/hooks/useHForm.js +114 -0
  159. package/lib/Form/hooks/useInitConfigData.d.ts +4 -0
  160. package/lib/Form/hooks/useInitConfigData.js +127 -0
  161. package/lib/Form/index.d.ts +4 -0
  162. package/lib/Form/index.js +76 -0
  163. package/lib/Form/modal.d.ts +92 -0
  164. package/lib/Input/ButtonInput.d.ts +4 -0
  165. package/lib/Input/ButtonInput.js +83 -0
  166. package/lib/Input/InputNumber.d.ts +4 -0
  167. package/lib/Input/InputNumber.js +23 -0
  168. package/lib/Input/SelectInput.d.ts +9 -0
  169. package/lib/Input/SelectInput.js +98 -0
  170. package/lib/Input/defaultConfig.d.ts +7 -0
  171. package/lib/Input/defaultConfig.js +13 -0
  172. package/lib/Input/index.d.ts +4 -0
  173. package/lib/Input/index.js +16 -0
  174. package/lib/Input/modal.d.ts +25 -0
  175. package/lib/PageHandler/ErrorComponent.d.ts +4 -0
  176. package/lib/PageHandler/ErrorComponent.js +36 -0
  177. package/lib/PageHandler/LoadingComponent.d.ts +3 -0
  178. package/lib/PageHandler/LoadingComponent.js +21 -0
  179. package/lib/PageHandler/index.d.ts +4 -0
  180. package/lib/PageHandler/index.js +27 -0
  181. package/lib/PageHandler/modal.d.ts +6 -0
  182. package/lib/RadioGroup/index.d.ts +9 -0
  183. package/lib/RadioGroup/index.js +51 -0
  184. package/lib/Select/components/AllSelect.d.ts +3 -3
  185. package/lib/Select/components/AllSelect.js +29 -13
  186. package/lib/Select/components/NotFoundContent.js +1 -3
  187. package/lib/Select/defaultConfig.d.ts +0 -1
  188. package/lib/Select/defaultConfig.js +0 -5
  189. package/lib/Select/hooks/changeHooks.d.ts +1 -1
  190. package/lib/Select/hooks/changeHooks.js +7 -3
  191. package/lib/Select/hooks/norHooks.d.ts +4 -6
  192. package/lib/Select/hooks/norHooks.js +18 -35
  193. package/lib/Select/index.d.ts +1 -1
  194. package/lib/Select/index.js +26 -14
  195. package/lib/Select/modal.d.ts +2 -2
  196. package/lib/Select/utils.d.ts +2 -0
  197. package/lib/Select/utils.js +41 -0
  198. package/lib/Submit/index.d.ts +8 -0
  199. package/lib/Submit/index.js +31 -0
  200. package/lib/Switch/index.d.ts +11 -0
  201. package/lib/Switch/index.js +48 -0
  202. package/lib/TDPicker/RangePicker.d.ts +8 -0
  203. package/lib/TDPicker/RangePicker.js +122 -0
  204. package/lib/TDPicker/TimePicker.d.ts +4 -0
  205. package/lib/TDPicker/TimePicker.js +34 -0
  206. package/lib/TDPicker/hooks.d.ts +33 -0
  207. package/lib/TDPicker/hooks.js +139 -0
  208. package/lib/TDPicker/index.d.ts +4 -0
  209. package/lib/TDPicker/index.js +36 -0
  210. package/lib/TDPicker/modal.d.ts +28 -0
  211. package/lib/TextArea/index.d.ts +4 -0
  212. package/lib/Upload/Btn.d.ts +4 -0
  213. package/lib/Upload/Btn.js +34 -0
  214. package/lib/Upload/MediaTypeEle/TypeEle.d.ts +10 -0
  215. package/lib/Upload/MediaTypeEle/TypeEle.js +43 -0
  216. package/lib/Upload/MediaTypeEle/index.d.ts +4 -0
  217. package/lib/Upload/MediaTypeEle/index.js +39 -0
  218. package/lib/Upload/Preview/index.d.ts +6 -0
  219. package/lib/Upload/Preview/index.js +24 -0
  220. package/lib/Upload/UrlUpload/index.d.ts +4 -0
  221. package/lib/Upload/UrlUpload/index.js +122 -0
  222. package/lib/Upload/enums.d.ts +5 -0
  223. package/lib/Upload/enums.js +9 -0
  224. package/lib/Upload/hooks/change.d.ts +3 -0
  225. package/lib/Upload/hooks/change.js +110 -0
  226. package/lib/Upload/hooks/customRequest.d.ts +3 -0
  227. package/lib/Upload/hooks/customRequest.js +70 -0
  228. package/lib/Upload/hooks/propsMaker.d.ts +2 -0
  229. package/lib/Upload/hooks/propsMaker.js +38 -0
  230. package/lib/Upload/index.d.ts +4 -0
  231. package/lib/Upload/index.js +109 -0
  232. package/lib/Upload/modal.d.ts +28 -0
  233. package/lib/Upload/util.d.ts +5 -0
  234. package/lib/Upload/util.js +38 -0
  235. package/lib/config.d.ts +2 -0
  236. package/lib/config.js +65 -0
  237. package/lib/hooks/index.d.ts +13 -0
  238. package/lib/hooks/index.js +78 -0
  239. package/lib/index.css +33 -1
  240. package/lib/index.d.ts +20 -1
  241. package/lib/index.js +38 -3
  242. package/lib/modal.d.ts +15 -0
  243. package/package.json +4 -3
  244. package/scripts/rollup.config.js +3 -8
  245. package/scripts/webpack.config.js +6 -2
  246. package/src/Layout.tsx +4 -4
  247. package/src/components/CheckboxGroup/CheckBox/index.tsx +38 -0
  248. package/src/components/CheckboxGroup/hooks.ts +102 -0
  249. package/src/components/CheckboxGroup/index.tsx +79 -0
  250. package/src/components/CheckboxGroup/modal.ts +15 -0
  251. package/src/components/Form/Context/FormConfigProvider.tsx +38 -0
  252. package/src/components/Form/Context/index.tsx +14 -0
  253. package/src/components/Form/FormItem/BasicItem.tsx +70 -0
  254. package/src/components/Form/FormItem/Helper.tsx +26 -0
  255. package/src/components/Form/FormItem/RegularFormItem.tsx +7 -0
  256. package/src/components/Form/FormItem/UpFormItem.tsx +20 -0
  257. package/src/components/Form/FormItem/hooks.tsx +44 -0
  258. package/src/components/Form/FormItem/index.tsx +8 -0
  259. package/src/components/Form/HFormConnect.tsx +49 -0
  260. package/src/components/Form/InitSet.tsx +12 -0
  261. package/src/components/Form/Label.tsx +50 -0
  262. package/src/components/Form/config.ts +40 -0
  263. package/src/components/Form/hooks/index.ts +42 -0
  264. package/src/components/Form/hooks/useHForm.ts +89 -0
  265. package/src/components/Form/hooks/useInitConfigData.tsx +100 -0
  266. package/src/components/Form/index.less +22 -0
  267. package/src/components/Form/index.tsx +61 -0
  268. package/src/components/Form/modal.ts +142 -0
  269. package/src/components/Input/ButtonInput.tsx +41 -0
  270. package/src/components/Input/InputNumber.tsx +5 -0
  271. package/src/components/Input/SelectInput.tsx +74 -0
  272. package/src/components/Input/defaultConfig.ts +8 -0
  273. package/src/components/Input/index.tsx +6 -0
  274. package/src/components/Input/modal.ts +31 -0
  275. package/src/components/PageHandler/ErrorComponent.tsx +20 -0
  276. package/src/components/PageHandler/LoadingComponent.tsx +9 -0
  277. package/src/components/PageHandler/index.tsx +14 -0
  278. package/src/components/PageHandler/modal.ts +6 -0
  279. package/src/components/RadioGroup/index.tsx +45 -0
  280. package/src/components/Select/components/AllSelect.tsx +32 -16
  281. package/src/components/Select/components/DropdownComponent.tsx +1 -0
  282. package/src/components/Select/components/NotFoundContent.tsx +1 -1
  283. package/src/components/Select/defaultConfig.tsx +0 -5
  284. package/src/components/Select/hooks/changeHooks.tsx +14 -4
  285. package/src/components/Select/hooks/norHooks.ts +8 -19
  286. package/src/components/Select/index.less +20 -3
  287. package/src/components/Select/index.tsx +29 -17
  288. package/src/components/Select/modal.ts +9 -9
  289. package/src/components/Select/utils.ts +18 -0
  290. package/src/components/Submit/index.tsx +28 -0
  291. package/src/components/Switch/index.tsx +52 -0
  292. package/src/components/TDPicker/RangePicker.tsx +106 -0
  293. package/src/components/TDPicker/TimePicker.tsx +15 -0
  294. package/src/components/TDPicker/hooks.ts +150 -0
  295. package/src/components/TDPicker/index.tsx +22 -0
  296. package/src/components/TDPicker/modal.ts +30 -0
  297. package/src/components/TextArea/index.tsx +8 -0
  298. package/src/components/Upload/Btn.tsx +24 -0
  299. package/src/components/Upload/MediaTypeEle/TypeEle.tsx +26 -0
  300. package/src/components/Upload/MediaTypeEle/index.tsx +34 -0
  301. package/src/components/Upload/Preview/index.tsx +14 -0
  302. package/src/components/Upload/UrlUpload/index.tsx +91 -0
  303. package/src/components/Upload/enums.ts +5 -0
  304. package/src/components/Upload/hooks/change.ts +79 -0
  305. package/src/components/Upload/hooks/customRequest.ts +44 -0
  306. package/src/components/Upload/hooks/propsMaker.ts +20 -0
  307. package/src/components/Upload/index.tsx +85 -0
  308. package/src/components/Upload/modal.ts +31 -0
  309. package/src/components/Upload/util.ts +27 -0
  310. package/src/components/config.ts +40 -0
  311. package/src/components/hooks/index.ts +53 -0
  312. package/src/components/index.tsx +21 -1
  313. package/src/components/modal.ts +15 -0
  314. package/src/components/styles/index.less +2 -0
  315. package/src/components/styles/local.less +1 -0
  316. package/src/pages/Checkbox/index.tsx +15 -0
  317. package/src/pages/DatePicker/index.tsx +33 -0
  318. package/src/pages/Form/index.tsx +146 -0
  319. package/src/pages/Input/index.tsx +22 -0
  320. package/src/pages/Radio/index.tsx +18 -0
  321. package/src/pages/Select/index.tsx +7 -4
  322. package/src/pages/Switch/index.tsx +18 -0
  323. package/src/pages/Upload/index.tsx +14 -0
  324. package/src/routes.tsx +45 -12
  325. package/es/Select/index.less.js +0 -5
  326. package/lib/Select/index.less.js +0 -8
@@ -0,0 +1,142 @@
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
+ type RenderFun = (
29
+ props: HItemProps,
30
+ node: React.ReactNode,
31
+ form: FormInstance
32
+ ) => void;
33
+ type ItemPropsType =
34
+ | HCheckboxProps
35
+ | HInputProps
36
+ | HSelectInputProps
37
+ | HButtonProps
38
+ | HRadioGroupProps
39
+ | HSelectProps
40
+ | ButtonProps
41
+ | HSwitchProps
42
+ | HDatePickerProps
43
+ | HRangePickerProps
44
+ | HTimePickerProps
45
+ | TextAreaProps
46
+ | IUpLoadProps;
47
+
48
+ export interface HoverModal {
49
+ text?: string;
50
+ icon?: React.ReactNode;
51
+ }
52
+ type HelperModal = (form: HFormInstance) => React.ReactNode | string;
53
+
54
+ export type HideModal = (form: HFormInstance) => boolean;
55
+
56
+ export interface HItemProps extends Omit<FormItemProps, "name"> {
57
+ type?: string;
58
+ itemProps?: ItemPropsType;
59
+ render?: RenderFun;
60
+ helper?: HelperModal;
61
+ hover?: string | HoverModal;
62
+ // formItems?: HItemProps[]; 保留感觉没必要
63
+ labelWidth?: number;
64
+ hide?: boolean | HideModal;
65
+ placeholder?: string | string[];
66
+ formatKeys?: string[];
67
+ name: string;
68
+ }
69
+
70
+ export interface HFormProps<T = any, R = any> extends Omit<FormProps, "form"> {
71
+ configData: HItemProps[];
72
+ labelWidth?: number;
73
+ request?: PromiseFnResult<T, R>;
74
+ infoRequest?: () => Promise<T>;
75
+ valueType?: string;
76
+ form?: HFormInstance;
77
+ }
78
+
79
+ export interface HFormItemProps extends HItemProps {
80
+ required?: boolean;
81
+ }
82
+ export interface FormItemWithRender extends Omit<HFormItemProps, "render"> {
83
+ render: (form: HFormInstance) => React.ReactNode;
84
+ }
85
+
86
+ export interface FormContextProps {
87
+ loading?: boolean;
88
+ form: HFormInstance;
89
+ valueType?: string;
90
+ }
91
+ interface ConfigUploadProps {
92
+ exFiles?: string[];
93
+ maxSize?: number;
94
+ request?: PromiseFnResult;
95
+ }
96
+
97
+ export interface IFormConfigContextProps {
98
+ fieldNames?: SelectProps["fieldNames"];
99
+ valueCheckMap?: ValueCheckMapModal;
100
+ valueSwitchMap?: ValueSwitchMapModal;
101
+ valueRangePickerValueMap?: DateRangePickerValueMapModal;
102
+ dateRanges?: RangePickerProps["ranges"];
103
+ uploadProps?: ConfigUploadProps;
104
+ }
105
+
106
+ export interface HFormInstance extends FormInstance {
107
+ addFormat: (name: string, formats?: FormatItemModal) => void;
108
+ initValues: (values?: Record<string, any>) => void;
109
+ formatValues: (
110
+ values?: Record<string, any>,
111
+ formatKey?: string
112
+ ) => Record<string, any>;
113
+ dispatch: (key: string) => void;
114
+ outputValues: (values?: Record<string, any>) => Record<string, any>;
115
+ addDispatchListener: (key: string, fn: VoidFunction) => void;
116
+ removeDispatchListener: (key?: string) => void;
117
+ }
118
+
119
+ export interface ConnectConfigModal {
120
+ format?: Record<string, addFormatItemModal>;
121
+ }
122
+
123
+ type ValueFormat = (value: Record<string, any>) => Record<string, any>;
124
+
125
+ export interface FormatItemModal {
126
+ inputValue: ValueFormat;
127
+ outputValue: ValueFormat;
128
+ }
129
+
130
+ type addValueFormat = (
131
+ item: HFormItemProps,
132
+ value: Record<string, any>
133
+ ) => Record<string, any>;
134
+
135
+ export interface addFormatItemModal {
136
+ inputValue: addValueFormat;
137
+ outputValue: addValueFormat;
138
+ }
139
+
140
+ export interface ConnectResultProps {
141
+ addFormat?: (format: Record<string, addFormatItemModal>) => void;
142
+ }
@@ -0,0 +1,41 @@
1
+ import { Input, Button } from "antd";
2
+ import React from "react";
3
+ import { useRequest } from "ahooks";
4
+ import type { HButtonInputProps } from "./modal";
5
+
6
+ const Index: React.FC<HButtonInputProps> = ({
7
+ buttonProps = {},
8
+ value,
9
+ onChange,
10
+ children,
11
+ request,
12
+ ...props
13
+ }) => {
14
+ const { onClick, type = "primary", ...oProps } = buttonProps;
15
+ const { run, loading } = useRequest(
16
+ (val) => {
17
+ return request?.(val);
18
+ },
19
+ { manual: true }
20
+ );
21
+ const change = (e) => {
22
+ onChange?.(e.target.value);
23
+ };
24
+ const click = async (e) => {
25
+ let result = value;
26
+ if (request) {
27
+ result = await run(value);
28
+ }
29
+ onClick?.(result, e);
30
+ };
31
+
32
+ return (
33
+ <Input.Group compact style={{ display: "flex" }}>
34
+ <Input {...props} style={{ flex: 1 }} value={value} onChange={change} />
35
+ <Button {...oProps} type={type} onClick={click} loading={loading}>
36
+ {children}
37
+ </Button>
38
+ </Input.Group>
39
+ );
40
+ };
41
+ export default Index;
@@ -0,0 +1,5 @@
1
+ import type { InputNumberProps } from "antd";
2
+ import { InputNumber } from "antd";
3
+ export default ({ style = { width: "100%" }, ...props }: InputNumberProps) => {
4
+ return <InputNumber style={style} {...props} />;
5
+ };
@@ -0,0 +1,74 @@
1
+ import { Input } from "antd";
2
+ import type { HSelectInputProps } from "./modal";
3
+ import HSelect from "../Select";
4
+ import { defaultSelectStyle, defaultValueName } from "./defaultConfig";
5
+ import HFormConnect from "../Form/HFormConnect";
6
+ export enum SelectInputType {
7
+ input,
8
+ select,
9
+ }
10
+ export const Index = ({
11
+ selectProps = {},
12
+ value = {},
13
+ onChange,
14
+ valueName = defaultValueName,
15
+ addFormat,
16
+ ...props
17
+ }: HSelectInputProps) => {
18
+ const { input = "", select = "" } = valueName;
19
+ const { [input]: inputVal, [select]: selectVal } = value;
20
+ const {
21
+ style = defaultSelectStyle,
22
+ placeholder = "请选择",
23
+ ...sProps
24
+ } = selectProps;
25
+ const change = (val, key) => {
26
+ const newVal = { ...value };
27
+ newVal[key] = val;
28
+ const type = key === input ? SelectInputType.input : SelectInputType.select;
29
+ onChange?.(newVal, type);
30
+ };
31
+ addFormat?.({
32
+ float: {
33
+ inputValue: (item, initValue) => {
34
+ const { name } = item;
35
+ const resultObj = {};
36
+ Object.values(valueName).forEach((key) => {
37
+ resultObj[key] = initValue[key];
38
+ });
39
+ return {
40
+ [name]: resultObj,
41
+ };
42
+ },
43
+ outputValue: (item, outputValue) => {
44
+ const { name } = item;
45
+ const { [name]: itemVal = {} } = outputValue;
46
+ const newItemVal = { [itemVal[select]]: itemVal[input] };
47
+ return {
48
+ ...newItemVal,
49
+ };
50
+ },
51
+ },
52
+ });
53
+ return (
54
+ <Input
55
+ value={inputVal}
56
+ onChange={(e) => {
57
+ change(e.target.value, input);
58
+ }}
59
+ addonBefore={
60
+ <HSelect
61
+ {...sProps}
62
+ style={style}
63
+ placeholder={placeholder}
64
+ value={selectVal}
65
+ onChange={(val) => {
66
+ change(val, select);
67
+ }}
68
+ />
69
+ }
70
+ {...props}
71
+ />
72
+ );
73
+ };
74
+ export default HFormConnect(Index);
@@ -0,0 +1,8 @@
1
+ export const defaultSelectStyle = {
2
+ width: 128,
3
+ };
4
+
5
+ export const defaultValueName = {
6
+ input: "input",
7
+ select: "select",
8
+ };
@@ -0,0 +1,6 @@
1
+ import { Input } from "antd";
2
+ import type { HInputProps } from "./modal";
3
+
4
+ export default ({ ...props }: HInputProps) => {
5
+ return <Input {...props} />;
6
+ };
@@ -0,0 +1,31 @@
1
+ import type { ButtonProps, InputProps } from "antd";
2
+ import type { HSelectProps } from "../Select/modal";
3
+ import type { SelectInputType } from "./SelectInput";
4
+ import type { PromiseFnResult } from "../modal";
5
+ import type { addFormatItemModal } from "../Form/modal";
6
+
7
+ export type HInputProps = InputProps;
8
+
9
+ interface ValueNameModal {
10
+ input?: string;
11
+ select?: string;
12
+ }
13
+
14
+ export interface HSelectInputProps
15
+ extends Omit<HInputProps, "value" | "onChange"> {
16
+ selectProps?: HSelectProps;
17
+ value?: Record<string, any>;
18
+ onChange?: (value: Record<string, any>, type: SelectInputType) => void;
19
+ valueName?: ValueNameModal;
20
+ addFormat?: (config: Record<string, addFormatItemModal>) => void;
21
+ }
22
+ export interface HButtonProps extends Omit<ButtonProps, "onClick"> {
23
+ onClick: (
24
+ value: string | readonly string[] | number | undefined,
25
+ e: HTMLElement
26
+ ) => void;
27
+ }
28
+ export interface HButtonInputProps extends HInputProps {
29
+ buttonProps?: HButtonProps;
30
+ request?: PromiseFnResult;
31
+ }
@@ -0,0 +1,20 @@
1
+ import { Button, Row, Space, Typography } from "antd";
2
+ import { ExclamationCircleOutlined } from "@ant-design/icons";
3
+ import type { IHPageHandler } from "./modal";
4
+
5
+ const { Text } = Typography;
6
+ export default ({ error, reload }: IHPageHandler) => {
7
+ return (
8
+ <Row justify={"center"} align={"middle"} style={{ height: 125 }}>
9
+ <Space align={"center"} direction={"vertical"}>
10
+ <Text type={"danger"}>
11
+ <ExclamationCircleOutlined size={24} />
12
+ </Text>
13
+ <Text type={"danger"}>{error?.message}</Text>
14
+ <Button type="primary" size={"small"} onClick={reload}>
15
+ 重新加载
16
+ </Button>
17
+ </Space>
18
+ </Row>
19
+ );
20
+ };
@@ -0,0 +1,9 @@
1
+ import { Row, Spin } from "antd";
2
+
3
+ export default () => {
4
+ return (
5
+ <Row justify={"center"} align={"middle"} style={{ height: 125 }}>
6
+ <Spin size="large" />
7
+ </Row>
8
+ );
9
+ };
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import Loading from "./LoadingComponent";
3
+ import ErrorComponent from "./ErrorComponent";
4
+ import type { IHPageHandler } from "./modal";
5
+ const Index: React.FC<IHPageHandler> = ({ error, data, reload, children }) => {
6
+ if (error) {
7
+ return <ErrorComponent error={error} reload={reload} />;
8
+ }
9
+ if (data) {
10
+ return <>{children}</>;
11
+ }
12
+ return <Loading />;
13
+ };
14
+ export default Index;
@@ -0,0 +1,6 @@
1
+ export interface IHPageHandler<T = any> {
2
+ loading?: boolean;
3
+ error?: Error;
4
+ reload: VoidFunction;
5
+ data?: T;
6
+ }
@@ -0,0 +1,45 @@
1
+ import { Radio } from "antd";
2
+ import type { SelectProps, RadioGroupProps } from "antd/es";
3
+ import { useMemo } from "react";
4
+ import { useMatchConfigProps } from "../hooks";
5
+
6
+ export interface HRadioGroupProps
7
+ extends Omit<RadioGroupProps, "onChange" | "options"> {
8
+ onChange?: (value: any) => void;
9
+ fieldNames?: SelectProps["fieldNames"];
10
+ options?: (Record<string, any> | string | number)[];
11
+ }
12
+ export default ({
13
+ value,
14
+ options,
15
+ onChange,
16
+ fieldNames: propsFieldNames,
17
+ ...props
18
+ }: HRadioGroupProps) => {
19
+ const { fieldNames = {} } = useMatchConfigProps({
20
+ fieldNames: propsFieldNames,
21
+ });
22
+ const relOptions = useMemo(() => {
23
+ return options?.map((item) => {
24
+ const type = typeof item;
25
+ if (type === "string" || type === "number") {
26
+ return item;
27
+ }
28
+ const { label: labelKey = "", value: valueKey = "" } = fieldNames;
29
+ return {
30
+ label: item[labelKey],
31
+ value: item[valueKey],
32
+ };
33
+ });
34
+ }, [options, fieldNames]);
35
+ return (
36
+ <Radio.Group
37
+ options={relOptions as RadioGroupProps["options"]}
38
+ value={value}
39
+ onChange={(e) => {
40
+ onChange?.(e.target.value);
41
+ }}
42
+ {...props}
43
+ />
44
+ );
45
+ };
@@ -1,38 +1,54 @@
1
1
  import type { HSelectProps } from "@/components/Select/modal";
2
2
  import { Checkbox, Space } from "antd";
3
- import styles from "../index.less";
3
+ import { itemOpProvider } from "../utils";
4
+ import { useClassName } from "../../hooks";
5
+ import React from "react";
6
+
4
7
  interface IProps extends HSelectProps {
5
8
  checked?: boolean;
6
9
  }
7
- export default ({
10
+ const useRootClassName = (checked: boolean) => {
11
+ const norClassNames = ["select-item", "select-item-option"];
12
+ return checked
13
+ ? [...norClassNames, "select-item-option-selected"]
14
+ : norClassNames;
15
+ };
16
+ const Index: React.FC<IProps> = ({
8
17
  allSelect,
9
18
  mode,
10
19
  onChange,
11
20
  value,
12
21
  serviceSearch,
13
22
  options,
14
- }: IProps) => {
15
- if (!allSelect || mode !== "multiple" || serviceSearch) {
16
- return null;
17
- }
23
+ fieldNames = {},
24
+ children,
25
+ }) => {
18
26
  const opLen = options?.length || 0;
19
27
  const checked = (value as any[])?.length >= opLen;
28
+ const classNames = useRootClassName(checked);
29
+ const optionsClassName = useClassName(classNames);
30
+ const allCheckBox = useClassName("hw-all-check-box");
20
31
  const change = () => {
21
32
  if (!checked) {
22
- onChange?.(options);
33
+ const subItemOps = itemOpProvider(options, fieldNames);
34
+ onChange?.(options, subItemOps);
23
35
  return;
24
36
  }
25
- onChange?.([]);
37
+ onChange?.([], []);
26
38
  };
39
+ if (!allSelect || mode !== "multiple" || serviceSearch) {
40
+ return <>{children}</>;
41
+ }
27
42
  return (
28
- <div
29
- className={`ant-select-item ant-select-item-option ${styles.option}`}
30
- onClick={change}
31
- >
32
- <Space>
33
- <Checkbox checked={checked} />
34
- 全部
35
- </Space>
43
+ <div className={allCheckBox}>
44
+ <div className={optionsClassName} onClick={change}>
45
+ <Space>
46
+ <Checkbox checked={checked} />
47
+ 全部
48
+ </Space>
49
+ </div>
50
+ {children}
36
51
  </div>
37
52
  );
38
53
  };
54
+ export default Index;
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { Spin, Row, Space, Typography } from "antd";
3
3
  import NotFoundContent from "./NotFoundContent";
4
+
4
5
  interface IProps {
5
6
  loading?: boolean;
6
7
  options?: any[];
@@ -11,7 +11,7 @@ export default ({ error, reload }: IProps) => {
11
11
  <Row justify={"center"} align={"middle"} style={{ height: 125 }}>
12
12
  <Space align={"center"} direction={"vertical"}>
13
13
  <Text type={"danger"}>
14
- <ExclamationCircleOutlined style={{ fontSize: 24 }} />
14
+ <ExclamationCircleOutlined size={24} />
15
15
  </Text>
16
16
  <Text type={"danger"}>{error.message}</Text>
17
17
  <Button type="primary" size={"small"} onClick={reload}>
@@ -16,11 +16,6 @@ export const defaultModeConfig: HSelectProps["modeConfig"] = {
16
16
  },
17
17
  };
18
18
 
19
- export const defaultFieldNames: HSelectProps["fieldNames"] = {
20
- label: "label",
21
- value: "value",
22
- };
23
-
24
19
  export const defaultSelectConfig = {
25
20
  noMatchItemRender: () => {
26
21
  return <NoFindItem label={"选项被删除,请重新选择"} />;
@@ -4,6 +4,7 @@ import type {
4
4
  } from "@/components/Select/modal";
5
5
  import { useEffect, useState } from "react";
6
6
  import type { FilterDataModal } from "@/components/Select/modal";
7
+ import { itemOpProvider } from "../utils";
7
8
 
8
9
  const single = ({ options, value, noMatchItemRender }: PartialHSelectProps) => {
9
10
  const newOptions = options || [];
@@ -108,10 +109,18 @@ const matchNotFind = (
108
109
  return tag({ options, value }, oldVale);
109
110
  }; //不匹配
110
111
  export const useValueChange = (params: PartialHSelectProps) => {
111
- const { labelInValue, onChange, value, options, mode, noMatchItemRender } =
112
- params;
112
+ const {
113
+ labelInValue,
114
+ onChange,
115
+ value,
116
+ options,
117
+ mode,
118
+ noMatchItemRender,
119
+ fieldNames = {},
120
+ } = params;
113
121
  const [val, setVal] = useState<any>();
114
- const change = (changeVal) => {
122
+
123
+ const change = (changeVal, itemOps) => {
115
124
  if (!onChange) {
116
125
  setVal(changeVal);
117
126
  return;
@@ -125,7 +134,8 @@ export const useValueChange = (params: PartialHSelectProps) => {
125
134
  return item.value;
126
135
  });
127
136
  }
128
- onChange(newChangeVal);
137
+ const subItemOps = itemOpProvider(itemOps, fieldNames);
138
+ onChange(newChangeVal, subItemOps);
129
139
  };
130
140
  useEffect(() => {
131
141
  if (options && value) {
@@ -1,29 +1,17 @@
1
1
  import { useState } from "react";
2
2
  import type {
3
- HSelectProps,
4
3
  OptionType,
5
4
  PartialHSelectProps,
6
5
  } from "@/components/Select/modal";
7
6
  import { useRequest } from "ahooks";
8
7
 
9
- const resultProvider = (
10
- data?: any[],
11
- fieldNames?: HSelectProps["fieldNames"]
12
- ) => {
13
- return data?.map((item) => {
14
- const { label = "label", value = "value" } = fieldNames || {};
15
- return {
16
- label: item[label],
17
- value: item[value],
18
- };
19
- });
20
- };
21
8
  export const useOptionReq = ({
22
9
  manual,
23
- fieldNames,
24
10
  request,
25
11
  options,
26
12
  serviceSearch,
13
+ showSearch,
14
+ onSearch: propsOnSearch,
27
15
  }: PartialHSelectProps) => {
28
16
  const [data, setData] = useState<OptionType[] | undefined>();
29
17
  const { run, loading, error } = useRequest(
@@ -32,11 +20,9 @@ export const useOptionReq = ({
32
20
  setData(undefined);
33
21
  }
34
22
  if (request) {
35
- const result = await request(params);
36
- return resultProvider(result, fieldNames);
23
+ return request(params);
37
24
  }
38
- const resultOpt = resultProvider(options, fieldNames);
39
- return Promise.resolve(resultOpt);
25
+ return Promise.resolve(options);
40
26
  },
41
27
  {
42
28
  manual,
@@ -48,16 +34,19 @@ export const useOptionReq = ({
48
34
  );
49
35
  const onSearch = (inputValue: string) => {
50
36
  if (!serviceSearch) {
37
+ propsOnSearch?.(inputValue);
51
38
  return;
52
39
  }
53
40
  run({ inputValue });
54
41
  };
42
+ const mathShowSearch = showSearch || serviceSearch;
55
43
  return {
56
44
  run,
57
45
  loading,
58
46
  error,
59
47
  data,
60
- onSearch,
48
+ onSearch: mathShowSearch ? onSearch : propsOnSearch,
49
+ mathShowSearch: showSearch || serviceSearch,
61
50
  };
62
51
  };
63
52
 
@@ -1,5 +1,22 @@
1
- .option {
2
- &:hover {
3
- background-color: #f5f5f5;
1
+ @import "../styles/local.less";
2
+ @all-check-box: ~"@{ant-prefix}-hw-all-check-box";
3
+
4
+ .@{all-check-box} {
5
+ .@{ant-prefix}-select-item-option-active:not(
6
+ .@{ant-prefix}-select-item-option-disabled
7
+ ) {
8
+ background-color: transparent;
9
+ }
10
+ .@{ant-prefix}-select-item-option-selected:not(
11
+ .@{ant-prefix}-select-item-option-disabled
12
+ ) {
13
+ background-color: #e6f7ff;
14
+ }
15
+ .@{ant-prefix}-select-item-option:not(
16
+ .@{ant-prefix}-select-item-option-selected
17
+ ) {
18
+ &:hover {
19
+ background-color: #f5f5f5;
20
+ }
4
21
  }
5
22
  }