@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
@@ -3,14 +3,10 @@ import React from "react";
3
3
  import { useFilterOption, useOptionReq } from "./hooks/norHooks";
4
4
  import { useValueChange } from "./hooks/changeHooks";
5
5
  import type { HSelectProps } from "./modal";
6
- import {
7
- defaultFieldNames,
8
- defaultModeConfig,
9
- defaultSelectConfig,
10
- } from "./defaultConfig";
6
+ import { defaultModeConfig, defaultSelectConfig } from "./defaultConfig";
11
7
  import DropdownComponent from "./components/DropdownComponent";
12
8
  import AllSelect from "./components/AllSelect";
13
- import { FieldNames } from "rc-select/lib/Select";
9
+ import { useChangeOptions, useMatchConfigProps } from "../hooks";
14
10
  const { Option } = Select;
15
11
 
16
12
  export default ({
@@ -20,12 +16,12 @@ export default ({
20
16
  modeConfig = defaultModeConfig,
21
17
  value,
22
18
  onChange,
23
- fieldNames = defaultFieldNames,
19
+ fieldNames: propsFieldNames,
24
20
  request,
25
21
  manual,
26
22
  optionLabelProp = "label",
27
23
  filterProvider,
28
- optionFilterProp = "filterlabel",
24
+ optionFilterProp = "filterLabel",
29
25
  serviceSearch,
30
26
  onSearch: propsOnSearch,
31
27
  filterOption,
@@ -36,14 +32,27 @@ export default ({
36
32
  ...props
37
33
  }: HSelectProps) => {
38
34
  const { icon, render } = modeConfig?.[mode || ""] || {};
35
+ const { fieldNames } = useMatchConfigProps({ fieldNames: propsFieldNames });
36
+
39
37
  const selfFilterOption = useFilterOption({ filterOption, serviceSearch });
40
- const { run, loading, data, error, onSearch } = useOptionReq({
38
+ const {
39
+ run,
40
+ loading,
41
+ data: resultData,
42
+ error,
43
+ onSearch,
44
+ mathShowSearch,
45
+ } = useOptionReq({
41
46
  options,
42
47
  manual,
43
48
  fieldNames,
44
49
  request,
45
50
  serviceSearch,
46
- });
51
+ showSearch,
52
+ onSearch: propsOnSearch,
53
+ }); //options
54
+
55
+ const data = useChangeOptions({ options: resultData, fieldNames });
47
56
  const { val, change } = useValueChange({
48
57
  labelInValue,
49
58
  onChange,
@@ -51,14 +60,16 @@ export default ({
51
60
  options: data,
52
61
  mode,
53
62
  noMatchItemRender,
63
+ fieldNames,
54
64
  });
65
+
55
66
  return (
56
67
  <Select
57
68
  style={style}
58
69
  mode={mode}
59
70
  loading={loading}
60
71
  value={val}
61
- onSearch={propsOnSearch || onSearch}
72
+ onSearch={onSearch}
62
73
  onChange={change}
63
74
  dropdownRender={(node) => {
64
75
  return (
@@ -74,30 +85,31 @@ export default ({
74
85
  mode={mode}
75
86
  value={val}
76
87
  onChange={change}
77
- />
78
- {node}
79
- </DropdownComponent>
88
+ >
89
+ {node}
90
+ </AllSelect>
91
+ </DropdownComponent> //全选
80
92
  );
81
93
  }}
82
94
  optionLabelProp={optionLabelProp}
83
95
  menuItemSelectedIcon={icon}
84
96
  optionFilterProp={optionFilterProp}
85
97
  filterOption={selfFilterOption}
86
- showSearch={showSearch}
98
+ showSearch={mathShowSearch}
87
99
  labelInValue={true}
88
100
  {...props}
89
101
  >
90
102
  {data?.map((item) => {
91
103
  const { value: optionValue, label } = item;
92
104
  const result = filterProvider?.(item) || label;
93
- const filer = { [optionFilterProp]: result };
105
+ const filter = { [optionFilterProp]: result };
94
106
  return (
95
107
  <Option
96
108
  value={optionValue}
97
109
  key={optionValue}
98
110
  label={label}
99
111
  mode={mode}
100
- {...filer}
112
+ {...filter}
101
113
  >
102
114
  {render ? render(item, val) : label}
103
115
  </Option>
@@ -1,12 +1,13 @@
1
1
  import type { SelectProps } from "antd";
2
2
  import type React from "react";
3
-
3
+ import type { PromiseFnResult } from "../modal";
4
4
  export type OptionType = Record<string, any>;
5
5
  export type PartialHSelectProps = Partial<HSelectProps>;
6
6
  export type RenderFn = (data: OptionType) => React.ReactNode;
7
+
7
8
  interface ModeConfigItem {
8
- icon?: React.ReactNode | null;
9
- render?: (item: OptionType, value: any[]) => React.ReactNode;
9
+ icon?: React.ReactNode | null; //自定义多选时当前选中的条目图标
10
+ render?: (item: OptionType, value: any[]) => React.ReactNode; //options内容
10
11
  }
11
12
  export interface ModeConfig {
12
13
  multiple?: ModeConfigItem;
@@ -14,15 +15,14 @@ export interface ModeConfig {
14
15
  }
15
16
  export interface HSelectProps extends Omit<SelectProps, "options"> {
16
17
  style?: React.CSSProperties;
17
- request?: (params: any) => Promise<OptionType[]>;
18
+ request?: PromiseFnResult<any, OptionType[]>;
18
19
  manual?: boolean;
19
20
  modeConfig?: ModeConfig;
20
- onChange?: (val: any) => void;
21
- filterProvider?: (item: any) => string;
22
- serviceSearch?: boolean;
21
+ filterProvider?: (item: any) => string; //筛选字段默认为label
22
+ serviceSearch?: boolean; //服务端搜索
23
23
  options?: OptionType[];
24
- noMatchItemRender?: RenderFn;
25
- allSelect?: boolean;
24
+ noMatchItemRender?: RenderFn; //没有数据
25
+ allSelect?: boolean; //显示全选
26
26
  }
27
27
  export interface FilterDataModal {
28
28
  value: any;
@@ -0,0 +1,18 @@
1
+ export const itemOpMaker = (itemOp, fieldNames) => {
2
+ const { label, value: itemVal, ...oItemOp } = itemOp;
3
+ const { label: labelKey = "", value: valKey = "" } = fieldNames;
4
+ return {
5
+ [labelKey]: label,
6
+ [valKey]: itemVal,
7
+ ...oItemOp,
8
+ };
9
+ };
10
+
11
+ export const itemOpProvider = (itemOps, fieldNames) => {
12
+ if (Array.isArray(itemOps)) {
13
+ return itemOps.map((item) => {
14
+ return itemOpMaker(item, fieldNames);
15
+ });
16
+ }
17
+ return itemOpMaker(itemOps, fieldNames);
18
+ };
@@ -0,0 +1,28 @@
1
+ import { Button } from "antd";
2
+ import React from "react";
3
+ import { useFormContext } from "../Form/Context";
4
+ import type { ButtonProps, FormInstance } from "antd/es";
5
+
6
+ export interface ISubmitProps extends Omit<ButtonProps, "form"> {
7
+ text?: string;
8
+ form: FormInstance;
9
+ }
10
+ export default ({
11
+ text = "提交",
12
+ type = "primary",
13
+ form,
14
+ loading,
15
+ ...props
16
+ }: ISubmitProps) => {
17
+ const { loading: formSubLoading = loading } = useFormContext();
18
+ return (
19
+ <Button
20
+ {...props}
21
+ type={type}
22
+ onClick={form.submit}
23
+ loading={formSubLoading}
24
+ >
25
+ {text}
26
+ </Button>
27
+ );
28
+ };
@@ -0,0 +1,52 @@
1
+ import type { SwitchProps } from "antd";
2
+ import { Space, Switch } from "antd";
3
+ import React, { useMemo } from "react";
4
+ import { useMatchConfigProps } from "../hooks";
5
+ import type { ValueSwitchMapModal } from "../modal";
6
+
7
+ export interface HSwitchProps extends Omit<SwitchProps, "onChange"> {
8
+ valueMap?: ValueSwitchMapModal;
9
+ value?: any;
10
+ onChange?: (val: any) => void;
11
+ beforeText?: React.ReactNode;
12
+ }
13
+ const Index: React.FC<HSwitchProps> = ({
14
+ value,
15
+ onChange,
16
+ valueMap: propsValueSwitchMap,
17
+ children,
18
+ unCheckedChildren = "关闭",
19
+ checkedChildren = "开启",
20
+ beforeText,
21
+ ...props
22
+ }) => {
23
+ const { valueSwitchMap = {} } = useMatchConfigProps({
24
+ valueSwitchMap: propsValueSwitchMap,
25
+ });
26
+ const swChecked = useMemo(() => {
27
+ const { open } = valueSwitchMap;
28
+ return value === open;
29
+ }, [value]);
30
+ const change = (checked) => {
31
+ let subVal = valueSwitchMap.close;
32
+ if (checked) {
33
+ subVal = valueSwitchMap.open;
34
+ }
35
+ onChange?.(subVal);
36
+ };
37
+ return (
38
+ <Space>
39
+ {beforeText}
40
+ <Switch
41
+ checked={swChecked}
42
+ checkedChildren={checkedChildren}
43
+ unCheckedChildren={unCheckedChildren}
44
+ onChange={change}
45
+ {...props}
46
+ />
47
+ <span>{children}</span>
48
+ </Space>
49
+ );
50
+ };
51
+
52
+ export default Index;
@@ -0,0 +1,106 @@
1
+ import { DatePicker } from "antd";
2
+ import type { HRangePickerProps } from "./modal";
3
+ import {
4
+ useGetTimeKey,
5
+ useRangePickerTimeVal,
6
+ useRangeValueProvider,
7
+ } from "./hooks";
8
+ import React, { useMemo } from "react";
9
+ import type { RangePickerProps } from "antd/es/date-picker";
10
+ import { useMatchConfigProps } from "../hooks";
11
+ import type { HItemProps } from "../Form/modal";
12
+ import HFormConnect from "../Form/HFormConnect";
13
+
14
+ const { RangePicker } = DatePicker;
15
+
16
+ const HRangePicker: React.FC<HRangePickerProps> = ({
17
+ value,
18
+ onChange,
19
+ showTime = true,
20
+ format = "X",
21
+ valueMap,
22
+ ranges = true,
23
+ name,
24
+ addFormat,
25
+ ...props
26
+ }) => {
27
+ const { valueRangePickerValueMap = {}, dateRanges } = useMatchConfigProps({
28
+ valueRangePickerValueMap: valueMap,
29
+ dateRanges: undefined,
30
+ });
31
+ const dateMapKeys = useGetTimeKey({
32
+ valueMap: valueRangePickerValueMap,
33
+ name,
34
+ });
35
+ const paramsProvider = useRangeValueProvider({ valueMap: dateMapKeys });
36
+ const timeVal = useRangePickerTimeVal({
37
+ value,
38
+ format,
39
+ valueMap: dateMapKeys,
40
+ });
41
+ const defaultRanges = useMemo(() => {
42
+ if (!ranges) {
43
+ return null;
44
+ }
45
+ if (ranges === true) {
46
+ return dateRanges;
47
+ }
48
+ return ranges;
49
+ }, [ranges]); //默认
50
+
51
+ addFormat?.({
52
+ float: {
53
+ inputValue: (item, initValue) => {
54
+ const { name: valueName } = item;
55
+ const resultObj = {};
56
+ Object.values(dateMapKeys).forEach((key) => {
57
+ if (initValue[key]){
58
+ resultObj[key] = initValue[key];
59
+ }
60
+ });
61
+ const hasKeys=Object.keys(resultObj).length!==0;
62
+ return {
63
+ [valueName]: hasKeys?resultObj:null,
64
+ };
65
+ },
66
+ outputValue: (item, outputValue) => {
67
+ const { name: valueName } = item;
68
+ const { [valueName]: itemVal = {} } = outputValue;
69
+ return {
70
+ ...itemVal,
71
+ };
72
+ },
73
+ },
74
+ });
75
+
76
+ const change = (val) => {
77
+ if (!format || !val) {
78
+ onChange?.(val);
79
+ return;
80
+ }
81
+ const subVal = val.map((item) => {
82
+ return item?.format(format);
83
+ });
84
+ onChange?.(paramsProvider(subVal));
85
+ };
86
+
87
+ return (
88
+ <RangePicker
89
+ value={timeVal}
90
+ onChange={change}
91
+ showTime={showTime}
92
+ ranges={defaultRanges as RangePickerProps["ranges"]}
93
+ {...props}
94
+ />
95
+ );
96
+ };
97
+ const Index = HFormConnect(HRangePicker);
98
+ export default {
99
+ Component: Index,
100
+ placeholder: ({ label }: HItemProps) => {
101
+ return [`请选择开始${label}`, `请选择结束${label}`];
102
+ },
103
+ requiredErrMsg: ({ label }: HItemProps) => {
104
+ return `请选择${label}`;
105
+ },
106
+ };
@@ -0,0 +1,15 @@
1
+ import { TimePicker } from "antd";
2
+ import type { HTimePickerProps } from "./modal";
3
+ import { useTimePickerChange, useTimePickerValue } from "./hooks";
4
+
5
+ export default ({
6
+ value,
7
+ format = "X",
8
+ onChange,
9
+ ...props
10
+ }: HTimePickerProps) => {
11
+ const timeVal = useTimePickerValue({ value, format });
12
+ const change = useTimePickerChange({ value, format, onChange });
13
+
14
+ return <TimePicker value={timeVal} onChange={change} {...props} />;
15
+ };
@@ -0,0 +1,150 @@
1
+ import { useCallback, useMemo } from "react";
2
+ import type { Moment, DurationInputArg2 } from "moment";
3
+ import moment from "moment";
4
+ import type { HRangePickerProps } from "./modal";
5
+ import type { DateRangePickerValueMapModal } from "../modal";
6
+
7
+ interface UseTimeValParams {
8
+ value?: any | [any, any];
9
+ format?: string;
10
+ valueMap?: DateRangePickerValueMapModal;
11
+ }
12
+
13
+ interface UseTimePickerValParams {
14
+ value?: any;
15
+ format?: string | DurationInputArg2;
16
+ }
17
+ interface UseTimeChangeParams {
18
+ format?: string;
19
+ onChange?: (time?: Moment | string | number) => void;
20
+ value?: any;
21
+ }
22
+ export const useTimeVal = ({ value, format }: UseTimeValParams) => {
23
+ return useMemo(() => {
24
+ if (!value || !format) {
25
+ return value;
26
+ }
27
+ return moment(value, format);
28
+ }, [value, format]);
29
+ }; //单个时间
30
+
31
+ export const useGetTimeKey = ({
32
+ valueMap = {},
33
+ name = "",
34
+ }: HRangePickerProps) => {
35
+ const { start, end } = valueMap;
36
+ if (!start || !end) {
37
+ return {};
38
+ }
39
+ const startKey = typeof start === "string" ? start : start(name);
40
+ const endKey = typeof end === "string" ? end : end(name);
41
+ return {
42
+ start: startKey,
43
+ end: endKey,
44
+ };
45
+ }; //构建格式
46
+ export const useTimeChange = ({ format, onChange }: UseTimeChangeParams) => {
47
+ return useCallback(
48
+ (value) => {
49
+ if (!format) {
50
+ onChange?.(value);
51
+ return;
52
+ }
53
+ const subVal = value?.format(format);
54
+ onChange?.(subVal);
55
+ },
56
+ [format, onChange]
57
+ );
58
+ }; //时间
59
+
60
+ const formatMap = {
61
+ X: "s",
62
+ x: "ms",
63
+ };
64
+ export const useTimePickerValue = ({
65
+ value,
66
+ format,
67
+ }: UseTimePickerValParams) => {
68
+ return useMemo(() => {
69
+ if (!value || !format) {
70
+ return value;
71
+ }
72
+ if (formatMap[format]) {
73
+ const timeStr = moment()
74
+ .startOf("days")
75
+ .add(value, formatMap[format] as DurationInputArg2)
76
+ .format("HH:mm:ss");
77
+ return moment(timeStr, "HH:mm:ss");
78
+ }
79
+ return moment(value, format);
80
+ }, [value, format]);
81
+ }; //区间选择
82
+
83
+ export const useTimePickerChange = ({
84
+ value,
85
+ format,
86
+ onChange,
87
+ }: UseTimeChangeParams) => {
88
+ return useCallback(
89
+ (val) => {
90
+ if (!format || !val) {
91
+ onChange?.(val);
92
+ return;
93
+ }
94
+ if (formatMap[format]) {
95
+ const startTime = moment().startOf("days").format(format) as any;
96
+ const nowTime = val.format(format);
97
+ onChange?.(nowTime - startTime);
98
+ return;
99
+ }
100
+ const subVal = val?.format(format);
101
+ onChange?.(subVal);
102
+ },
103
+ [format, onChange, value]
104
+ );
105
+ }; //时分秒
106
+
107
+ export const useRangeValueProvider = ({ valueMap = {} }: HRangePickerProps) => {
108
+ return (val: any[]) => {
109
+ const { start, end } = valueMap;
110
+ if (!start || !end) {
111
+ return val;
112
+ }
113
+ return {
114
+ [start as string]: val[0],
115
+ [end as string]: val[1],
116
+ };
117
+ };
118
+ }; //格式转化
119
+
120
+ export const useRangePickerTimeVal = ({
121
+ value,
122
+ format,
123
+ valueMap = {},
124
+ }: UseTimeValParams) => {
125
+ return useMemo(() => {
126
+ if (!value || !format) {
127
+ return value;
128
+ }
129
+ if (!Array.isArray(value)) {
130
+ const { start, end } = valueMap;
131
+ if (!start || !end) {
132
+ console.error("日期value格式错误!");
133
+ return;
134
+ }
135
+ const { [start as string]: startTime, [end as string]: endTime } = value;
136
+ if (!startTime && !endTime) {
137
+ return [];
138
+ }
139
+ const startMoment = moment(startTime, format);
140
+ const endMoment = moment(endTime, format);
141
+ return [startMoment, endMoment];
142
+ }
143
+ return value.map((item) => {
144
+ if (!item) {
145
+ return item;
146
+ }
147
+ return moment(item, format);
148
+ });
149
+ }, [value, format, valueMap]);
150
+ }; //初始化时间格式转化
@@ -0,0 +1,22 @@
1
+ import { DatePicker } from "antd";
2
+ import type { HDatePickerProps } from "./modal";
3
+ import { useTimeChange, useTimeVal } from "./hooks";
4
+
5
+ export default ({
6
+ value,
7
+ onChange,
8
+ showTime = true,
9
+ format = "X",
10
+ ...props
11
+ }: HDatePickerProps) => {
12
+ const timeVal = useTimeVal({ value, format });
13
+ const change = useTimeChange({ format, onChange });
14
+ return (
15
+ <DatePicker
16
+ value={timeVal}
17
+ onChange={change}
18
+ showTime={showTime}
19
+ {...props}
20
+ />
21
+ );
22
+ };
@@ -0,0 +1,30 @@
1
+ import type { RangePickerProps } from "antd/es/date-picker";
2
+ import type { SharedTimeProps } from "rc-picker/lib/panels/TimePanel";
3
+ import type { Moment } from "moment";
4
+ import type { DatePickerProps } from "antd";
5
+ import type { TimePickerProps } from "antd";
6
+ import type { DurationInputArg2 } from "moment";
7
+ import type { DateRangePickerValueMapModal } from "../modal";
8
+ import type { addFormatItemModal } from "@/components/Form/modal";
9
+ export interface HDatePickerProps
10
+ extends Omit<DatePickerProps, "onChange" | "format" | "ranges"> {
11
+ onChange?: (time?: Moment | string | number) => void;
12
+ format?: string;
13
+ showTime?: boolean | SharedTimeProps<Moment>;
14
+ }
15
+ export interface HRangePickerProps
16
+ extends Omit<RangePickerProps, "onChange" | "format" | "ranges" | "value"> {
17
+ value?: [any, any] | Record<string, any>;
18
+ onChange?: (val: any) => void;
19
+ showTime?: boolean | { defaultValue?: Moment[] };
20
+ format?: string;
21
+ valueMap?: DateRangePickerValueMapModal;
22
+ ranges?: RangePickerProps["ranges"] | boolean;
23
+ addFormat?: (config: Record<string, addFormatItemModal>) => void;
24
+ }
25
+
26
+ export interface HTimePickerProps
27
+ extends Omit<TimePickerProps, "onChange" | "format" | "ranges"> {
28
+ onChange?: (time?: Moment | string | number) => void;
29
+ format?: DurationInputArg2 | string;
30
+ }
@@ -0,0 +1,8 @@
1
+ import { Input } from "antd";
2
+ import type { TextAreaProps } from "antd/es/input";
3
+ export default ({
4
+ autoSize = { minRows: 4, maxRows: 4 },
5
+ ...props
6
+ }: TextAreaProps) => {
7
+ return <Input.TextArea autoSize={autoSize} {...props} />;
8
+ };
@@ -0,0 +1,24 @@
1
+ import { PlusOutlined, UploadOutlined } from "@ant-design/icons";
2
+ import type { IUpLoadProps } from "./modal";
3
+ import { useMemo } from "react";
4
+ import { Button } from "antd";
5
+
6
+ export default ({ value, maxCount = 1, listType }: IUpLoadProps) => {
7
+ const len = value?.length || 0;
8
+ const text = useMemo(() => {
9
+ if (len === maxCount) {
10
+ return "更新";
11
+ }
12
+ return "上传";
13
+ }, [len, maxCount]);
14
+
15
+ if (listType === "picture-card") {
16
+ return (
17
+ <div>
18
+ <PlusOutlined />
19
+ <div style={{ marginTop: 8 }}>{text}</div>
20
+ </div>
21
+ );
22
+ }
23
+ return <Button icon={<UploadOutlined />}>{text}</Button>;
24
+ };
@@ -0,0 +1,26 @@
1
+ import { MediaTypeEnum } from "../enums";
2
+
3
+ interface TypeEleProps {
4
+ mediaType?: MediaTypeEnum;
5
+ url?: string;
6
+ onReady?: VoidFunction;
7
+ onError?: VoidFunction;
8
+ }
9
+ export default ({ mediaType, url, onReady, onError }: TypeEleProps) => {
10
+ if (mediaType === MediaTypeEnum.video) {
11
+ return (
12
+ <video autoPlay width="100%" controls onPlay={onReady} onError={onError}>
13
+ <source src={url} />
14
+ </video>
15
+ );
16
+ }
17
+
18
+ if (mediaType === MediaTypeEnum.audio) {
19
+ return (
20
+ <audio autoPlay controls onPlay={onReady} onError={onError}>
21
+ <source src={url} />
22
+ </audio>
23
+ );
24
+ }
25
+ return <img src={url} width="100%" onLoad={onReady} onError={onError} />;
26
+ };
@@ -0,0 +1,34 @@
1
+ import { getFileExt } from "../util";
2
+ import TypeEle from "./TypeEle";
3
+ import { useMemo } from "react";
4
+ import type { IMediaTypeEleProps } from "../modal";
5
+ import { MediaTypeEnum } from "../enums";
6
+
7
+ const videoType = ["MP4"];
8
+ const audioType = ["MP3"];
9
+
10
+ export default ({ file, onReady, onError }: IMediaTypeEleProps) => {
11
+ if (!file) {
12
+ return null;
13
+ }
14
+
15
+ const name = getFileExt(file);
16
+ const mediaType = useMemo(() => {
17
+ if (videoType.indexOf(name) !== -1) {
18
+ return MediaTypeEnum.video;
19
+ }
20
+ if (audioType.indexOf(name) !== -1) {
21
+ return MediaTypeEnum.audio;
22
+ }
23
+ return MediaTypeEnum.img;
24
+ }, [name]);
25
+
26
+ return (
27
+ <TypeEle
28
+ onError={onError}
29
+ onReady={onReady}
30
+ mediaType={mediaType}
31
+ url={file.response.url}
32
+ />
33
+ );
34
+ };
@@ -0,0 +1,14 @@
1
+ import type { ModalProps } from "antd";
2
+ import { Modal } from "antd";
3
+ import MediaTypeEle from "../MediaTypeEle";
4
+ import type { IMediaTypeEleProps } from "../modal";
5
+
6
+ export type IPreviewProps = IMediaTypeEleProps & ModalProps;
7
+
8
+ export default ({ visible, file, onCancel }: IPreviewProps) => {
9
+ return (
10
+ <Modal footer={null} visible={visible} title="预览" onCancel={onCancel}>
11
+ <MediaTypeEle file={file} />
12
+ </Modal>
13
+ );
14
+ };