@gm-pc/react 1.24.9-beta.7 → 1.24.9-beta.9

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,25 +1,25 @@
1
- import { ChangeEvent, CSSProperties, DragEvent } from 'react'
2
- import { FlexProps } from '../flex'
3
-
4
- interface UploaderFile extends File {
5
- preview: string
6
- }
7
-
8
- interface UploaderProps {
9
- onUpload(
10
- files: UploaderFile[],
11
- event: ChangeEvent<HTMLInputElement> | DragEvent<HTMLInputElement>
12
- ): void
13
- disabled?: boolean
14
- accept?: string
15
- multiple?: boolean
16
- className?: string
17
- style?: CSSProperties
18
- }
19
-
20
- // FlexProps 有待考虑
21
- type DefaultContainerProps = FlexProps
22
-
23
- type DefaultImageProps = DefaultContainerProps
24
-
25
- export type { UploaderProps, UploaderFile, DefaultContainerProps, DefaultImageProps }
1
+ import { ChangeEvent, CSSProperties, DragEvent } from 'react'
2
+ import { FlexProps } from '../flex'
3
+
4
+ interface UploaderFile extends File {
5
+ preview: string
6
+ }
7
+
8
+ interface UploaderProps {
9
+ onUpload(
10
+ files: UploaderFile[],
11
+ event: ChangeEvent<HTMLInputElement> | DragEvent<HTMLInputElement>
12
+ ): void
13
+ disabled?: boolean
14
+ accept?: string
15
+ multiple?: boolean
16
+ className?: string
17
+ style?: CSSProperties
18
+ }
19
+
20
+ // FlexProps 有待考虑
21
+ type DefaultContainerProps = FlexProps
22
+
23
+ type DefaultImageProps = DefaultContainerProps
24
+
25
+ export type { UploaderProps, UploaderFile, DefaultContainerProps, DefaultImageProps }
@@ -1,62 +1,62 @@
1
- import React, { ChangeEvent, FC, useCallback, useRef, DragEvent } from 'react'
2
- import { is } from '@gm-common/tool'
3
- import classNames from 'classnames'
4
- import { UploaderFile, UploaderProps } from './types'
5
- import DefaultContainer from './default_container'
6
-
7
- const Uploader: FC<UploaderProps> = ({
8
- onUpload,
9
- accept,
10
- multiple,
11
- className,
12
- children,
13
- disabled,
14
- ...rest
15
- }) => {
16
- const refInput = useRef<HTMLInputElement>(null)
17
-
18
- const handleClick = useCallback((): void => {
19
- if (disabled) {
20
- return
21
- }
22
- refInput.current!.click()
23
- }, [disabled])
24
-
25
- const handleUpload = useCallback(
26
- (event: ChangeEvent<HTMLInputElement> | DragEvent<HTMLInputElement>) => {
27
- event.preventDefault()
28
-
29
- const uploadFiles = (event as DragEvent<HTMLInputElement>).dataTransfer
30
- ? (event as DragEvent<HTMLInputElement>).dataTransfer.files
31
- : (event as ChangeEvent<HTMLInputElement>).target.files!
32
- const files: UploaderFile[] = Array.from(uploadFiles).map((file) =>
33
- Object.assign(file, { preview: window.URL.createObjectURL(file) })
34
- )
35
- onUpload(files, event)
36
-
37
- // @ts-ignore
38
- event.target.value = ''
39
- },
40
- [onUpload]
41
- )
42
-
43
- return (
44
- <div
45
- {...rest}
46
- className={classNames('gm-uploader', { disabled }, className)}
47
- onClick={handleClick}
48
- >
49
- {children ?? <DefaultContainer />}
50
- <input
51
- ref={refInput}
52
- type='file'
53
- className='gm-uploader-input'
54
- multiple={!is.weixin() && multiple}
55
- accept={accept}
56
- onChange={handleUpload}
57
- />
58
- </div>
59
- )
60
- }
61
-
62
- export default Uploader
1
+ import React, { ChangeEvent, FC, useCallback, useRef, DragEvent } from 'react'
2
+ import { is } from '@gm-common/tool'
3
+ import classNames from 'classnames'
4
+ import { UploaderFile, UploaderProps } from './types'
5
+ import DefaultContainer from './default_container'
6
+
7
+ const Uploader: FC<UploaderProps> = ({
8
+ onUpload,
9
+ accept,
10
+ multiple,
11
+ className,
12
+ children,
13
+ disabled,
14
+ ...rest
15
+ }) => {
16
+ const refInput = useRef<HTMLInputElement>(null)
17
+
18
+ const handleClick = useCallback((): void => {
19
+ if (disabled) {
20
+ return
21
+ }
22
+ refInput.current!.click()
23
+ }, [disabled])
24
+
25
+ const handleUpload = useCallback(
26
+ (event: ChangeEvent<HTMLInputElement> | DragEvent<HTMLInputElement>) => {
27
+ event.preventDefault()
28
+
29
+ const uploadFiles = (event as DragEvent<HTMLInputElement>).dataTransfer
30
+ ? (event as DragEvent<HTMLInputElement>).dataTransfer.files
31
+ : (event as ChangeEvent<HTMLInputElement>).target.files!
32
+ const files: UploaderFile[] = Array.from(uploadFiles).map((file) =>
33
+ Object.assign(file, { preview: window.URL.createObjectURL(file) })
34
+ )
35
+ onUpload(files, event)
36
+
37
+ // @ts-ignore
38
+ event.target.value = ''
39
+ },
40
+ [onUpload]
41
+ )
42
+
43
+ return (
44
+ <div
45
+ {...rest}
46
+ className={classNames('gm-uploader', { disabled }, className)}
47
+ onClick={handleClick}
48
+ >
49
+ {children ?? <DefaultContainer />}
50
+ <input
51
+ ref={refInput}
52
+ type='file'
53
+ className='gm-uploader-input'
54
+ multiple={!is.weixin() && multiple}
55
+ accept={accept}
56
+ onChange={handleUpload}
57
+ />
58
+ </div>
59
+ )
60
+ }
61
+
62
+ export default Uploader
@@ -1,7 +1,7 @@
1
- import { createContext } from 'react'
2
- import VBrowser from '../v_browser'
3
-
4
- const BrowserContext = createContext<VBrowser>(undefined as any)
5
- BrowserContext.displayName = 'VBrowserContext'
6
-
7
- export default BrowserContext
1
+ import { createContext } from 'react'
2
+ import VBrowser from '../v_browser'
3
+
4
+ const BrowserContext = createContext<VBrowser>(undefined as any)
5
+ BrowserContext.displayName = 'VBrowserContext'
6
+
7
+ export default BrowserContext
@@ -1,7 +1,7 @@
1
- import { createContext } from 'react'
2
- import { VBrowserWindow } from '../types'
3
-
4
- const BrowserWindowContext = createContext<VBrowserWindow>(undefined as any)
5
- BrowserWindowContext.displayName = 'VBrowserWindowContext'
6
-
7
- export default BrowserWindowContext
1
+ import { createContext } from 'react'
2
+ import { VBrowserWindow } from '../types'
3
+
4
+ const BrowserWindowContext = createContext<VBrowserWindow>(undefined as any)
5
+ BrowserWindowContext.displayName = 'VBrowserWindowContext'
6
+
7
+ export default BrowserWindowContext
@@ -1,53 +1,53 @@
1
- import { reaction } from 'mobx'
2
- import React, { useEffect, useContext, useRef } from 'react'
3
- import BrowserContext from '../context/browser'
4
- import BrowserWindowContext from '../context/browserWindow'
5
-
6
- type Noop = () => void
7
- /**
8
- * 多窗口中的子页面组件因为被缓存,原来的useEffect受到影响: effect仅在子窗口创建时触发,销毁函数仅在窗口关闭时触发;子窗口失活时依然会观察deps,并触发effect;
9
- *
10
- * 根据情况可以考虑使用useWindowEffect来替换useEffect,功能: 窗口激活时、deps更新时,触发fn执行; 窗口失活时执行fn返回的销毁函数; 如果子窗口为失活状态,不观察deps的更新;
11
- *
12
- */
13
- export default function useWindowEffect(fn: () => Noop | void, deps: Array<any> = []) {
14
- const browser = useContext(BrowserContext)
15
- /** hook所在窗口 */
16
- const browserWindow = useContext(BrowserWindowContext)
17
- const cb = useRef<Noop | void>()
18
-
19
- useEffect(() => {
20
- if (!browser || !browserWindow) {
21
- console.warn('useWindowEffect需要在VBrowser中使用, 否则将回退到useEffect')
22
- cb.current = fn()
23
- return cb.current
24
- }
25
-
26
- const alive = browserWindow.path === browser.activeWindow?.path
27
- if (!alive) return
28
-
29
- // 激活\失活
30
- const dispose = reaction(
31
- () => browser.activeWindow,
32
- (cur, pre) => {
33
- if (pre?.path !== browserWindow.path && cur?.path !== browserWindow.path) {
34
- return
35
- }
36
- const activate = cur?.path === browserWindow.path
37
- const deactivate = pre?.path === browserWindow.path
38
- if (activate) {
39
- cb.current = fn()
40
- }
41
- if (deactivate) {
42
- cb.current && cb.current()
43
- }
44
- }
45
- // { fireImmediately: true }
46
- )
47
- cb.current = fn()
48
- return () => {
49
- dispose()
50
- cb.current && cb.current()
51
- }
52
- }, deps)
53
- }
1
+ import { reaction } from 'mobx'
2
+ import React, { useEffect, useContext, useRef } from 'react'
3
+ import BrowserContext from '../context/browser'
4
+ import BrowserWindowContext from '../context/browserWindow'
5
+
6
+ type Noop = () => void
7
+ /**
8
+ * 多窗口中的子页面组件因为被缓存,原来的useEffect受到影响: effect仅在子窗口创建时触发,销毁函数仅在窗口关闭时触发;子窗口失活时依然会观察deps,并触发effect;
9
+ *
10
+ * 根据情况可以考虑使用useWindowEffect来替换useEffect,功能: 窗口激活时、deps更新时,触发fn执行; 窗口失活时执行fn返回的销毁函数; 如果子窗口为失活状态,不观察deps的更新;
11
+ *
12
+ */
13
+ export default function useWindowEffect(fn: () => Noop | void, deps: Array<any> = []) {
14
+ const browser = useContext(BrowserContext)
15
+ /** hook所在窗口 */
16
+ const browserWindow = useContext(BrowserWindowContext)
17
+ const cb = useRef<Noop | void>()
18
+
19
+ useEffect(() => {
20
+ if (!browser || !browserWindow) {
21
+ console.warn('useWindowEffect需要在VBrowser中使用, 否则将回退到useEffect')
22
+ cb.current = fn()
23
+ return cb.current
24
+ }
25
+
26
+ const alive = browserWindow.path === browser.activeWindow?.path
27
+ if (!alive) return
28
+
29
+ // 激活\失活
30
+ const dispose = reaction(
31
+ () => browser.activeWindow,
32
+ (cur, pre) => {
33
+ if (pre?.path !== browserWindow.path && cur?.path !== browserWindow.path) {
34
+ return
35
+ }
36
+ const activate = cur?.path === browserWindow.path
37
+ const deactivate = pre?.path === browserWindow.path
38
+ if (activate) {
39
+ cb.current = fn()
40
+ }
41
+ if (deactivate) {
42
+ cb.current && cb.current()
43
+ }
44
+ }
45
+ // { fireImmediately: true }
46
+ )
47
+ cb.current = fn()
48
+ return () => {
49
+ dispose()
50
+ cb.current && cb.current()
51
+ }
52
+ }, deps)
53
+ }
@@ -1,4 +1,4 @@
1
- export { default as VBrowser } from './v_browser'
2
- export { default as IframePortal } from './ui/iframe_portal'
3
- export type { VBrowserProps } from './types'
4
- export { default as useWindowEffect } from './hooks/useWindowEffect'
1
+ export { default as VBrowser } from './v_browser'
2
+ export { default as IframePortal } from './ui/iframe_portal'
3
+ export type { VBrowserProps } from './types'
4
+ export { default as useWindowEffect } from './hooks/useWindowEffect'
@@ -1,46 +1,46 @@
1
- import { ReactNode } from 'react'
2
-
3
- export interface VBrowserWindow {
4
- path: string
5
- query?: { [key: string]: string }
6
- /** 窗口图标 */
7
- faviconURL?: string
8
- /** 窗口名,如果不存在将尝试从vBrowser的autoTitle中取 */
9
- title?: ReactNode | Element
10
- /** 可否关闭,默认为true */
11
- closeable?: boolean
12
- }
13
-
14
- export interface VBrowserProps {
15
- /** 窗口数量限制 */
16
- maxLength?: number
17
- /** 准备就绪 */
18
- onReady?: Function
19
- /** 重新打开vBrowser时恢复已打开窗口, 默认为true */
20
- restore?: boolean
21
- /** 窗口变化事件 */
22
- onChange?: (
23
- from: VBrowserWindow | undefined,
24
- to: VBrowserWindow,
25
- windows: VBrowserWindow[]
26
- ) => void
27
- /** 窗口打开/切换前调用,返回false会阻止窗口打开/切换 */
28
- auth?: (from?: VBrowserWindow, to?: VBrowserWindow) => Promise<boolean> | boolean
29
- /**
30
- * 错误码参考
31
- * code: 0, message: '超过最大允许的窗口数量'
32
- */
33
- onError?: (error: { code: number; message: string }) => void
34
- /** 打开窗口如果没有传入标题,则使用此方法取标题 */
35
- autoTitle?: (path: string) => string
36
- /** 不以子窗口形式展示的页面名单(视觉上), 这些页面会子窗口形式打开,但是视觉上会隐藏子窗口标签栏,且在离开页面时自动close掉,以达到子页面不在vbrowser中的视觉效果 */
37
- ignoredPath?: Array<string | RegExp>
38
- }
39
-
40
- export interface CacheItem {
41
- vNode: JSX.Element & {
42
- ref: {
43
- current: HTMLDivElement | undefined
44
- }
45
- }
46
- }
1
+ import { ReactNode } from 'react'
2
+
3
+ export interface VBrowserWindow {
4
+ path: string
5
+ query?: { [key: string]: string }
6
+ /** 窗口图标 */
7
+ faviconURL?: string
8
+ /** 窗口名,如果不存在将尝试从vBrowser的autoTitle中取 */
9
+ title?: ReactNode | Element
10
+ /** 可否关闭,默认为true */
11
+ closeable?: boolean
12
+ }
13
+
14
+ export interface VBrowserProps {
15
+ /** 窗口数量限制 */
16
+ maxLength?: number
17
+ /** 准备就绪 */
18
+ onReady?: Function
19
+ /** 重新打开vBrowser时恢复已打开窗口, 默认为true */
20
+ restore?: boolean
21
+ /** 窗口变化事件 */
22
+ onChange?: (
23
+ from: VBrowserWindow | undefined,
24
+ to: VBrowserWindow,
25
+ windows: VBrowserWindow[]
26
+ ) => void
27
+ /** 窗口打开/切换前调用,返回false会阻止窗口打开/切换 */
28
+ auth?: (from?: VBrowserWindow, to?: VBrowserWindow) => Promise<boolean> | boolean
29
+ /**
30
+ * 错误码参考
31
+ * code: 0, message: '超过最大允许的窗口数量'
32
+ */
33
+ onError?: (error: { code: number; message: string }) => void
34
+ /** 打开窗口如果没有传入标题,则使用此方法取标题 */
35
+ autoTitle?: (path: string) => string
36
+ /** 不以子窗口形式展示的页面名单(视觉上), 这些页面会子窗口形式打开,但是视觉上会隐藏子窗口标签栏,且在离开页面时自动close掉,以达到子页面不在vbrowser中的视觉效果 */
37
+ ignoredPath?: Array<string | RegExp>
38
+ }
39
+
40
+ export interface CacheItem {
41
+ vNode: JSX.Element & {
42
+ ref: {
43
+ current: HTMLDivElement | undefined
44
+ }
45
+ }
46
+ }
@@ -1,28 +1,28 @@
1
- import React, { FC, useEffect, useState } from 'react'
2
- import { pages } from '../v_browser'
3
-
4
- interface IframePortalProps {}
5
-
6
- /**
7
- * 此组件使用在Switch中,用来访问任意子页面,子页面路径通过url参数path指定
8
- */
9
- const IframePortal: FC<IframePortalProps> = () => {
10
- const [component, setComponent] = useState<JSX.Element | null>(null)
11
-
12
- useEffect(() => {
13
- const query = new URLSearchParams(location.href.split('?')[1] || '')
14
- const path = query.get('path')
15
- const page = pages.find((p) => p.path === path)
16
- if (!page) throw new Error('[VWindow] page not found: ' + path)
17
- page.loader().then((module) => {
18
- const Component = module.default
19
- setComponent(<Component />)
20
- console.timeEnd('IframePortal')
21
- return null
22
- })
23
- }, [])
24
-
25
- return component
26
- }
27
-
28
- export default IframePortal
1
+ import React, { FC, useEffect, useState } from 'react'
2
+ import { pages } from '../v_browser'
3
+
4
+ interface IframePortalProps {}
5
+
6
+ /**
7
+ * 此组件使用在Switch中,用来访问任意子页面,子页面路径通过url参数path指定
8
+ */
9
+ const IframePortal: FC<IframePortalProps> = () => {
10
+ const [component, setComponent] = useState<JSX.Element | null>(null)
11
+
12
+ useEffect(() => {
13
+ const query = new URLSearchParams(location.href.split('?')[1] || '')
14
+ const path = query.get('path')
15
+ const page = pages.find((p) => p.path === path)
16
+ if (!page) throw new Error('[VWindow] page not found: ' + path)
17
+ page.loader().then((module) => {
18
+ const Component = module.default
19
+ setComponent(<Component />)
20
+ console.timeEnd('IframePortal')
21
+ return null
22
+ })
23
+ }, [])
24
+
25
+ return component
26
+ }
27
+
28
+ export default IframePortal