@gm-pc/react 1.24.9-beta.12 → 1.24.9-beta.13

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 (399) hide show
  1. package/package.json +3 -3
  2. package/src/common/hooks/index.ts +5 -5
  3. package/src/common/hooks/use_form/index.ts +2 -2
  4. package/src/common/hooks/use_form/use_form.ts +184 -184
  5. package/src/common/hooks/use_form/utils.ts +23 -23
  6. package/src/common/hooks/use_mutation_observer.ts +19 -19
  7. package/src/common/utils/date.ts +28 -28
  8. package/src/common/utils/get_record_partical_object.ts +4 -4
  9. package/src/common/utils/index.ts +3 -3
  10. package/src/common/utils/utils.ts +16 -16
  11. package/src/component/affix/affix.tsx +31 -31
  12. package/src/component/affix/index.ts +2 -2
  13. package/src/component/affix/stories.tsx +16 -16
  14. package/src/component/affix/style.less +3 -3
  15. package/src/component/auto_complete/auto_complete.tsx +202 -202
  16. package/src/component/auto_complete/index.ts +6 -6
  17. package/src/component/auto_complete/stories.tsx +37 -37
  18. package/src/component/auto_full/auto_full.tsx +36 -36
  19. package/src/component/auto_full/index.ts +1 -1
  20. package/src/component/box/box.tsx +29 -29
  21. package/src/component/box/box_form.tsx +83 -83
  22. package/src/component/box/box_pagination.tsx +12 -12
  23. package/src/component/box/box_panel.tsx +91 -91
  24. package/src/component/box/box_table.tsx +57 -57
  25. package/src/component/box/index.ts +10 -10
  26. package/src/component/box/stories.tsx +119 -119
  27. package/src/component/box/style.less +41 -41
  28. package/src/component/button/button.tsx +94 -94
  29. package/src/component/button/button_text.tsx +33 -33
  30. package/src/component/button/index.ts +4 -4
  31. package/src/component/button/stories.tsx +131 -131
  32. package/src/component/button/style.less +158 -158
  33. package/src/component/calendar/calendar.tsx +25 -25
  34. package/src/component/calendar/content.tsx +87 -87
  35. package/src/component/calendar/day.tsx +106 -106
  36. package/src/component/calendar/head.tsx +244 -244
  37. package/src/component/calendar/index.ts +4 -4
  38. package/src/component/calendar/range_calendar.tsx +121 -121
  39. package/src/component/calendar/stories.tsx +54 -54
  40. package/src/component/calendar/style.less +136 -136
  41. package/src/component/calendar/types.ts +54 -54
  42. package/src/component/calendar/week.tsx +27 -27
  43. package/src/component/card/card.tsx +148 -148
  44. package/src/component/card/form_card.tsx +42 -42
  45. package/src/component/card/index.ts +2 -2
  46. package/src/component/card/stories.tsx +90 -90
  47. package/src/component/card/style.less +125 -125
  48. package/src/component/checkbox/checkbox.tsx +75 -75
  49. package/src/component/checkbox/checkbox_group.tsx +51 -51
  50. package/src/component/checkbox/index.ts +5 -5
  51. package/src/component/checkbox/stories.tsx +152 -152
  52. package/src/component/checkbox/style.less +73 -73
  53. package/src/component/checkbox/util.ts +19 -19
  54. package/src/component/collapse/collapse.tsx +27 -27
  55. package/src/component/collapse/index.ts +2 -2
  56. package/src/component/collapse/stories.tsx +21 -21
  57. package/src/component/color_picker/color_list.ts +34 -34
  58. package/src/component/color_picker/color_picker.tsx +43 -43
  59. package/src/component/color_picker/color_select.tsx +97 -97
  60. package/src/component/color_picker/index.ts +2 -2
  61. package/src/component/color_picker/stories.tsx +20 -20
  62. package/src/component/color_picker/style.less +41 -41
  63. package/src/component/config_provider/config_provider.tsx +16 -16
  64. package/src/component/config_provider/context.ts +10 -10
  65. package/src/component/config_provider/index.ts +3 -3
  66. package/src/component/controlled_form/context.tsx +18 -18
  67. package/src/component/controlled_form/controlled_form.tsx +141 -141
  68. package/src/component/controlled_form/index.ts +8 -8
  69. package/src/component/controlled_form/items/index.tsx +115 -115
  70. package/src/component/controlled_form/items/utils.ts +132 -132
  71. package/src/component/controlled_form/stories/components/date_range_filter.tsx +83 -83
  72. package/src/component/controlled_form/stories/components/index.ts +2 -2
  73. package/src/component/controlled_form/stories/components/search_filter.tsx +52 -52
  74. package/src/component/controlled_form/stories/stories.tsx +372 -372
  75. package/src/component/date_picker/date_picker.tsx +183 -183
  76. package/src/component/date_picker/index.ts +2 -2
  77. package/src/component/date_picker/overlay.tsx +106 -106
  78. package/src/component/date_picker/stories.tsx +108 -108
  79. package/src/component/date_picker/style.less +23 -23
  80. package/src/component/date_picker/time_select.tsx +58 -58
  81. package/src/component/date_picker/types.ts +7 -7
  82. package/src/component/date_range_picker/date_range_picker.tsx +144 -144
  83. package/src/component/date_range_picker/index.ts +2 -2
  84. package/src/component/date_range_picker/left.tsx +107 -107
  85. package/src/component/date_range_picker/overlay.tsx +204 -204
  86. package/src/component/date_range_picker/stories.tsx +181 -181
  87. package/src/component/date_range_picker/style.less +41 -41
  88. package/src/component/date_range_picker/time_range_select.tsx +144 -144
  89. package/src/component/date_range_picker/two.tsx +108 -108
  90. package/src/component/date_range_picker/types.ts +42 -42
  91. package/src/component/date_range_picker/util.ts +11 -11
  92. package/src/component/dialog/alert.tsx +38 -38
  93. package/src/component/dialog/confirm.tsx +120 -120
  94. package/src/component/dialog/delete_com.tsx +27 -27
  95. package/src/component/dialog/dialog.tsx +70 -70
  96. package/src/component/dialog/index.ts +16 -16
  97. package/src/component/dialog/prompt.tsx +95 -95
  98. package/src/component/dialog/stories.tsx +195 -195
  99. package/src/component/dialog/types.ts +70 -70
  100. package/src/component/divider/divider.tsx +25 -25
  101. package/src/component/divider/index.ts +2 -2
  102. package/src/component/divider/stories.tsx +14 -14
  103. package/src/component/divider/style.less +29 -29
  104. package/src/component/flex/flex.tsx +133 -133
  105. package/src/component/flex/index.ts +2 -2
  106. package/src/component/flex/stories.tsx +17 -17
  107. package/src/component/flex/style.less +105 -105
  108. package/src/component/flip_number/flip_number.tsx +209 -209
  109. package/src/component/flip_number/index.ts +2 -2
  110. package/src/component/flip_number/stories.tsx +28 -28
  111. package/src/component/flip_number/utils.ts +58 -58
  112. package/src/component/form/context.tsx +15 -15
  113. package/src/component/form/form.tsx +142 -142
  114. package/src/component/form/form_block.tsx +39 -39
  115. package/src/component/form/form_button.tsx +28 -28
  116. package/src/component/form/form_group.tsx +157 -157
  117. package/src/component/form/form_item.tsx +141 -141
  118. package/src/component/form/form_panel.tsx +63 -63
  119. package/src/component/form/index.ts +15 -15
  120. package/src/component/form/stories.tsx +448 -448
  121. package/src/component/form/style.less +159 -159
  122. package/src/component/form/types.ts +110 -110
  123. package/src/component/function_set/function_set.tsx +84 -84
  124. package/src/component/function_set/index.ts +2 -2
  125. package/src/component/function_set/overlay.tsx +41 -41
  126. package/src/component/function_set/stories.tsx +71 -71
  127. package/src/component/function_set/types.ts +15 -15
  128. package/src/component/function_set/utils.ts +21 -21
  129. package/src/component/grid/col.tsx +55 -55
  130. package/src/component/grid/index.ts +3 -3
  131. package/src/component/grid/mixin.less +48 -48
  132. package/src/component/grid/row.tsx +27 -27
  133. package/src/component/grid/stories.tsx +65 -65
  134. package/src/component/grid/style.less +27 -27
  135. package/src/component/grid/types.ts +35 -35
  136. package/src/component/grid/util.ts +12 -12
  137. package/src/component/icon_down_up/icon_down_up.tsx +22 -22
  138. package/src/component/icon_down_up/index.ts +2 -2
  139. package/src/component/icon_down_up/stories.tsx +21 -21
  140. package/src/component/icon_down_up/style.less +10 -10
  141. package/src/component/icon_expand/icon_expand.tsx +22 -22
  142. package/src/component/icon_expand/index.ts +1 -1
  143. package/src/component/img_uploader/img_uploader.tsx +168 -168
  144. package/src/component/img_uploader/index.ts +2 -2
  145. package/src/component/img_uploader/stories.tsx +58 -58
  146. package/src/component/img_uploader/style.less +22 -22
  147. package/src/component/input/index.ts +5 -5
  148. package/src/component/input/input.tsx +24 -24
  149. package/src/component/input/input_close.tsx +51 -51
  150. package/src/component/input/stories.tsx +56 -56
  151. package/src/component/input/style.less +33 -33
  152. package/src/component/input_number/index.ts +2 -2
  153. package/src/component/input_number/input_number.tsx +115 -115
  154. package/src/component/input_number/stories.tsx +27 -27
  155. package/src/component/input_number/style.less +10 -10
  156. package/src/component/input_number/utils.ts +44 -44
  157. package/src/component/label/index.tsx +19 -19
  158. package/src/component/label/stories.tsx +26 -26
  159. package/src/component/label/style.less +34 -34
  160. package/src/component/layout_root/index.ts +2 -2
  161. package/src/component/layout_root/layout_root.tsx +116 -116
  162. package/src/component/layout_root/types.ts +38 -38
  163. package/src/component/level_list/index.ts +2 -2
  164. package/src/component/level_list/level_item.tsx +79 -79
  165. package/src/component/level_list/level_list.tsx +123 -123
  166. package/src/component/level_list/stories/constants.ts +72 -72
  167. package/src/component/level_list/stories/stories.tsx +87 -87
  168. package/src/component/level_list/style.less +41 -41
  169. package/src/component/level_list/types.ts +36 -36
  170. package/src/component/level_list/utils.ts +19 -19
  171. package/src/component/level_select/index.ts +7 -7
  172. package/src/component/level_select/level_select.tsx +216 -216
  173. package/src/component/level_select/multiple_level_select.tsx +104 -104
  174. package/src/component/level_select/stories.tsx +102 -102
  175. package/src/component/level_select/types.ts +38 -38
  176. package/src/component/level_select/util.ts +20 -20
  177. package/src/component/list/base.tsx +129 -129
  178. package/src/component/list/index.ts +3 -3
  179. package/src/component/list/list.tsx +61 -61
  180. package/src/component/list/stories.tsx +113 -113
  181. package/src/component/list/style.less +58 -58
  182. package/src/component/list/types.ts +37 -37
  183. package/src/component/loading/index.ts +10 -10
  184. package/src/component/loading/loading.tsx +26 -26
  185. package/src/component/loading/loading_chunk.tsx +37 -37
  186. package/src/component/loading/loading_full_screen.tsx +45 -45
  187. package/src/component/loading/stories.tsx +43 -43
  188. package/src/component/loading/style.less +69 -69
  189. package/src/component/loading/types.ts +30 -30
  190. package/src/component/mask/index.ts +2 -2
  191. package/src/component/mask/mask.tsx +22 -22
  192. package/src/component/mask/style.less +10 -10
  193. package/src/component/modal/clean_modal.tsx +14 -14
  194. package/src/component/modal/index.ts +5 -5
  195. package/src/component/modal/modal.tsx +145 -145
  196. package/src/component/modal/right_side_modal.tsx +22 -22
  197. package/src/component/modal/stories.tsx +132 -132
  198. package/src/component/modal/style.less +138 -138
  199. package/src/component/modal/types.ts +27 -27
  200. package/src/component/more_select/base.tsx +408 -408
  201. package/src/component/more_select/index.ts +6 -6
  202. package/src/component/more_select/more_select.tsx +137 -137
  203. package/src/component/more_select/render_list_filter.ts +39 -39
  204. package/src/component/more_select/stories.tsx +323 -323
  205. package/src/component/more_select/style.less +72 -72
  206. package/src/component/more_select/types.ts +114 -114
  207. package/src/component/multiple_selection/index.ts +2 -2
  208. package/src/component/multiple_selection/multiple_selection.tsx +118 -118
  209. package/src/component/multiple_selection/stories.tsx +37 -37
  210. package/src/component/multiple_selection/style.less +57 -57
  211. package/src/component/n_progress/index.ts +1 -1
  212. package/src/component/n_progress/n_progress.tsx +39 -39
  213. package/src/component/n_progress/stories.tsx +25 -25
  214. package/src/component/n_progress/style.less +39 -39
  215. package/src/component/nav/a.tsx +7 -7
  216. package/src/component/nav/index.ts +10 -10
  217. package/src/component/nav/nav.tsx +114 -114
  218. package/src/component/nav/nav_item.tsx +98 -98
  219. package/src/component/nav/nav_single_item.tsx +28 -28
  220. package/src/component/nav/popup.tsx +100 -100
  221. package/src/component/nav/portal.ts +17 -17
  222. package/src/component/nav/stories.tsx +152 -152
  223. package/src/component/nav/style.less +246 -246
  224. package/src/component/nav/types.ts +93 -93
  225. package/src/component/pagination/index.ts +2 -2
  226. package/src/component/pagination/left.tsx +45 -45
  227. package/src/component/pagination/page_with_count.tsx +115 -115
  228. package/src/component/pagination/page_without_count.tsx +64 -64
  229. package/src/component/pagination/pagination.tsx +23 -23
  230. package/src/component/pagination/right.tsx +78 -78
  231. package/src/component/pagination/stories.tsx +62 -62
  232. package/src/component/pagination/style.less +51 -51
  233. package/src/component/pagination/types.ts +16 -16
  234. package/src/component/pagination/util.ts +7 -7
  235. package/src/component/popover/index.ts +2 -2
  236. package/src/component/popover/popover.tsx +279 -279
  237. package/src/component/popover/stories.tsx +104 -104
  238. package/src/component/popover/types.ts +25 -25
  239. package/src/component/popover/utils.ts +22 -22
  240. package/src/component/popup/element_in_viewport.ts +33 -33
  241. package/src/component/popup/index.ts +4 -4
  242. package/src/component/popup/popup.tsx +149 -149
  243. package/src/component/popup/popup_content_confirm.tsx +106 -106
  244. package/src/component/popup/style.less +107 -107
  245. package/src/component/price/constant.ts +4 -4
  246. package/src/component/price/event_bus.ts +13 -13
  247. package/src/component/price/index.ts +2 -2
  248. package/src/component/price/price.tsx +152 -152
  249. package/src/component/price/stories.tsx +22 -22
  250. package/src/component/progress/index.ts +2 -2
  251. package/src/component/progress/progress.tsx +53 -53
  252. package/src/component/progress/stories.tsx +20 -20
  253. package/src/component/progress/style.less +35 -35
  254. package/src/component/progress_circle/index.ts +2 -2
  255. package/src/component/progress_circle/progress_circle.tsx +85 -85
  256. package/src/component/progress_circle/stories.tsx +31 -31
  257. package/src/component/progress_circle/style.less +21 -21
  258. package/src/component/radio/index.ts +5 -5
  259. package/src/component/radio/radio.tsx +72 -72
  260. package/src/component/radio/radio_group.tsx +48 -48
  261. package/src/component/radio/stories.tsx +103 -103
  262. package/src/component/radio/style.less +56 -56
  263. package/src/component/radio/util.ts +19 -19
  264. package/src/component/recommend_input/index.ts +2 -2
  265. package/src/component/recommend_input/recommend_input.tsx +100 -100
  266. package/src/component/recommend_input/stories.tsx +47 -47
  267. package/src/component/recommend_input/style.less +25 -25
  268. package/src/component/select/index.ts +2 -2
  269. package/src/component/select/select.tsx +171 -171
  270. package/src/component/select/stories.tsx +140 -140
  271. package/src/component/select/style.less +4 -4
  272. package/src/component/select/types.ts +29 -29
  273. package/src/component/selection/index.ts +2 -2
  274. package/src/component/selection/selection.tsx +162 -162
  275. package/src/component/selection/stories.tsx +45 -45
  276. package/src/component/selection/style.less +65 -65
  277. package/src/component/steps/index.ts +2 -2
  278. package/src/component/steps/steps.tsx +61 -61
  279. package/src/component/steps/stories.tsx +18 -18
  280. package/src/component/steps/style.less +39 -39
  281. package/src/component/storage/index.ts +1 -1
  282. package/src/component/storage/storage.ts +7 -7
  283. package/src/component/storage/stories.tsx +7 -7
  284. package/src/component/switch/index.ts +2 -2
  285. package/src/component/switch/stories.tsx +39 -39
  286. package/src/component/switch/style.less +60 -60
  287. package/src/component/switch/switch.tsx +127 -127
  288. package/src/component/table_select/index.ts +2 -2
  289. package/src/component/table_select/stories.tsx +97 -97
  290. package/src/component/table_select/style.less +20 -20
  291. package/src/component/table_select/table_select.tsx +92 -92
  292. package/src/component/table_select/types.ts +30 -30
  293. package/src/component/table_select/util.ts +15 -15
  294. package/src/component/tabs/index.ts +2 -2
  295. package/src/component/tabs/stories.tsx +172 -172
  296. package/src/component/tabs/style.less +149 -149
  297. package/src/component/tabs/tabs.tsx +232 -232
  298. package/src/component/textarea/index.ts +3 -3
  299. package/src/component/textarea/stories.tsx +37 -37
  300. package/src/component/textarea/style.less +12 -12
  301. package/src/component/textarea/textarea.tsx +22 -22
  302. package/src/component/time_span/index.ts +4 -4
  303. package/src/component/time_span/stories.tsx +87 -87
  304. package/src/component/time_span/style.less +45 -45
  305. package/src/component/time_span/time_span.tsx +129 -129
  306. package/src/component/time_span/time_span_picker.tsx +71 -71
  307. package/src/component/time_span/types.ts +58 -58
  308. package/src/component/time_span/util.ts +18 -18
  309. package/src/component/tip/index.ts +2 -2
  310. package/src/component/tip/stories.tsx +44 -44
  311. package/src/component/tip/style.less +53 -53
  312. package/src/component/tip/tip.tsx +95 -95
  313. package/src/component/tip/types.ts +20 -20
  314. package/src/component/tooltip/index.ts +2 -2
  315. package/src/component/tooltip/stories.tsx +32 -32
  316. package/src/component/tooltip/tooltip.tsx +40 -40
  317. package/src/component/transfer/index.ts +2 -2
  318. package/src/component/transfer/stories.tsx +140 -140
  319. package/src/component/transfer/transfer.tsx +147 -147
  320. package/src/component/transfer/types.ts +42 -42
  321. package/src/component/tree/bottom.tsx +34 -34
  322. package/src/component/tree/find.tsx +73 -73
  323. package/src/component/tree/index.ts +2 -2
  324. package/src/component/tree/item.tsx +75 -75
  325. package/src/component/tree/list.tsx +123 -123
  326. package/src/component/tree/search.tsx +29 -29
  327. package/src/component/tree/stories.tsx +309 -309
  328. package/src/component/tree/style.less +35 -35
  329. package/src/component/tree/tree.tsx +238 -238
  330. package/src/component/tree/types.ts +155 -155
  331. package/src/component/tree/util.ts +208 -208
  332. package/src/component/uploader/default_container.tsx +24 -24
  333. package/src/component/uploader/default_image.tsx +15 -15
  334. package/src/component/uploader/index.ts +10 -10
  335. package/src/component/uploader/stories.tsx +53 -53
  336. package/src/component/uploader/style.less +22 -22
  337. package/src/component/uploader/types.ts +25 -25
  338. package/src/component/uploader/uploader.tsx +62 -62
  339. package/src/component/v_browser/context/browser.ts +7 -7
  340. package/src/component/v_browser/context/browserWindow.ts +7 -7
  341. package/src/component/v_browser/hooks/useWindowEffect.ts +53 -53
  342. package/src/component/v_browser/index.ts +4 -4
  343. package/src/component/v_browser/types.ts +46 -46
  344. package/src/component/v_browser/ui/iframe_portal.tsx +28 -28
  345. package/src/component/v_browser/ui/index.tsx +213 -213
  346. package/src/component/v_browser/ui/style.less +113 -113
  347. package/src/component/v_browser/ui/window_wrapper.tsx +74 -74
  348. package/src/component/v_browser/v_browser.stories.mdx +128 -128
  349. package/src/component/v_browser/v_browser.tsx +287 -287
  350. package/src/css/base.less +64 -64
  351. package/src/css/bg.less +52 -52
  352. package/src/css/border.less +40 -40
  353. package/src/css/cursor.less +19 -19
  354. package/src/css/display.less +16 -16
  355. package/src/css/distance.less +93 -93
  356. package/src/css/error.less +8 -8
  357. package/src/css/other.less +15 -15
  358. package/src/css/overflow.less +23 -23
  359. package/src/css/position.less +11 -11
  360. package/src/css/svg.less +48 -48
  361. package/src/css/text.less +127 -127
  362. package/src/css/var/mixin.less +75 -75
  363. package/src/css/var/variables.less +125 -125
  364. package/src/event_type.ts +11 -11
  365. package/src/index.less +64 -64
  366. package/src/index.ts +61 -61
  367. package/src/svg/calendar-month.svg +8 -8
  368. package/src/svg/calendar-year.svg +13 -13
  369. package/src/svg/calendar.svg +17 -17
  370. package/src/svg/check-detail.svg +18 -18
  371. package/src/svg/close-circle.svg +13 -13
  372. package/src/svg/close-square.svg +12 -12
  373. package/src/svg/closeup.svg +20 -20
  374. package/src/svg/delete.svg +10 -10
  375. package/src/svg/down-small.svg +1 -1
  376. package/src/svg/down.svg +1 -1
  377. package/src/svg/edit-box.svg +17 -17
  378. package/src/svg/edit-pen.svg +17 -17
  379. package/src/svg/empty.svg +27 -27
  380. package/src/svg/expand.svg +21 -21
  381. package/src/svg/left-small.svg +1 -1
  382. package/src/svg/more.svg +10 -10
  383. package/src/svg/next.svg +40 -40
  384. package/src/svg/pen.svg +12 -12
  385. package/src/svg/remove.svg +1 -1
  386. package/src/svg/right-small.svg +1 -1
  387. package/src/svg/search.svg +8 -8
  388. package/src/svg/setting.svg +17 -17
  389. package/src/svg/up-small.svg +1 -1
  390. package/src/svg/up.svg +1 -1
  391. package/src/svg/vbrowser-tab-delete.svg +8 -8
  392. package/src/svg/vbrowser-tab-left.svg +8 -8
  393. package/src/svg/vbrowser-tab-right.svg +8 -8
  394. package/src/types.ts +33 -33
  395. package/src/validator/index.ts +16 -16
  396. package/src/validator/rules.ts +61 -61
  397. package/src/validator/types.ts +10 -10
  398. package/src/validator/validator.ts +95 -95
  399. package/src/var.less +2 -2
