@gm-pc/react 1.26.2-beta.0 → 1.27.1-beta.0

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
@@ -1,36 +1,36 @@
1
- import { CSSProperties } from 'react'
2
- import { TreeDataItem } from '../../types'
3
-
4
- interface BaseLevelListProps<V> extends LevelListProps<V> {
5
- willActiveSelected: V[]
6
- onWillActiveSelect(selected: V[]): void
7
- }
8
-
9
- interface LevelListProps<V> {
10
- data?: TreeDataItem<V>[]
11
- selected?: V[]
12
- onSelect?(selected: V[]): void
13
- willActiveSelected?: V[]
14
- onWillActiveSelect?(selected: V[]): void
15
- titles?: string[]
16
- onlySelectLeaf?: boolean
17
- isReverse?: boolean
18
- className?: string
19
- style?: CSSProperties
20
- /* 内部用,暂时这么处理 */
21
- isForFunctionSet?: boolean
22
- }
23
-
24
- interface LevelItemProps<V> {
25
- title?: string
26
- data?: TreeDataItem<V>[]
27
- selected?: V
28
- onSelect?(selected: V): void
29
- onListItemMouseEnter?(value: TreeDataItem<V>): void
30
- willActiveSelected?: V
31
- onlySelectLeaf?: boolean
32
- className?: string
33
- style?: CSSProperties
34
- }
35
-
36
- export type { BaseLevelListProps, LevelListProps, LevelItemProps }
1
+ import { CSSProperties } from 'react'
2
+ import { TreeDataItem } from '../../types'
3
+
4
+ interface BaseLevelListProps<V> extends LevelListProps<V> {
5
+ willActiveSelected: V[]
6
+ onWillActiveSelect(selected: V[]): void
7
+ }
8
+
9
+ interface LevelListProps<V> {
10
+ data?: TreeDataItem<V>[]
11
+ selected?: V[]
12
+ onSelect?(selected: V[]): void
13
+ willActiveSelected?: V[]
14
+ onWillActiveSelect?(selected: V[]): void
15
+ titles?: string[]
16
+ onlySelectLeaf?: boolean
17
+ isReverse?: boolean
18
+ className?: string
19
+ style?: CSSProperties
20
+ /* 内部用,暂时这么处理 */
21
+ isForFunctionSet?: boolean
22
+ }
23
+
24
+ interface LevelItemProps<V> {
25
+ title?: string
26
+ data?: TreeDataItem<V>[]
27
+ selected?: V
28
+ onSelect?(selected: V): void
29
+ onListItemMouseEnter?(value: TreeDataItem<V>): void
30
+ willActiveSelected?: V
31
+ onlySelectLeaf?: boolean
32
+ className?: string
33
+ style?: CSSProperties
34
+ }
35
+
36
+ export type { BaseLevelListProps, LevelListProps, LevelItemProps }
@@ -1,19 +1,19 @@
1
- /**
2
- * 将树状数据平铺成多个数组,方便展示数据浮层
3
- */
4
- import { TreeDataItem } from '../../types'
5
-
6
- function getLevel<V>(data: TreeDataItem<V>[], selected: V[]): TreeDataItem<V>[][] {
7
- const result = [data]
8
- selected.forEach((item, index) => {
9
- const match = result[index].find((v) => v.value === item)
10
- if (match) {
11
- if (match.children) {
12
- result.push(match.children)
13
- }
14
- }
15
- })
16
- return result
17
- }
18
-
19
- export { getLevel }
1
+ /**
2
+ * 将树状数据平铺成多个数组,方便展示数据浮层
3
+ */
4
+ import { TreeDataItem } from '../../types'
5
+
6
+ function getLevel<V>(data: TreeDataItem<V>[], selected: V[]): TreeDataItem<V>[][] {
7
+ const result = [data]
8
+ selected.forEach((item, index) => {
9
+ const match = result[index].find((v) => v.value === item)
10
+ if (match) {
11
+ if (match.children) {
12
+ result.push(match.children)
13
+ }
14
+ }
15
+ })
16
+ return result
17
+ }
18
+
19
+ export { getLevel }
@@ -1,7 +1,7 @@
1
- export { default as LevelSelect } from './level_select'
2
- export { default as MultipleLevelSelect } from './multiple_level_select'
3
- export type {
4
- LevelSelectProps,
5
- LevelSelectDataItem,
6
- MultipleLevelSelectProps,
7
- } from './types'
1
+ export { default as LevelSelect } from './level_select'
2
+ export { default as MultipleLevelSelect } from './multiple_level_select'
3
+ export type {
4
+ LevelSelectProps,
5
+ LevelSelectDataItem,
6
+ MultipleLevelSelectProps,
7
+ } from './types'
@@ -1,216 +1,216 @@
1
- import React, { Component, createRef, ReactNode, KeyboardEvent } from 'react'
2
- import { LevelSelectDataItem, LevelSelectProps } from './types'
3
- import { Selection } from '../selection'
4
- import { Popover } from '../popover'
5
- import { Flex } from '../flex'
6
- import { LevelList } from '../level_list'
7
- import { getLevel } from '../level_list/utils'
8
- import _ from 'lodash'
9
- import { judgeFunction } from '../../common/utils'
10
- import { ConfigConsumer, ConfigProvider, ConfigProviderProps } from '../config_provider'
11
-
12
- interface LevelSelectState<V> {
13
- willActiveSelected: V[]
14
- }
15
-
16
- class LevelSelect<V = any> extends Component<LevelSelectProps<V>, LevelSelectState<V>> {
17
- static defaultProps = {
18
- renderSelected: (item: any) => item.map((v: any) => v.text).join(','),
19
- onKeyDown: _.noop,
20
- popoverType: 'focus',
21
- selected: [],
22
- onSelect: _.noop,
23
- }
24
-
25
- readonly state: LevelSelectState<V> = {
26
- willActiveSelected: this.props.selected,
27
- }
28
-
29
- private _selectionRef = createRef<Selection>()
30
- private _popoverRef = createRef<Popover>()
31
-
32
- public apiDoFocus = (): void => {
33
- this._selectionRef.current!.apiDoFocus()
34
- }
35
-
36
- public apiDoSelectWillActive = (): void => {
37
- const { onSelect } = this.props
38
- const { willActiveSelected } = this.state
39
- judgeFunction(onSelect, willActiveSelected)
40
- }
41
-
42
- private _handleSelect = (selected: V[]): void => {
43
- const { onSelect } = this.props
44
- this._popoverRef.current!.apiDoSetActive(false)
45
- judgeFunction(onSelect, selected)
46
- }
47
-
48
- private _handleWillActiveSelect = (willActiveSelected: V[]): void => {
49
- this.setState({ willActiveSelected })
50
- }
51
-
52
- private _renderPopup = (config: ConfigProviderProps): ReactNode => {
53
- const { titles, data, selected, right, onlySelectLeaf } = this.props
54
- const { willActiveSelected } = this.state
55
- return (
56
- <ConfigProvider {...config}>
57
- <Flex justifyEnd={right}>
58
- <LevelList<V>
59
- isReverse={right}
60
- data={data}
61
- onWillActiveSelect={this._handleWillActiveSelect}
62
- willActiveSelected={willActiveSelected}
63
- selected={selected}
64
- onSelect={this._handleSelect}
65
- titles={titles}
66
- onlySelectLeaf={onlySelectLeaf}
67
- />
68
- </Flex>
69
- </ConfigProvider>
70
- )
71
- }
72
-
73
- private _handleSelectionSelect = (selected: V[] | null): void => {
74
- const { onSelect } = this.props
75
- judgeFunction(onSelect, selected === null ? [] : selected)
76
- }
77
-
78
- private _getSelectItemText = (): ReactNode => {
79
- const { renderSelected } = this.props
80
- const selectedItems = this._getSelectedItem()
81
- return renderSelected!(selectedItems)
82
- }
83
-
84
- private _getSelectedItem = (): LevelSelectDataItem<V>[] => {
85
- const { data, selected = [] } = this.props
86
- const items: LevelSelectDataItem<V>[] = []
87
- selected.forEach((value, index) => {
88
- const match = (index === 0 ? data : items[index - 1].children)!.find(
89
- (item) => item.value === value
90
- )
91
- items.push(match!)
92
- })
93
- return items
94
- }
95
-
96
- private _handleKeyDown = (event: KeyboardEvent): void => {
97
- const { data = [], onKeyDown } = this.props
98
- const { willActiveSelected } = this.state
99
-
100
- // 不是方向键,不用拦截
101
- if (
102
- event.key !== 'ArrowDown' &&
103
- event.key !== 'ArrowUp' &&
104
- event.key !== 'ArrowLeft' &&
105
- event.key !== 'ArrowRight'
106
- ) {
107
- onKeyDown!(event)
108
- return
109
- }
110
-
111
- // 没有数据,不拦截
112
- if (data.length === 0) {
113
- onKeyDown!(event)
114
- return
115
- }
116
-
117
- // 避免引用
118
- let newWill = willActiveSelected.slice()
119
- const level = getLevel(data, willActiveSelected)
120
-
121
- // 如果没法左和右了,则不拦截,抛出去
122
- if (
123
- (event.key === 'ArrowLeft' && newWill.length === 0) ||
124
- (event.key === 'ArrowRight' && newWill.length >= level.length)
125
- ) {
126
- onKeyDown!(event)
127
- return
128
- }
129
-
130
- // 以下要拦截拉
131
-
132
- // 阻止默认行为
133
- event.preventDefault()
134
-
135
- if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
136
- // 如果没有选择,则默认到第一个
137
- if (newWill.length === 0) {
138
- newWill = [level[0][0].value]
139
- } else {
140
- const arr = level[newWill.length - 1]
141
- let index = _.findIndex(arr, (v) => v.value === newWill[newWill.length - 1])
142
-
143
- if (event.key === 'ArrowDown') {
144
- index++
145
- } else {
146
- index--
147
- }
148
-
149
- // fix index
150
- if (index > arr.length - 1) {
151
- index = 0
152
- } else if (index < 0) {
153
- index = arr.length - 1
154
- }
155
-
156
- newWill[newWill.length - 1] = arr[index].value
157
- }
158
- } else if (event.key === 'ArrowLeft') {
159
- newWill.pop()
160
- } else if (event.key === 'ArrowRight') {
161
- newWill.push(level[newWill.length][0].value)
162
- }
163
-
164
- this.setState({
165
- willActiveSelected: newWill,
166
- })
167
- }
168
-
169
- private _renderTarget = (): ReactNode => {
170
- const {
171
- titles = [],
172
- data = [],
173
- selected = [],
174
- disabled,
175
- popoverType,
176
- right,
177
- onlySelectLeaf,
178
- ...rest
179
- } = this.props
180
-
181
- // 注意转换 selected onSelect renderSelected
182
- return (
183
- <Selection
184
- {...rest}
185
- ref={this._selectionRef}
186
- selected={!selected.length ? null : selected}
187
- onSelect={this._handleSelectionSelect}
188
- renderSelected={() => this._getSelectItemText()}
189
- onKeyDown={this._handleKeyDown}
190
- disabled={disabled}
191
- />
192
- )
193
- }
194
-
195
- render() {
196
- const { disabled, children, popoverType, right } = this.props
197
- return (
198
- <ConfigConsumer>
199
- {(config) => (
200
- <Popover
201
- ref={this._popoverRef}
202
- right={right}
203
- disabled={disabled}
204
- popup={this._renderPopup(config)}
205
- type={popoverType}
206
- pureContainer
207
- >
208
- {children ?? this._renderTarget()}
209
- </Popover>
210
- )}
211
- </ConfigConsumer>
212
- )
213
- }
214
- }
215
-
216
- export default LevelSelect
1
+ import React, { Component, createRef, ReactNode, KeyboardEvent } from 'react'
2
+ import { LevelSelectDataItem, LevelSelectProps } from './types'
3
+ import { Selection } from '../selection'
4
+ import { Popover } from '../popover'
5
+ import { Flex } from '../flex'
6
+ import { LevelList } from '../level_list'
7
+ import { getLevel } from '../level_list/utils'
8
+ import _ from 'lodash'
9
+ import { judgeFunction } from '../../common/utils'
10
+ import { ConfigConsumer, ConfigProvider, ConfigProviderProps } from '../config_provider'
11
+
12
+ interface LevelSelectState<V> {
13
+ willActiveSelected: V[]
14
+ }
15
+
16
+ class LevelSelect<V = any> extends Component<LevelSelectProps<V>, LevelSelectState<V>> {
17
+ static defaultProps = {
18
+ renderSelected: (item: any) => item.map((v: any) => v.text).join(','),
19
+ onKeyDown: _.noop,
20
+ popoverType: 'focus',
21
+ selected: [],
22
+ onSelect: _.noop,
23
+ }
24
+
25
+ readonly state: LevelSelectState<V> = {
26
+ willActiveSelected: this.props.selected,
27
+ }
28
+
29
+ private _selectionRef = createRef<Selection>()
30
+ private _popoverRef = createRef<Popover>()
31
+
32
+ public apiDoFocus = (): void => {
33
+ this._selectionRef.current!.apiDoFocus()
34
+ }
35
+
36
+ public apiDoSelectWillActive = (): void => {
37
+ const { onSelect } = this.props
38
+ const { willActiveSelected } = this.state
39
+ judgeFunction(onSelect, willActiveSelected)
40
+ }
41
+
42
+ private _handleSelect = (selected: V[]): void => {
43
+ const { onSelect } = this.props
44
+ this._popoverRef.current!.apiDoSetActive(false)
45
+ judgeFunction(onSelect, selected)
46
+ }
47
+
48
+ private _handleWillActiveSelect = (willActiveSelected: V[]): void => {
49
+ this.setState({ willActiveSelected })
50
+ }
51
+
52
+ private _renderPopup = (config: ConfigProviderProps): ReactNode => {
53
+ const { titles, data, selected, right, onlySelectLeaf } = this.props
54
+ const { willActiveSelected } = this.state
55
+ return (
56
+ <ConfigProvider {...config}>
57
+ <Flex justifyEnd={right}>
58
+ <LevelList<V>
59
+ isReverse={right}
60
+ data={data}
61
+ onWillActiveSelect={this._handleWillActiveSelect}
62
+ willActiveSelected={willActiveSelected}
63
+ selected={selected}
64
+ onSelect={this._handleSelect}
65
+ titles={titles}
66
+ onlySelectLeaf={onlySelectLeaf}
67
+ />
68
+ </Flex>
69
+ </ConfigProvider>
70
+ )
71
+ }
72
+
73
+ private _handleSelectionSelect = (selected: V[] | null): void => {
74
+ const { onSelect } = this.props
75
+ judgeFunction(onSelect, selected === null ? [] : selected)
76
+ }
77
+
78
+ private _getSelectItemText = (): ReactNode => {
79
+ const { renderSelected } = this.props
80
+ const selectedItems = this._getSelectedItem()
81
+ return renderSelected!(selectedItems)
82
+ }
83
+
84
+ private _getSelectedItem = (): LevelSelectDataItem<V>[] => {
85
+ const { data, selected = [] } = this.props
86
+ const items: LevelSelectDataItem<V>[] = []
87
+ selected.forEach((value, index) => {
88
+ const match = (index === 0 ? data : items[index - 1].children)!.find(
89
+ (item) => item.value === value
90
+ )
91
+ items.push(match!)
92
+ })
93
+ return items
94
+ }
95
+
96
+ private _handleKeyDown = (event: KeyboardEvent): void => {
97
+ const { data = [], onKeyDown } = this.props
98
+ const { willActiveSelected } = this.state
99
+
100
+ // 不是方向键,不用拦截
101
+ if (
102
+ event.key !== 'ArrowDown' &&
103
+ event.key !== 'ArrowUp' &&
104
+ event.key !== 'ArrowLeft' &&
105
+ event.key !== 'ArrowRight'
106
+ ) {
107
+ onKeyDown!(event)
108
+ return
109
+ }
110
+
111
+ // 没有数据,不拦截
112
+ if (data.length === 0) {
113
+ onKeyDown!(event)
114
+ return
115
+ }
116
+
117
+ // 避免引用
118
+ let newWill = willActiveSelected.slice()
119
+ const level = getLevel(data, willActiveSelected)
120
+
121
+ // 如果没法左和右了,则不拦截,抛出去
122
+ if (
123
+ (event.key === 'ArrowLeft' && newWill.length === 0) ||
124
+ (event.key === 'ArrowRight' && newWill.length >= level.length)
125
+ ) {
126
+ onKeyDown!(event)
127
+ return
128
+ }
129
+
130
+ // 以下要拦截拉
131
+
132
+ // 阻止默认行为
133
+ event.preventDefault()
134
+
135
+ if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
136
+ // 如果没有选择,则默认到第一个
137
+ if (newWill.length === 0) {
138
+ newWill = [level[0][0].value]
139
+ } else {
140
+ const arr = level[newWill.length - 1]
141
+ let index = _.findIndex(arr, (v) => v.value === newWill[newWill.length - 1])
142
+
143
+ if (event.key === 'ArrowDown') {
144
+ index++
145
+ } else {
146
+ index--
147
+ }
148
+
149
+ // fix index
150
+ if (index > arr.length - 1) {
151
+ index = 0
152
+ } else if (index < 0) {
153
+ index = arr.length - 1
154
+ }
155
+
156
+ newWill[newWill.length - 1] = arr[index].value
157
+ }
158
+ } else if (event.key === 'ArrowLeft') {
159
+ newWill.pop()
160
+ } else if (event.key === 'ArrowRight') {
161
+ newWill.push(level[newWill.length][0].value)
162
+ }
163
+
164
+ this.setState({
165
+ willActiveSelected: newWill,
166
+ })
167
+ }
168
+
169
+ private _renderTarget = (): ReactNode => {
170
+ const {
171
+ titles = [],
172
+ data = [],
173
+ selected = [],
174
+ disabled,
175
+ popoverType,
176
+ right,
177
+ onlySelectLeaf,
178
+ ...rest
179
+ } = this.props
180
+
181
+ // 注意转换 selected onSelect renderSelected
182
+ return (
183
+ <Selection
184
+ {...rest}
185
+ ref={this._selectionRef}
186
+ selected={!selected.length ? null : selected}
187
+ onSelect={this._handleSelectionSelect}
188
+ renderSelected={() => this._getSelectItemText()}
189
+ onKeyDown={this._handleKeyDown}
190
+ disabled={disabled}
191
+ />
192
+ )
193
+ }
194
+
195
+ render() {
196
+ const { disabled, children, popoverType, right } = this.props
197
+ return (
198
+ <ConfigConsumer>
199
+ {(config) => (
200
+ <Popover
201
+ ref={this._popoverRef}
202
+ right={right}
203
+ disabled={disabled}
204
+ popup={this._renderPopup(config)}
205
+ type={popoverType}
206
+ pureContainer
207
+ >
208
+ {children ?? this._renderTarget()}
209
+ </Popover>
210
+ )}
211
+ </ConfigConsumer>
212
+ )
213
+ }
214
+ }
215
+
216
+ export default LevelSelect