@gm-pc/react 1.27.1-beta.0 → 1.27.2-beta.1

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 +56 -56
  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 +187 -187
  76. package/src/component/date_picker/index.ts +2 -2
  77. package/src/component/date_picker/overlay.tsx +115 -115
  78. package/src/component/date_picker/stories.tsx +109 -109
  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 +56 -56
  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 +79 -79
  231. package/src/component/pagination/stories.tsx +63 -63
  232. package/src/component/pagination/style.less +51 -51
  233. package/src/component/pagination/types.ts +18 -18
  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 +154 -154
  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 +172 -172
  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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gm-pc/react",
3
- "version": "1.27.1-beta.0",
3
+ "version": "1.27.2-beta.1",
4
4
  "description": "观麦前端基础组件库",
5
5
  "author": "liyatang <liyatang@qq.com>",
6
6
  "homepage": "https://github.com/gmfe/gm-pc#readme",
@@ -24,7 +24,7 @@
24
24
  "dependencies": {
25
25
  "@gm-common/hooks": "^2.10.0",
26
26
  "@gm-common/tool": "^2.10.0",
27
- "@gm-pc/locales": "^1.27.1-beta.0",
27
+ "@gm-pc/locales": "^1.27.2-beta.1",
28
28
  "big.js": "^6.0.1",
29
29
  "classnames": "^2.2.5",
30
30
  "lodash": "^4.17.19",
@@ -48,5 +48,5 @@
48
48
  "react-router-dom": "^5.2.0",
49
49
  "react-window": "^1.8.5"
50
50
  },
51
- "gitHead": "eecad3bce81dd37787dc6e90f6ecfc2ee666ad26"
51
+ "gitHead": "7e734ddd8d556e426d1829b2c56e940bb3aa9a7e"
52
52
  }