@@ -1,132 +1,132 @@
1
- import {
2
- ReactNode,
3
- ReactElement,
4
- isValidElement,
5
- cloneElement as ReactCloneElement,
6
- } from 'react'
7
- import { Rule } from '.'
8
- import { getLocale } from '@gm-pc/locales'
9
- import { pattern } from '../../../validator/rules'
10
- type AnyObject = Record<any, any>
11
-
12
- export type RenderProps =
13
- | undefined
14
- | AnyObject
15
- | ((originProps: AnyObject) => AnyObject | undefined)
16
-
17
- export function replaceElement(
18
- element: ReactNode,
19
- replacement: ReactNode,
20
- props: RenderProps
21
- ): ReactNode {
22
- if (!isValidElement(element)) return replacement
23
-
24
- return ReactCloneElement(
25
- element,
26
- typeof props === 'function' ? props(element.props || {}) : props
27
- )
28
- }
29
- export function cloneElement(element: ReactNode, props?: RenderProps): ReactElement {
30
- return replaceElement(element, element, props) as ReactElement
31
- }
32
-
33
- function isValueEmpty(value: string | [] | undefined | null) {
34
- if (value === undefined || value === null) return true
35
- if ((typeof value === 'string' || Array.isArray(value)) && !value.length) {
36
- return true
37
- }
38
- return false
39
- }
40
-
41
- function isWhiteSpace(str: any) {
42
- return /\s/.test(str)
43
- }
44
- export function getWarningMessage<T>(
45
- rules: Rule<T>[] = [],
46
- values: T,
47
- name: string,
48
- required = false
49
- ) {
50
- let warningMessage: string | ReactNode
51
- // @ts-ignore
52
- const value = values?.[name]
53
- const isEmpty = isValueEmpty(value)
54
- if (required && isEmpty) {
55
- warningMessage = getLocale('请填写')
56
- if (rules.length === 0) {
57
- return warningMessage
58
- }
59
- rules.some((rule) => {
60
- if (typeof rule === 'object' && rule.required) {
61
- warningMessage = rule.message
62
- return true
63
- }
64
- return false
65
- })
66
-
67
- return warningMessage
68
- }
69
-
70
- for (const rule of rules) {
71
- if (typeof rule === 'object') {
72
- if (rule.required && isEmpty) {
73
- warningMessage = rule.message
74
- }
75
- /**
76
- * value有和可能字符串和数字
77
- * 1. string :
78
- * { min: 1},这时候value = '',则验证不通过
79
- * { max: 2},这时候value = 'xxx',则验证不通过
80
- * 2. number :
81
- * { min: 1},这时候value = 0.99,则验证不通过
82
- * { max: 2},这时候value = 2.001,则验证不通过
83
- *
84
- * 如果配置了len=5,字符串'xxx'长度为3,数字666666长度为6,都不等于len=5
85
- */
86
- if (!isEmpty) {
87
- if (typeof value === 'number' || typeof value === 'string') {
88
- const tempValue = typeof value === 'number' ? value : value.length
89
- if (
90
- (rule.len && value.toString().length !== rule.len) ||
91
- ((rule.max || rule.max === 0) && tempValue > rule.max) ||
92
- ((rule.min || rule.min === 0) && tempValue < rule.min)
93
- ) {
94
- warningMessage = rule.message
95
- }
96
- }
97
- if (rule.pattern && !rule.pattern.test(value)) {
98
- warningMessage = rule.message
99
- }
100
- if (rule.whitespace && isWhiteSpace(value)) {
101
- warningMessage = rule.message
102
- }
103
- if (rule.type) {
104
- switch (rule.type) {
105
- case 'integer':
106
- if (!Number.isInteger(Number(value))) {
107
- warningMessage = rule.message
108
- }
109
- break
110
- case 'url':
111
- case 'email':
112
- if (!pattern[rule.type].test(value)) {
113
- warningMessage = rule.message
114
- }
115
- break
116
- default:
117
- break
118
- }
119
- }
120
- }
121
- } else {
122
- if (!isEmpty) {
123
- warningMessage = rule(values)
124
- }
125
- }
126
- if (warningMessage) {
127
- return warningMessage
128
- }
129
- }
130
-
131
- return warningMessage
132
- }
1
+ import {
2
+ ReactNode,
3
+ ReactElement,
4
+ isValidElement,
5
+ cloneElement as ReactCloneElement,
6
+ } from 'react'
7
+ import { Rule } from '.'
8
+ import { getLocale } from '@gm-pc/locales'
9
+ import { pattern } from '../../../validator/rules'
10
+ type AnyObject = Record<any, any>
11
+
12
+ export type RenderProps =
13
+ | undefined
14
+ | AnyObject
15
+ | ((originProps: AnyObject) => AnyObject | undefined)
16
+
17
+ export function replaceElement(
18
+ element: ReactNode,
19
+ replacement: ReactNode,
20
+ props: RenderProps
21
+ ): ReactNode {
22
+ if (!isValidElement(element)) return replacement
23
+
24
+ return ReactCloneElement(
25
+ element,
26
+ typeof props === 'function' ? props(element.props || {}) : props
27
+ )
28
+ }
29
+ export function cloneElement(element: ReactNode, props?: RenderProps): ReactElement {
30
+ return replaceElement(element, element, props) as ReactElement
31
+ }
32
+
33
+ function isValueEmpty(value: string | [] | undefined | null) {
34
+ if (value === undefined || value === null) return true
35
+ if ((typeof value === 'string' || Array.isArray(value)) && !value.length) {
36
+ return true
37
+ }
38
+ return false
39
+ }
40
+
41
+ function isWhiteSpace(str: any) {
42
+ return /\s/.test(str)
43
+ }
44
+ export function getWarningMessage<T>(
45
+ rules: Rule<T>[] = [],
46
+ values: T,
47
+ name: string,
48
+ required = false
49
+ ) {
50
+ let warningMessage: string | ReactNode
51
+ // @ts-ignore
52
+ const value = values?.[name]
53
+ const isEmpty = isValueEmpty(value)
54
+ if (required && isEmpty) {
55
+ warningMessage = getLocale('请填写')
56
+ if (rules.length === 0) {
57
+ return warningMessage
58
+ }
59
+ rules.some((rule) => {
60
+ if (typeof rule === 'object' && rule.required) {
61
+ warningMessage = rule.message
62
+ return true
63
+ }
64
+ return false
65
+ })
66
+
67
+ return warningMessage
68
+ }
69
+
70
+ for (const rule of rules) {
71
+ if (typeof rule === 'object') {
72
+ if (rule.required && isEmpty) {
73
+ warningMessage = rule.message
74
+ }
75
+ /**
76
+ * value有和可能字符串和数字
77
+ * 1. string :
78
+ * { min: 1},这时候value = '',则验证不通过
79
+ * { max: 2},这时候value = 'xxx',则验证不通过
80
+ * 2. number :
81
+ * { min: 1},这时候value = 0.99,则验证不通过
82
+ * { max: 2},这时候value = 2.001,则验证不通过
83
+ *
84
+ * 如果配置了len=5,字符串'xxx'长度为3,数字666666长度为6,都不等于len=5
85
+ */
86
+ if (!isEmpty) {
87
+ if (typeof value === 'number' || typeof value === 'string') {
88
+ const tempValue = typeof value === 'number' ? value : value.length
89
+ if (
90
+ (rule.len && value.toString().length !== rule.len) ||
91
+ ((rule.max || rule.max === 0) && tempValue > rule.max) ||
92
+ ((rule.min || rule.min === 0) && tempValue < rule.min)
93
+ ) {
94
+ warningMessage = rule.message
95
+ }
96
+ }
97
+ if (rule.pattern && !rule.pattern.test(value)) {
98
+ warningMessage = rule.message
99
+ }
100
+ if (rule.whitespace && isWhiteSpace(value)) {
101
+ warningMessage = rule.message
102
+ }
103
+ if (rule.type) {
104
+ switch (rule.type) {
105
+ case 'integer':
106
+ if (!Number.isInteger(Number(value))) {
107
+ warningMessage = rule.message
108
+ }
109
+ break
110
+ case 'url':
111
+ case 'email':
112
+ if (!pattern[rule.type].test(value)) {
113
+ warningMessage = rule.message
114
+ }
115
+ break
116
+ default:
117
+ break
118
+ }
119
+ }
120
+ }
121
+ } else {
122
+ if (!isEmpty) {
123
+ warningMessage = rule(values)
124
+ }
125
+ }
126
+ if (warningMessage) {
127
+ return warningMessage
128
+ }
129
+ }
130
+
131
+ return warningMessage
132
+ }
@@ -1,83 +1,83 @@
1
- import React, { FC } from 'react'
2
- import { DateRangePicker, Select, Flex } from '../../../../index'
3
-
4
- interface Data {
5
- type: number
6
- name: string
7
- expand: boolean
8
- limit?: (
9
- date: Date,
10
- v: {
11
- begin?: Date
12
- end?: Date
13
- }
14
- ) => boolean
15
- }
16
-
17
- export interface DRFOnChange {
18
- (value: { begin?: Date; end?: Date; dateType?: number }): void
19
- }
20
-
21
- interface DateRangeFilterProps {
22
- data: Data[]
23
- onChange?: DRFOnChange
24
- value?: {
25
- begin: Date
26
- end: Date
27
- dateType: number
28
- }
29
-
30
- className?: string
31
- enabledTimeSelect?: boolean
32
- }
33
- export const DateRangeFilter: FC<DateRangeFilterProps> = ({
34
- data,
35
- onChange,
36
- value,
37
- className = '',
38
- enabledTimeSelect = false,
39
- }) => {
40
- const { begin, end, dateType } = value || {}
41
-
42
- const handleDateChange = (begin: Date, end: Date) => {
43
- onChange && onChange({ begin, end, dateType })
44
- }
45
-
46
- const handleSelectChange = (value: number) => {
47
- onChange && onChange({ dateType: value })
48
- }
49
-
50
- const target = data.find((item) => {
51
- return item.type === dateType
52
- })
53
-
54
- const datePart = (
55
- <DateRangePicker
56
- begin={begin}
57
- end={end}
58
- onChange={handleDateChange}
59
- disabledDate={target?.limit}
60
- enabledTimeSelect={enabledTimeSelect}
61
- />
62
- )
63
-
64
- return (
65
- <Flex>
66
- <div className='gm-padding-right-5' style={{ width: '110px', marginLeft: '-10px' }}>
67
- <Select
68
- clean
69
- value={dateType}
70
- onChange={handleSelectChange}
71
- className='gm-block'
72
- data={data.map((v) => ({
73
- value: v.type,
74
- text: v.name,
75
- }))}
76
- />
77
- </div>
78
- <Flex flex none column style={{ minWidth: 'auto' }}>
79
- {datePart}
80
- </Flex>
81
- </Flex>
82
- )
83
- }
1
+ import React, { FC } from 'react'
2
+ import { DateRangePicker, Select, Flex } from '../../../../index'
3
+
4
+ interface Data {
5
+ type: number
6
+ name: string
7
+ expand: boolean
8
+ limit?: (
9
+ date: Date,
10
+ v: {
11
+ begin?: Date
12
+ end?: Date
13
+ }
14
+ ) => boolean
15
+ }
16
+
17
+ export interface DRFOnChange {
18
+ (value: { begin?: Date; end?: Date; dateType?: number }): void
19
+ }
20
+
21
+ interface DateRangeFilterProps {
22
+ data: Data[]
23
+ onChange?: DRFOnChange
24
+ value?: {
25
+ begin: Date
26
+ end: Date
27
+ dateType: number
28
+ }
29
+
30
+ className?: string
31
+ enabledTimeSelect?: boolean
32
+ }
33
+ export const DateRangeFilter: FC<DateRangeFilterProps> = ({
34
+ data,
35
+ onChange,
36
+ value,
37
+ className = '',
38
+ enabledTimeSelect = false,
39
+ }) => {
40
+ const { begin, end, dateType } = value || {}
41
+
42
+ const handleDateChange = (begin: Date, end: Date) => {
43
+ onChange && onChange({ begin, end, dateType })
44
+ }
45
+
46
+ const handleSelectChange = (value: number) => {
47
+ onChange && onChange({ dateType: value })
48
+ }
49
+
50
+ const target = data.find((item) => {
51
+ return item.type === dateType
52
+ })
53
+
54
+ const datePart = (
55
+ <DateRangePicker
56
+ begin={begin}
57
+ end={end}
58
+ onChange={handleDateChange}
59
+ disabledDate={target?.limit}
60
+ enabledTimeSelect={enabledTimeSelect}
61
+ />
62
+ )
63
+
64
+ return (
65
+ <Flex>
66
+ <div className='gm-padding-right-5' style={{ width: '110px', marginLeft: '-10px' }}>
67
+ <Select
68
+ clean
69
+ value={dateType}
70
+ onChange={handleSelectChange}
71
+ className='gm-block'
72
+ data={data.map((v) => ({
73
+ value: v.type,
74
+ text: v.name,
75
+ }))}
76
+ />
77
+ </div>
78
+ <Flex flex none column style={{ minWidth: 'auto' }}>
79
+ {datePart}
80
+ </Flex>
81
+ </Flex>
82
+ )
83
+ }
@@ -1,2 +1,2 @@
1
- export * from './date_range_filter'
2
- export * from './search_filter'
1
+ export * from './date_range_filter'
2
+ export * from './search_filter'
@@ -1,52 +1,52 @@
1
- import React, { FC, useState } from 'react'
2
- import _ from 'lodash'
3
- import { Select, Input, Flex, ControlledFormItem } from '../../../../index'
4
-
5
- const orderSearchType = [
6
- {
7
- value: 1,
8
- text: '按订单号',
9
- key: 'serial_no',
10
- desc: '输入订单号搜索',
11
- },
12
- {
13
- value: 2,
14
- text: '按商户',
15
- key: 'receive_customer_id',
16
- desc: '输入商户编码或商户名',
17
- },
18
- ]
19
-
20
- export const SearchFilter: FC = () => {
21
- const [selected, setSelected] = useState(1)
22
- const list = [...orderSearchType]
23
- const target = _.find(list, (v) => v.value === selected)
24
-
25
- return (
26
- <Flex>
27
- <div className='gm-padding-right-5' style={{ minWidth: '90px' }}>
28
- <ControlledFormItem
29
- name='searchType'
30
- disabledCol
31
- onFieldChange={(selected, { setFieldsValue }) => {
32
- setSelected(selected)
33
- if (selected === 2) {
34
- setFieldsValue({
35
- serial_no: 2222,
36
- })
37
- }
38
- }}
39
- >
40
- <Select clean className='gm-block' data={list} />
41
- </ControlledFormItem>
42
- </div>
43
- <Flex flex none column style={{ minWidth: 'auto' }}>
44
- <ControlledFormItem name='serial_no' colWidth='290px'>
45
- <Input className='form-control' placeholder={target?.desc} />
46
- </ControlledFormItem>
47
- </Flex>
48
- </Flex>
49
- )
50
- }
51
-
52
- export default SearchFilter
1
+ import React, { FC, useState } from 'react'
2
+ import _ from 'lodash'
3
+ import { Select, Input, Flex, ControlledFormItem } from '../../../../index'
4
+
5
+ const orderSearchType = [
6
+ {
7
+ value: 1,
8
+ text: '按订单号',
9
+ key: 'serial_no',
10
+ desc: '输入订单号搜索',
11
+ },
12
+ {
13
+ value: 2,
14
+ text: '按商户',
15
+ key: 'receive_customer_id',
16
+ desc: '输入商户编码或商户名',
17
+ },
18
+ ]
19
+
20
+ export const SearchFilter: FC = () => {
21
+ const [selected, setSelected] = useState(1)
22
+ const list = [...orderSearchType]
23
+ const target = _.find(list, (v) => v.value === selected)
24
+
25
+ return (
26
+ <Flex>
27
+ <div className='gm-padding-right-5' style={{ minWidth: '90px' }}>
28
+ <ControlledFormItem
29
+ name='searchType'
30
+ disabledCol
31
+ onFieldChange={(selected, { setFieldsValue }) => {
32
+ setSelected(selected)
33
+ if (selected === 2) {
34
+ setFieldsValue({
35
+ serial_no: 2222,
36
+ })
37
+ }
38
+ }}
39
+ >
40
+ <Select clean className='gm-block' data={list} />
41
+ </ControlledFormItem>
42
+ </div>
43
+ <Flex flex none column style={{ minWidth: 'auto' }}>
44
+ <ControlledFormItem name='serial_no' colWidth='290px'>
45
+ <Input className='form-control' placeholder={target?.desc} />
46
+ </ControlledFormItem>
47
+ </Flex>
48
+ </Flex>
49
+ )
50
+ }
51
+
52
+ export default SearchFilter