@gm-pc/react 1.25.1-beta.1 → 1.26.0-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 +52 -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 +79 -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 +154 -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 +172 -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,87 +1,87 @@
1
- import React from 'react'
2
- import moment from 'moment'
3
- import { observable } from 'mobx'
4
-
5
- import TimeSpanPicker from './time_span_picker'
6
- import TimeSpan from './time_span'
7
-
8
- const store = observable({
9
- date: moment().startOf('day').toDate(),
10
- customDate: moment().hour(10).minute(30).toDate(),
11
- setDate(date: any) {
12
- this.date = date
13
- },
14
- setCustomDate(date: any) {
15
- this.customDate = date
16
- },
17
- })
18
-
19
- export const ComTimeSpan = () => (
20
- <TimeSpan
21
- time={store.date}
22
- onChange={(date) => {
23
- store.setDate(date)
24
- }}
25
- />
26
- )
27
-
28
- export const ComTimeSpanPicker = () => (
29
- <TimeSpanPicker
30
- date={store.date}
31
- onChange={(date) => {
32
- store.setDate(date)
33
- }}
34
- />
35
- )
36
-
37
- export const ComTimeSpanPickerWithDisabledSpan = () => (
38
- <TimeSpanPicker
39
- date={store.date}
40
- onChange={(date) => {
41
- store.setDate(date)
42
- }}
43
- disabledSpan={(spanMoment) =>
44
- moment(spanMoment).isSameOrAfter(moment('11:00', 'HH:mm')) &&
45
- moment(spanMoment).isSameOrBefore(moment('18:30', 'HH:mm'))
46
- }
47
- />
48
- )
49
-
50
- export const ComTimeSpanPickerWithSpan = () => (
51
- <TimeSpanPicker
52
- date={store.date}
53
- max={moment().hour(23).minute(0).toDate()}
54
- span={60 * 60 * 1000}
55
- onChange={(date) => {
56
- store.setDate(date)
57
- }}
58
- />
59
- )
60
-
61
- export const ComTimeSpanPickerWithCustom = () => (
62
- <>
63
- <div className='gm-margin-tb-10'>自定义children</div>
64
- <TimeSpanPicker
65
- date={store.date}
66
- onChange={(date) => {
67
- store.setDate(date)
68
- }}
69
- >
70
- <span>{store.date ? moment(store.date).format('HH:mm') : '请点击选择'}</span>
71
- </TimeSpanPicker>
72
- <div className='gm-margin-tb-10'>自定义开始时间跟结束时间</div>
73
- <TimeSpanPicker
74
- date={store.customDate}
75
- beginTime={moment().hour(8).minute(30).toDate()}
76
- endTime={moment().hour(22).minute(30).toDate()}
77
- span={60 * 60 * 1000}
78
- onChange={(date) => {
79
- store.setCustomDate(date)
80
- }}
81
- />
82
- </>
83
- )
84
-
85
- export default {
86
- title: '表单/TimeSpan',
87
- }
1
+ import React from 'react'
2
+ import moment from 'moment'
3
+ import { observable } from 'mobx'
4
+
5
+ import TimeSpanPicker from './time_span_picker'
6
+ import TimeSpan from './time_span'
7
+
8
+ const store = observable({
9
+ date: moment().startOf('day').toDate(),
10
+ customDate: moment().hour(10).minute(30).toDate(),
11
+ setDate(date: any) {
12
+ this.date = date
13
+ },
14
+ setCustomDate(date: any) {
15
+ this.customDate = date
16
+ },
17
+ })
18
+
19
+ export const ComTimeSpan = () => (
20
+ <TimeSpan
21
+ time={store.date}
22
+ onChange={(date) => {
23
+ store.setDate(date)
24
+ }}
25
+ />
26
+ )
27
+
28
+ export const ComTimeSpanPicker = () => (
29
+ <TimeSpanPicker
30
+ date={store.date}
31
+ onChange={(date) => {
32
+ store.setDate(date)
33
+ }}
34
+ />
35
+ )
36
+
37
+ export const ComTimeSpanPickerWithDisabledSpan = () => (
38
+ <TimeSpanPicker
39
+ date={store.date}
40
+ onChange={(date) => {
41
+ store.setDate(date)
42
+ }}
43
+ disabledSpan={(spanMoment) =>
44
+ moment(spanMoment).isSameOrAfter(moment('11:00', 'HH:mm')) &&
45
+ moment(spanMoment).isSameOrBefore(moment('18:30', 'HH:mm'))
46
+ }
47
+ />
48
+ )
49
+
50
+ export const ComTimeSpanPickerWithSpan = () => (
51
+ <TimeSpanPicker
52
+ date={store.date}
53
+ max={moment().hour(23).minute(0).toDate()}
54
+ span={60 * 60 * 1000}
55
+ onChange={(date) => {
56
+ store.setDate(date)
57
+ }}
58
+ />
59
+ )
60
+
61
+ export const ComTimeSpanPickerWithCustom = () => (
62
+ <>
63
+ <div className='gm-margin-tb-10'>自定义children</div>
64
+ <TimeSpanPicker
65
+ date={store.date}
66
+ onChange={(date) => {
67
+ store.setDate(date)
68
+ }}
69
+ >
70
+ <span>{store.date ? moment(store.date).format('HH:mm') : '请点击选择'}</span>
71
+ </TimeSpanPicker>
72
+ <div className='gm-margin-tb-10'>自定义开始时间跟结束时间</div>
73
+ <TimeSpanPicker
74
+ date={store.customDate}
75
+ beginTime={moment().hour(8).minute(30).toDate()}
76
+ endTime={moment().hour(22).minute(30).toDate()}
77
+ span={60 * 60 * 1000}
78
+ onChange={(date) => {
79
+ store.setCustomDate(date)
80
+ }}
81
+ />
82
+ </>
83
+ )
84
+
85
+ export default {
86
+ title: '表单/TimeSpan',
87
+ }
@@ -1,45 +1,45 @@
1
- .gm-time-span {
2
- overflow: hidden;
3
- border: 1px solid var(--gm-color-border);
4
- background: white;
5
- padding: 10px 0;
6
-
7
- .gm-time-span-list {
8
- width: 130px;
9
- padding: 0 5px;
10
-
11
- .gm-time-span-list-cell {
12
- color: black;
13
- text-align: center;
14
- cursor: pointer;
15
- height: 22px;
16
- margin: 2px 5px;
17
- line-height: 22px;
18
- border: 1px solid transparent;
19
-
20
- &:hover {
21
- background-color: var(--gm-color-primary);
22
- color: white;
23
- }
24
-
25
- &.active {
26
- border: 1px solid var(--gm-color-primary);
27
- }
28
-
29
- &.disabled {
30
- background: white;
31
- color: var(--gm-color-secondary);
32
- cursor: not-allowed;
33
- }
34
- }
35
- }
36
- }
37
-
38
- .gm-time-span-picker {
39
- vertical-align: middle;
40
- display: inline-block;
41
-
42
- .gm-time-span {
43
- border: none;
44
- }
45
- }
1
+ .gm-time-span {
2
+ overflow: hidden;
3
+ border: 1px solid var(--gm-color-border);
4
+ background: white;
5
+ padding: 10px 0;
6
+
7
+ .gm-time-span-list {
8
+ width: 130px;
9
+ padding: 0 5px;
10
+
11
+ .gm-time-span-list-cell {
12
+ color: black;
13
+ text-align: center;
14
+ cursor: pointer;
15
+ height: 22px;
16
+ margin: 2px 5px;
17
+ line-height: 22px;
18
+ border: 1px solid transparent;
19
+
20
+ &:hover {
21
+ background-color: var(--gm-color-primary);
22
+ color: white;
23
+ }
24
+
25
+ &.active {
26
+ border: 1px solid var(--gm-color-primary);
27
+ }
28
+
29
+ &.disabled {
30
+ background: white;
31
+ color: var(--gm-color-secondary);
32
+ cursor: not-allowed;
33
+ }
34
+ }
35
+ }
36
+ }
37
+
38
+ .gm-time-span-picker {
39
+ vertical-align: middle;
40
+ display: inline-block;
41
+
42
+ .gm-time-span {
43
+ border: none;
44
+ }
45
+ }
@@ -1,129 +1,129 @@
1
- import React, { FC, ReactNode } from 'react'
2
- import moment, { Moment } from 'moment'
3
- import _ from 'lodash'
4
- import classNames from 'classnames'
5
-
6
- import { Flex } from '../flex'
7
- import { TimeSpanProps } from './types'
8
- import { getTime, renderItemFunc } from './util'
9
-
10
- const initMin = moment().startOf('day').toDate()
11
- const initMax = moment().endOf('day').toDate()
12
-
13
- const TimeSpan: FC<TimeSpanProps> = ({
14
- min = initMin,
15
- max = initMax,
16
- disabledSpan,
17
- span = 30 * 60 * 1000,
18
- time,
19
- renderItem = renderItemFunc,
20
- onChange,
21
- beginTime,
22
- enabledEndTimeOfDay,
23
- endTime,
24
- }) => {
25
- const _beginTime = getTime(beginTime) ?? moment().startOf('day')
26
- const _endTime = getTime(endTime) ?? moment().endOf('day')
27
-
28
- const getTimeCells = () => {
29
- let time = _beginTime
30
- const cells = []
31
- while (time <= _endTime) {
32
- cells.push(time)
33
- time = moment(+time + span!)
34
- }
35
- if (enabledEndTimeOfDay) {
36
- cells.push(moment().endOf('day'))
37
- }
38
-
39
- // 分三列
40
- let len = Math.ceil(cells.length / 3)
41
- if (len % 2) {
42
- len++
43
- }
44
- const firstCells = cells.slice(0, len)
45
- const middleCells = cells.slice(len, 2 * len)
46
- const finalCells = cells.slice(2 * len)
47
- return [firstCells, middleCells, finalCells]
48
- }
49
-
50
- const handleSelectTime = (value: Moment): void => {
51
- onChange && onChange(value.toDate())
52
- }
53
-
54
- const isActive = (value: Moment): boolean => {
55
- const select = moment(time)
56
-
57
- // 判断时/分 是否相同
58
- return value.hour() === select.hour() && value.minute() === select.minute()
59
- }
60
-
61
- const isDisable = (time: Moment): boolean => {
62
- // 无需限制
63
- if (!max && !min && !disabledSpan) {
64
- return false
65
- }
66
- const dMax = max ? moment(max) : _endTime
67
- const dMin = min ? moment(min) : _beginTime
68
- const dTime = moment(time)
69
- return (
70
- !(dTime <= dMax && dTime >= dMin) ||
71
- ((disabledSpan && disabledSpan(time.toDate())) as boolean)
72
- )
73
- }
74
-
75
- const renderTimesList = (cells: Moment[]): ReactNode => {
76
- let width = '50px'
77
- if (span! >= 60 * 60 * 1000) {
78
- width = '100px'
79
- }
80
-
81
- return (
82
- <Flex wrap row className='gm-time-span-list'>
83
- {cells.map((value) => {
84
- const disabled = isDisable(value)
85
- return (
86
- <span
87
- key={value.format('HH:mm')}
88
- className={classNames('gm-time-span-list-cell', {
89
- active: isActive(value),
90
- disabled,
91
- })}
92
- style={{ width }}
93
- onClick={disabled ? _.noop : () => handleSelectTime(value)}
94
- >
95
- {renderItem!(value.toDate())}
96
- </span>
97
- )
98
- })}
99
- </Flex>
100
- )
101
- }
102
-
103
- const cells = getTimeCells()
104
- const totalWidth = cells.filter((cell) => cell.length).length * 130
105
-
106
- return (
107
- <Flex row className='gm-time-span' style={{ width: `${totalWidth}px` }}>
108
- {cells.map((cell, index) => {
109
- if (!cell.length) {
110
- // 时间间隔比较大时,某一列无数据的情况
111
- return null
112
- }
113
- return (
114
- <Flex
115
- key={index}
116
- className={classNames({
117
- 'gm-border-right': index !== cells.length - 1,
118
- })}
119
- alignStart
120
- >
121
- {renderTimesList(cell)}
122
- </Flex>
123
- )
124
- })}
125
- </Flex>
126
- )
127
- }
128
-
129
- export default TimeSpan
1
+ import React, { FC, ReactNode } from 'react'
2
+ import moment, { Moment } from 'moment'
3
+ import _ from 'lodash'
4
+ import classNames from 'classnames'
5
+
6
+ import { Flex } from '../flex'
7
+ import { TimeSpanProps } from './types'
8
+ import { getTime, renderItemFunc } from './util'
9
+
10
+ const initMin = moment().startOf('day').toDate()
11
+ const initMax = moment().endOf('day').toDate()
12
+
13
+ const TimeSpan: FC<TimeSpanProps> = ({
14
+ min = initMin,
15
+ max = initMax,
16
+ disabledSpan,
17
+ span = 30 * 60 * 1000,
18
+ time,
19
+ renderItem = renderItemFunc,
20
+ onChange,
21
+ beginTime,
22
+ enabledEndTimeOfDay,
23
+ endTime,
24
+ }) => {
25
+ const _beginTime = getTime(beginTime) ?? moment().startOf('day')
26
+ const _endTime = getTime(endTime) ?? moment().endOf('day')
27
+
28
+ const getTimeCells = () => {
29
+ let time = _beginTime
30
+ const cells = []
31
+ while (time <= _endTime) {
32
+ cells.push(time)
33
+ time = moment(+time + span!)
34
+ }
35
+ if (enabledEndTimeOfDay) {
36
+ cells.push(moment().endOf('day'))
37
+ }
38
+
39
+ // 分三列
40
+ let len = Math.ceil(cells.length / 3)
41
+ if (len % 2) {
42
+ len++
43
+ }
44
+ const firstCells = cells.slice(0, len)
45
+ const middleCells = cells.slice(len, 2 * len)
46
+ const finalCells = cells.slice(2 * len)
47
+ return [firstCells, middleCells, finalCells]
48
+ }
49
+
50
+ const handleSelectTime = (value: Moment): void => {
51
+ onChange && onChange(value.toDate())
52
+ }
53
+
54
+ const isActive = (value: Moment): boolean => {
55
+ const select = moment(time)
56
+
57
+ // 判断时/分 是否相同
58
+ return value.hour() === select.hour() && value.minute() === select.minute()
59
+ }
60
+
61
+ const isDisable = (time: Moment): boolean => {
62
+ // 无需限制
63
+ if (!max && !min && !disabledSpan) {
64
+ return false
65
+ }
66
+ const dMax = max ? moment(max) : _endTime
67
+ const dMin = min ? moment(min) : _beginTime
68
+ const dTime = moment(time)
69
+ return (
70
+ !(dTime <= dMax && dTime >= dMin) ||
71
+ ((disabledSpan && disabledSpan(time.toDate())) as boolean)
72
+ )
73
+ }
74
+
75
+ const renderTimesList = (cells: Moment[]): ReactNode => {
76
+ let width = '50px'
77
+ if (span! >= 60 * 60 * 1000) {
78
+ width = '100px'
79
+ }
80
+
81
+ return (
82
+ <Flex wrap row className='gm-time-span-list'>
83
+ {cells.map((value) => {
84
+ const disabled = isDisable(value)
85
+ return (
86
+ <span
87
+ key={value.format('HH:mm')}
88
+ className={classNames('gm-time-span-list-cell', {
89
+ active: isActive(value),
90
+ disabled,
91
+ })}
92
+ style={{ width }}
93
+ onClick={disabled ? _.noop : () => handleSelectTime(value)}
94
+ >
95
+ {renderItem!(value.toDate())}
96
+ </span>
97
+ )
98
+ })}
99
+ </Flex>
100
+ )
101
+ }
102
+
103
+ const cells = getTimeCells()
104
+ const totalWidth = cells.filter((cell) => cell.length).length * 130
105
+
106
+ return (
107
+ <Flex row className='gm-time-span' style={{ width: `${totalWidth}px` }}>
108
+ {cells.map((cell, index) => {
109
+ if (!cell.length) {
110
+ // 时间间隔比较大时,某一列无数据的情况
111
+ return null
112
+ }
113
+ return (
114
+ <Flex
115
+ key={index}
116
+ className={classNames({
117
+ 'gm-border-right': index !== cells.length - 1,
118
+ })}
119
+ alignStart
120
+ >
121
+ {renderTimesList(cell)}
122
+ </Flex>
123
+ )
124
+ })}
125
+ </Flex>
126
+ )
127
+ }
128
+
129
+ export default TimeSpan
@@ -1,71 +1,71 @@
1
- import React, { FC, useRef } from 'react'
2
- import _ from 'lodash'
3
- import classNames from 'classnames'
4
-
5
- import { Popover } from '../popover'
6
- import { Selection } from '../selection'
7
- import TimeSpan from './time_span'
8
- import { TimeSpanPickerProps } from './types'
9
- import { renderItemFunc } from './util'
10
-
11
- const TimeSpanPicker: FC<TimeSpanPickerProps> = ({
12
- min,
13
- max,
14
- disabledSpan,
15
- span,
16
- date,
17
- children,
18
- disabled,
19
- renderItem = renderItemFunc,
20
- onChange,
21
- className,
22
- isInPopup,
23
- enabledEndTimeOfDay,
24
- beginTime,
25
- endTime,
26
- ...rest
27
- }) => {
28
- const popoverRef = useRef<Popover>(null)
29
-
30
- const handleSelectTime = (date: Date): void => {
31
- popoverRef.current!.apiDoSetActive()
32
- onChange(date)
33
- }
34
-
35
- // disabledClose,此函数不会运行
36
- const handleSelect = (): void => {}
37
-
38
- const popup = (
39
- <TimeSpan
40
- beginTime={beginTime}
41
- endTime={endTime}
42
- min={min}
43
- max={max}
44
- span={span}
45
- time={date}
46
- onChange={handleSelectTime}
47
- disabledSpan={disabledSpan}
48
- renderItem={renderItem}
49
- enabledEndTimeOfDay={enabledEndTimeOfDay}
50
- />
51
- )
52
-
53
- const selected = date ? { value: date, text: renderItem!(date) } : null
54
-
55
- return (
56
- <Popover popup={popup} ref={popoverRef} isInPopup={isInPopup}>
57
- {children ?? (
58
- <Selection
59
- {...rest}
60
- selected={selected}
61
- onSelect={handleSelect}
62
- className={classNames('gm-time-span-picker', className)}
63
- disabled={disabled}
64
- disabledClose
65
- />
66
- )}
67
- </Popover>
68
- )
69
- }
70
-
71
- export default TimeSpanPicker
1
+ import React, { FC, useRef } from 'react'
2
+ import _ from 'lodash'
3
+ import classNames from 'classnames'
4
+
5
+ import { Popover } from '../popover'
6
+ import { Selection } from '../selection'
7
+ import TimeSpan from './time_span'
8
+ import { TimeSpanPickerProps } from './types'
9
+ import { renderItemFunc } from './util'
10
+
11
+ const TimeSpanPicker: FC<TimeSpanPickerProps> = ({
12
+ min,
13
+ max,
14
+ disabledSpan,
15
+ span,
16
+ date,
17
+ children,
18
+ disabled,
19
+ renderItem = renderItemFunc,
20
+ onChange,
21
+ className,
22
+ isInPopup,
23
+ enabledEndTimeOfDay,
24
+ beginTime,
25
+ endTime,
26
+ ...rest
27
+ }) => {
28
+ const popoverRef = useRef<Popover>(null)
29
+
30
+ const handleSelectTime = (date: Date): void => {
31
+ popoverRef.current!.apiDoSetActive()
32
+ onChange(date)
33
+ }
34
+
35
+ // disabledClose,此函数不会运行
36
+ const handleSelect = (): void => {}
37
+
38
+ const popup = (
39
+ <TimeSpan
40
+ beginTime={beginTime}
41
+ endTime={endTime}
42
+ min={min}
43
+ max={max}
44
+ span={span}
45
+ time={date}
46
+ onChange={handleSelectTime}
47
+ disabledSpan={disabledSpan}
48
+ renderItem={renderItem}
49
+ enabledEndTimeOfDay={enabledEndTimeOfDay}
50
+ />
51
+ )
52
+
53
+ const selected = date ? { value: date, text: renderItem!(date) } : null
54
+
55
+ return (
56
+ <Popover popup={popup} ref={popoverRef} isInPopup={isInPopup}>
57
+ {children ?? (
58
+ <Selection
59
+ {...rest}
60
+ selected={selected}
61
+ onSelect={handleSelect}
62
+ className={classNames('gm-time-span-picker', className)}
63
+ disabled={disabled}
64
+ disabledClose
65
+ />
66
+ )}
67
+ </Popover>
68
+ )
69
+ }
70
+
71
+ export default TimeSpanPicker