@@ -1,5 +1,5 @@
1
- import { useMutationObserver } from './use_mutation_observer'
2
-
3
- export { useMutationObserver }
4
-
5
- export * from './use_form'
1
+ import { useMutationObserver } from './use_mutation_observer'
2
+
3
+ export { useMutationObserver }
4
+
5
+ export * from './use_form'
@@ -1,2 +1,2 @@
1
- export * from './use_form'
2
- export { default as useForm } from './use_form'
1
+ export * from './use_form'
2
+ export { default as useForm } from './use_form'
@@ -1,184 +1,184 @@
1
- /*
2
- * @Description: 受控表单自定义hook
3
- */
4
-
5
- import { useEffect, useCallback, useState, useRef } from 'react'
6
- import _, { noop } from 'lodash'
7
-
8
- import { handleValues } from './utils'
9
- import { RecordPartial, anyCallback, StringKey } from '../../../types'
10
- import { getRecordPartialObject, isFalsy } from '../../utils'
11
-
12
- export type OnFieldsChange<K = any> = (
13
- [changeField, changedValue]: [StringKey<K>, any],
14
- allValues: UseFormProps['initialValues']
15
- ) => void
16
-
17
- export interface UseFormProps<K = any> {
18
- /* 表单初始值 */
19
- initialValues?: RecordPartial<K, any>
20
- /* 规格化配置 */
21
- normalizes?: keyof any extends K
22
- ? { [key: string]: anyCallback }
23
- : {
24
- [P in keyof K]?: anyCallback<K[P]>
25
- }
26
- /* 表单项改变的回调,常用于表单项联动 */
27
- onFieldsChange?: OnFieldsChange<K>
28
- }
29
-
30
- export interface FormInstance<Values = any> {
31
- /* 重置表单为初始值 */
32
- resetFields(): void
33
- /* 设置表单值 */
34
- setFieldsValue(newValues: RecordPartial<Values, any>): void
35
- /* 获取表单值, isOrigin:是否获取表单原始值 */
36
- getFieldsValue(nameList?: StringKey<Values>[], isOrigin?: boolean): Partial<Values>
37
- /* 表单是否验证 */
38
- apiDoValidate(): boolean
39
- validateFields(): Promise<RecordPartial<Values, any>>
40
- }
41
- export default function useForm<K = any>(props: UseFormProps<K>) {
42
- const {
43
- // 初始默认值
44
- initialValues = {},
45
- normalizes = getRecordPartialObject<K, anyCallback>(),
46
- // 表单项改变的回调
47
- onFieldsChange = _.noop,
48
- } = props
49
- const canSubmitRef = useRef<Partial<Record<StringKey<K>, string>>>({})
50
- // 由于setState后没法拿到最新值,故将最新值保存到ref中
51
- const latestValuesRef = useRef<RecordPartial<K, any>>({
52
- ...initialValues,
53
- })
54
- // 存储表单值
55
- const [values, setValues] = useState<RecordPartial<K, any>>({
56
- ...initialValues,
57
- })
58
-
59
- useEffect(() => {
60
- latestValuesRef.current = { ...values }
61
- }, [values])
62
- const getNormalizeValue = useCallback(
63
- (key: StringKey<K>, value: any) => {
64
- if (normalizes[key] && !isFalsy(value)) {
65
- return normalizes[key]?.(value)
66
- }
67
- return value
68
- },
69
- [normalizes]
70
- )
71
- /**
72
- * @description: 根据组件类型,name以及组件onChange的原始值获取格式化的值
73
- * @param {string} type 组件类型
74
- * @param {string} fieldName 表单名称
75
- * @param {object} originValue onChange的原始值
76
- */
77
- const onChange = useCallback(
78
- (fieldName: StringKey<K>, originValue: any) => {
79
- const target = originValue?.target
80
- const newValue = target
81
- ? ['checkbox', 'radio'].includes(target?.type)
82
- ? target.checked
83
- : target.value
84
- : originValue
85
- setValues((values) => {
86
- latestValuesRef.current = handleValues(
87
- values,
88
- fieldName,
89
- newValue,
90
- onFieldsChange
91
- )
92
- return latestValuesRef.current
93
- })
94
-
95
- return getNormalizeValue(fieldName, newValue)
96
- },
97
- [onFieldsChange, getNormalizeValue]
98
- )
99
- /**
100
- * @description: 重置表单
101
- */
102
- const resetFields = useCallback(() => {
103
- setValues({ ...initialValues })
104
- }, [initialValues])
105
- /**
106
- * @description: 修改表单值
107
- * @param {object: {fieldName: newValue}} newValues
108
- */
109
- const setFieldsValue: FormInstance<K>['setFieldsValue'] = useCallback(
110
- (newValues = {}) => {
111
- setValues((values) => ({ ...values, ...newValues }))
112
- },
113
- []
114
- )
115
- /**
116
- * @description: 获取表单值
117
- * @param {(keyof K | string][]} nameList
118
- * @return {object} values 表单值
119
- */
120
- const getFieldsValue: FormInstance<K>['getFieldsValue'] = useCallback(
121
- (nameList, isOrigin) => {
122
- let tempValues = { ...latestValuesRef.current }
123
- // 如果有传入nameList,返回nameList的值
124
- if (Array.isArray(nameList)) {
125
- tempValues = _.pick({ ...latestValuesRef.current }, nameList)
126
- }
127
- if (isOrigin) {
128
- return tempValues as Partial<K>
129
- }
130
- // 如果配置了规格化
131
- if (Object.keys(normalizes).length) {
132
- Object.keys(normalizes).forEach((key) => {
133
- const tempKey = (key as unknown) as StringKey<K>
134
- const value = tempValues[tempKey]
135
- // 如果有规格化,返回规格化的数据
136
- tempValues[tempKey] = getNormalizeValue(tempKey, value)
137
- })
138
- }
139
- return tempValues as Partial<K>
140
- },
141
- [normalizes, getNormalizeValue]
142
- )
143
-
144
- const setCanSubmit = (key: StringKey<K>, message: string) => {
145
- canSubmitRef.current[key] = message
146
- }
147
- const canSubmit = useCallback(() => {
148
- return Object.values(canSubmitRef.current).every((value) => !value)
149
- }, [])
150
- const validateFields = useCallback((): Promise<RecordPartial<K, any>> => {
151
- return new Promise((resolve, reject) => {
152
- if (canSubmit()) {
153
- resolve(latestValuesRef.current)
154
- } else {
155
- reject(_.omitBy(canSubmitRef.current, _.isUndefined))
156
- }
157
- })
158
- }, [canSubmit])
159
- return {
160
- values,
161
- onChange,
162
- resetFields,
163
- setFieldsValue,
164
- getFieldsValue,
165
- getNormalizeValue,
166
- canSubmit,
167
- setCanSubmit,
168
- validateFields,
169
- }
170
- }
171
- /**
172
- * @description: 获取表单实例
173
- * @return {Readonly<FormInstance<T>>} 表单实例
174
- */
175
- export function useControlFormRef<T>() {
176
- const ref = useRef<Readonly<FormInstance<T>>>(({
177
- resetFields: noop,
178
- getFieldsValue: noop,
179
- setFieldsValue: noop,
180
- apiDoValidate: noop,
181
- validateFields: () => Promise.resolve(),
182
- } as unknown) as FormInstance<T>)
183
- return ref
184
- }
1
+ /*
2
+ * @Description: 受控表单自定义hook
3
+ */
4
+
5
+ import { useEffect, useCallback, useState, useRef } from 'react'
6
+ import _, { noop } from 'lodash'
7
+
8
+ import { handleValues } from './utils'
9
+ import { RecordPartial, anyCallback, StringKey } from '../../../types'
10
+ import { getRecordPartialObject, isFalsy } from '../../utils'
11
+
12
+ export type OnFieldsChange<K = any> = (
13
+ [changeField, changedValue]: [StringKey<K>, any],
14
+ allValues: UseFormProps['initialValues']
15
+ ) => void
16
+
17
+ export interface UseFormProps<K = any> {
18
+ /* 表单初始值 */
19
+ initialValues?: RecordPartial<K, any>
20
+ /* 规格化配置 */
21
+ normalizes?: keyof any extends K
22
+ ? { [key: string]: anyCallback }
23
+ : {
24
+ [P in keyof K]?: anyCallback<K[P]>
25
+ }
26
+ /* 表单项改变的回调,常用于表单项联动 */
27
+ onFieldsChange?: OnFieldsChange<K>
28
+ }
29
+
30
+ export interface FormInstance<Values = any> {
31
+ /* 重置表单为初始值 */
32
+ resetFields(): void
33
+ /* 设置表单值 */
34
+ setFieldsValue(newValues: RecordPartial<Values, any>): void
35
+ /* 获取表单值, isOrigin:是否获取表单原始值 */
36
+ getFieldsValue(nameList?: StringKey<Values>[], isOrigin?: boolean): Partial<Values>
37
+ /* 表单是否验证 */
38
+ apiDoValidate(): boolean
39
+ validateFields(): Promise<RecordPartial<Values, any>>
40
+ }
41
+ export default function useForm<K = any>(props: UseFormProps<K>) {
42
+ const {
43
+ // 初始默认值
44
+ initialValues = {},
45
+ normalizes = getRecordPartialObject<K, anyCallback>(),
46
+ // 表单项改变的回调
47
+ onFieldsChange = _.noop,
48
+ } = props
49
+ const canSubmitRef = useRef<Partial<Record<StringKey<K>, string>>>({})
50
+ // 由于setState后没法拿到最新值,故将最新值保存到ref中
51
+ const latestValuesRef = useRef<RecordPartial<K, any>>({
52
+ ...initialValues,
53
+ })
54
+ // 存储表单值
55
+ const [values, setValues] = useState<RecordPartial<K, any>>({
56
+ ...initialValues,
57
+ })
58
+
59
+ useEffect(() => {
60
+ latestValuesRef.current = { ...values }
61
+ }, [values])
62
+ const getNormalizeValue = useCallback(
63
+ (key: StringKey<K>, value: any) => {
64
+ if (normalizes[key] && !isFalsy(value)) {
65
+ return normalizes[key]?.(value)
66
+ }
67
+ return value
68
+ },
69
+ [normalizes]
70
+ )
71
+ /**
72
+ * @description: 根据组件类型,name以及组件onChange的原始值获取格式化的值
73
+ * @param {string} type 组件类型
74
+ * @param {string} fieldName 表单名称
75
+ * @param {object} originValue onChange的原始值
76
+ */
77
+ const onChange = useCallback(
78
+ (fieldName: StringKey<K>, originValue: any) => {
79
+ const target = originValue?.target
80
+ const newValue = target
81
+ ? ['checkbox', 'radio'].includes(target?.type)
82
+ ? target.checked
83
+ : target.value
84
+ : originValue
85
+ setValues((values) => {
86
+ latestValuesRef.current = handleValues(
87
+ values,
88
+ fieldName,
89
+ newValue,
90
+ onFieldsChange
91
+ )
92
+ return latestValuesRef.current
93
+ })
94
+
95
+ return getNormalizeValue(fieldName, newValue)
96
+ },
97
+ [onFieldsChange, getNormalizeValue]
98
+ )
99
+ /**
100
+ * @description: 重置表单
101
+ */
102
+ const resetFields = useCallback(() => {
103
+ setValues({ ...initialValues })
104
+ }, [initialValues])
105
+ /**
106
+ * @description: 修改表单值
107
+ * @param {object: {fieldName: newValue}} newValues
108
+ */
109
+ const setFieldsValue: FormInstance<K>['setFieldsValue'] = useCallback(
110
+ (newValues = {}) => {
111
+ setValues((values) => ({ ...values, ...newValues }))
112
+ },
113
+ []
114
+ )
115
+ /**
116
+ * @description: 获取表单值
117
+ * @param {(keyof K | string][]} nameList
118
+ * @return {object} values 表单值
119
+ */
120
+ const getFieldsValue: FormInstance<K>['getFieldsValue'] = useCallback(
121
+ (nameList, isOrigin) => {
122
+ let tempValues = { ...latestValuesRef.current }
123
+ // 如果有传入nameList,返回nameList的值
124
+ if (Array.isArray(nameList)) {
125
+ tempValues = _.pick({ ...latestValuesRef.current }, nameList)
126
+ }
127
+ if (isOrigin) {
128
+ return tempValues as Partial<K>
129
+ }
130
+ // 如果配置了规格化
131
+ if (Object.keys(normalizes).length) {
132
+ Object.keys(normalizes).forEach((key) => {
133
+ const tempKey = (key as unknown) as StringKey<K>
134
+ const value = tempValues[tempKey]
135
+ // 如果有规格化,返回规格化的数据
136
+ tempValues[tempKey] = getNormalizeValue(tempKey, value)
137
+ })
138
+ }
139
+ return tempValues as Partial<K>
140
+ },
141
+ [normalizes, getNormalizeValue]
142
+ )
143
+
144
+ const setCanSubmit = (key: StringKey<K>, message: string) => {
145
+ canSubmitRef.current[key] = message
146
+ }
147
+ const canSubmit = useCallback(() => {
148
+ return Object.values(canSubmitRef.current).every((value) => !value)
149
+ }, [])
150
+ const validateFields = useCallback((): Promise<RecordPartial<K, any>> => {
151
+ return new Promise((resolve, reject) => {
152
+ if (canSubmit()) {
153
+ resolve(latestValuesRef.current)
154
+ } else {
155
+ reject(_.omitBy(canSubmitRef.current, _.isUndefined))
156
+ }
157
+ })
158
+ }, [canSubmit])
159
+ return {
160
+ values,
161
+ onChange,
162
+ resetFields,
163
+ setFieldsValue,
164
+ getFieldsValue,
165
+ getNormalizeValue,
166
+ canSubmit,
167
+ setCanSubmit,
168
+ validateFields,
169
+ }
170
+ }
171
+ /**
172
+ * @description: 获取表单实例
173
+ * @return {Readonly<FormInstance<T>>} 表单实例
174
+ */
175
+ export function useControlFormRef<T>() {
176
+ const ref = useRef<Readonly<FormInstance<T>>>(({
177
+ resetFields: noop,
178
+ getFieldsValue: noop,
179
+ setFieldsValue: noop,
180
+ apiDoValidate: noop,
181
+ validateFields: () => Promise.resolve(),
182
+ } as unknown) as FormInstance<T>)
183
+ return ref
184
+ }
@@ -1,23 +1,23 @@
1
- /**
2
- * @description: 处理表单值
3
- * @param {object} values 旧的表单值
4
- * @param {string} fieldName 修改的表单名
5
- * @param {any} newValue 修改后的表单值
6
- */
7
- import { anyCallback } from '../../../types'
8
- import { judgeFunction } from '../../utils'
9
- function handleValues<T>(
10
- values: T,
11
- fieldName: keyof T,
12
- newValue: Partial<T>,
13
- onFieldsChange: anyCallback
14
- ): T {
15
- const newValues = { ...values, [fieldName]: newValue }
16
- // 表单值改变的时候触发回调,放入宏任务队列,避免setState的回调又是setState导致警告
17
- const timer = setTimeout(() => {
18
- judgeFunction(onFieldsChange, [fieldName, newValue], { ...newValues })
19
- clearTimeout(timer)
20
- })
21
- return newValues
22
- }
23
- export { handleValues }
1
+ /**
2
+ * @description: 处理表单值
3
+ * @param {object} values 旧的表单值
4
+ * @param {string} fieldName 修改的表单名
5
+ * @param {any} newValue 修改后的表单值
6
+ */
7
+ import { anyCallback } from '../../../types'
8
+ import { judgeFunction } from '../../utils'
9
+ function handleValues<T>(
10
+ values: T,
11
+ fieldName: keyof T,
12
+ newValue: Partial<T>,
13
+ onFieldsChange: anyCallback
14
+ ): T {
15
+ const newValues = { ...values, [fieldName]: newValue }
16
+ // 表单值改变的时候触发回调,放入宏任务队列,避免setState的回调又是setState导致警告
17
+ const timer = setTimeout(() => {
18
+ judgeFunction(onFieldsChange, [fieldName, newValue], { ...newValues })
19
+ clearTimeout(timer)
20
+ })
21
+ return newValues
22
+ }
23
+ export { handleValues }
@@ -1,19 +1,19 @@
1
- import { MutableRefObject, useEffect } from 'react'
2
-
3
- function useMutationObserver(
4
- ref: MutableRefObject<HTMLElement | null | undefined>,
5
- callback: MutationCallback,
6
- options = { attributes: true, characterData: true, subtree: true, childList: true }
7
- ) {
8
- useEffect((): void | (() => void) => {
9
- if (ref.current) {
10
- const observer = new window.MutationObserver(callback)
11
- observer.observe(ref.current, options)
12
- return () => {
13
- observer.disconnect()
14
- }
15
- }
16
- }, [ref, callback, options])
17
- }
18
-
19
- export { useMutationObserver }
1
+ import { MutableRefObject, useEffect } from 'react'
2
+
3
+ function useMutationObserver(
4
+ ref: MutableRefObject<HTMLElement | null | undefined>,
5
+ callback: MutationCallback,
6
+ options = { attributes: true, characterData: true, subtree: true, childList: true }
7
+ ) {
8
+ useEffect((): void | (() => void) => {
9
+ if (ref.current) {
10
+ const observer = new window.MutationObserver(callback)
11
+ observer.observe(ref.current, options)
12
+ return () => {
13
+ observer.disconnect()
14
+ }
15
+ }
16
+ }, [ref, callback, options])
17
+ }
18
+
19
+ export { useMutationObserver }
@@ -1,28 +1,28 @@
1
- import moment, { Moment } from 'moment'
2
-
3
- // 设置moment的时间值
4
- const setTimes = (date: Moment, time?: Moment): Moment => {
5
- // 没有设置时间
6
- if (!time) {
7
- return moment(date)
8
- }
9
-
10
- const year = moment(date).year()
11
- const month = moment(date).month()
12
- const day = moment(date).date()
13
-
14
- return moment(time).set({ year, month, date: day })
15
- }
16
-
17
- const getTimeCells = (span: number): Moment[] => {
18
- let time = moment().startOf('day')
19
- const cells = []
20
- while (time <= moment().endOf('day')) {
21
- cells.push(time)
22
- time = moment(+time + span)
23
- }
24
- cells.push(moment().endOf('day'))
25
- return cells
26
- }
27
-
28
- export { setTimes, getTimeCells }
1
+ import moment, { Moment } from 'moment'
2
+
3
+ // 设置moment的时间值
4
+ const setTimes = (date: Moment, time?: Moment): Moment => {
5
+ // 没有设置时间
6
+ if (!time) {
7
+ return moment(date)
8
+ }
9
+
10
+ const year = moment(date).year()
11
+ const month = moment(date).month()
12
+ const day = moment(date).date()
13
+
14
+ return moment(time).set({ year, month, date: day })
15
+ }
16
+
17
+ const getTimeCells = (span: number): Moment[] => {
18
+ let time = moment().startOf('day')
19
+ const cells = []
20
+ while (time <= moment().endOf('day')) {
21
+ cells.push(time)
22
+ time = moment(+time + span)
23
+ }
24
+ cells.push(moment().endOf('day'))
25
+ return cells
26
+ }
27
+
28
+ export { setTimes, getTimeCells }
@@ -1,4 +1,4 @@
1
- import { RecordPartial } from '../../types'
2
- export function getRecordPartialObject<K, V>(): RecordPartial<K, V> {
3
- return Object.create(null)
4
- }
1
+ import { RecordPartial } from '../../types'
2
+ export function getRecordPartialObject<K, V>(): RecordPartial<K, V> {
3
+ return Object.create(null)
4
+ }
@@ -1,3 +1,3 @@
1
- export * from './date'
2
- export * from './get_record_partical_object'
3
- export * from './utils'
1
+ export * from './date'
2
+ export * from './get_record_partical_object'
3
+ export * from './utils'
@@ -1,16 +1,16 @@
1
- import { anyCallback } from '../../types'
2
-
3
- export function isFalsy(value: any): boolean {
4
- return [undefined, null, ''].includes(value)
5
- }
6
- /**
7
- * @description: 判断是否是函数,是的话执行该函数并传入响应的参数
8
- * @param {function} fn 待执行的函数
9
- * @param {} args fn的参数
10
- */
11
-
12
- export function judgeFunction(fn?: anyCallback, ...args: any[]) {
13
- if (typeof fn === 'function') {
14
- return fn(...args)
15
- }
16
- }
1
+ import { anyCallback } from '../../types'
2
+
3
+ export function isFalsy(value: any): boolean {
4
+ return [undefined, null, ''].includes(value)
5
+ }
6
+ /**
7
+ * @description: 判断是否是函数,是的话执行该函数并传入响应的参数
8
+ * @param {function} fn 待执行的函数
9
+ * @param {} args fn的参数
10
+ */
11
+
12
+ export function judgeFunction(fn?: anyCallback, ...args: any[]) {
13
+ if (typeof fn === 'function') {
14
+ return fn(...args)
15
+ }
16
+ }
@@ -1,31 +1,31 @@
1
- import React, { CSSProperties, FC } from 'react'
2
- import _ from 'lodash'
3
-
4
- interface AffixProps {
5
- top?: number
6
- bottom?: number
7
- }
8
-
9
- const Affix: FC<AffixProps> = ({ children, top, bottom }) => {
10
- const style: CSSProperties = {
11
- position: 'sticky',
12
- zIndex: 950,
13
- }
14
-
15
- if (!_.isNil(top)) {
16
- style.top = `${top}px`
17
- }
18
-
19
- if (!_.isNil(bottom)) {
20
- style.bottom = `${bottom}px`
21
- }
22
-
23
- return (
24
- <div className='gm-affix' style={style}>
25
- {children}
26
- </div>
27
- )
28
- }
29
-
30
- export default Affix
31
- export type { AffixProps }
1
+ import React, { CSSProperties, FC } from 'react'
2
+ import _ from 'lodash'
3
+
4
+ interface AffixProps {
5
+ top?: number
6
+ bottom?: number
7
+ }
8
+
9
+ const Affix: FC<AffixProps> = ({ children, top, bottom }) => {
10
+ const style: CSSProperties = {
11
+ position: 'sticky',
12
+ zIndex: 950,
13
+ }
14
+
15
+ if (!_.isNil(top)) {
16
+ style.top = `${top}px`
17
+ }
18
+
19
+ if (!_.isNil(bottom)) {
20
+ style.bottom = `${bottom}px`
21
+ }
22
+
23
+ return (
24
+ <div className='gm-affix' style={style}>
25
+ {children}
26
+ </div>
27
+ )
28
+ }
29
+
30
+ export default Affix
31
+ export type { AffixProps }