@gm-pc/react 1.27.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,140 +1,140 @@
1
- import React from 'react'
2
- import Select from './select'
3
- import { observable } from 'mobx'
4
- import Flex from '../flex/flex'
5
-
6
- const list = [
7
- {
8
- value: 1,
9
- text: '南山',
10
- },
11
- {
12
- value: 2,
13
- text: '福田',
14
- },
15
- {
16
- value: 3,
17
- text: '宝安',
18
- },
19
- {
20
- value: 4,
21
- text: '宝安不可用',
22
- disabled: true,
23
- },
24
- {
25
- value: 5,
26
- text: '罗湖',
27
- },
28
- ]
29
-
30
- const store = observable({
31
- value: 0,
32
- setValue(value: number) {
33
- console.log(value)
34
- this.value = value
35
- },
36
- })
37
-
38
- export const ComSelect = () => (
39
- <div>
40
- <div>
41
- <h3>基础</h3>
42
- <Select
43
- data={list}
44
- value={store.value}
45
- onChange={(value) => {
46
- console.log({ value })
47
- return store.setValue(value!)
48
- }}
49
- />
50
- </div>
51
- <Flex>
52
- <div>
53
- <h3>选择全部</h3>
54
- <Select
55
- data={list}
56
- all
57
- placeholder='select'
58
- value={store.value}
59
- onChange={(value) => {
60
- console.log({ value })
61
- return store.setValue(value!)
62
- }}
63
- />
64
- </div>
65
- <div className='gm-margin-left-10'>
66
- <h3>自定义全部文案</h3>
67
- <Select
68
- data={list}
69
- all={{ text: '😊全部地址😊' }}
70
- value={store.value}
71
- onChange={(value) => {
72
- console.log({ value })
73
- return store.setValue(value!)
74
- }}
75
- />
76
- </div>
77
- <div className='gm-margin-left-10'>
78
- <h3>自定义全部值</h3>
79
- <Select
80
- data={list}
81
- all={{ text: '😊全部地址😊', value: undefined }}
82
- value={store.value}
83
- onChange={(value) => {
84
- return store.setValue(value!)
85
- }}
86
- />
87
- </div>
88
- </Flex>
89
- <div>
90
- <h3>disabled</h3>
91
- <Select
92
- data={list}
93
- all
94
- value={store.value}
95
- onChange={(value) => {
96
- store.setValue(value!)
97
- }}
98
- disabled
99
- />
100
- </div>
101
- <h3>clean</h3>
102
- <Select
103
- clean
104
- all
105
- data={list}
106
- value={store.value}
107
- onChange={(value) => {
108
- store.setValue(value!)
109
- }}
110
- />
111
- <h3>renderItem</h3>
112
- <Select
113
- data={list}
114
- value={store.value}
115
- onChange={(value) => {
116
- console.log({ value })
117
- return store.setValue(value!)
118
- }}
119
- renderItem={(item) => {
120
- return `${item.value}_${item.text}`
121
- }}
122
- />
123
- <h3>renderSelected</h3>
124
- <Select
125
- data={list}
126
- value={store.value}
127
- onChange={(value) => {
128
- console.log({ value })
129
- return store.setValue(value!)
130
- }}
131
- renderSelected={(item) => {
132
- return `${item.value}_${item.text}`
133
- }}
134
- />
135
- </div>
136
- )
137
-
138
- export default {
139
- title: '表单/Select',
140
- }
1
+ import React from 'react'
2
+ import Select from './select'
3
+ import { observable } from 'mobx'
4
+ import Flex from '../flex/flex'
5
+
6
+ const list = [
7
+ {
8
+ value: 1,
9
+ text: '南山',
10
+ },
11
+ {
12
+ value: 2,
13
+ text: '福田',
14
+ },
15
+ {
16
+ value: 3,
17
+ text: '宝安',
18
+ },
19
+ {
20
+ value: 4,
21
+ text: '宝安不可用',
22
+ disabled: true,
23
+ },
24
+ {
25
+ value: 5,
26
+ text: '罗湖',
27
+ },
28
+ ]
29
+
30
+ const store = observable({
31
+ value: 0,
32
+ setValue(value: number) {
33
+ console.log(value)
34
+ this.value = value
35
+ },
36
+ })
37
+
38
+ export const ComSelect = () => (
39
+ <div>
40
+ <div>
41
+ <h3>基础</h3>
42
+ <Select
43
+ data={list}
44
+ value={store.value}
45
+ onChange={(value) => {
46
+ console.log({ value })
47
+ return store.setValue(value!)
48
+ }}
49
+ />
50
+ </div>
51
+ <Flex>
52
+ <div>
53
+ <h3>选择全部</h3>
54
+ <Select
55
+ data={list}
56
+ all
57
+ placeholder='select'
58
+ value={store.value}
59
+ onChange={(value) => {
60
+ console.log({ value })
61
+ return store.setValue(value!)
62
+ }}
63
+ />
64
+ </div>
65
+ <div className='gm-margin-left-10'>
66
+ <h3>自定义全部文案</h3>
67
+ <Select
68
+ data={list}
69
+ all={{ text: '😊全部地址😊' }}
70
+ value={store.value}
71
+ onChange={(value) => {
72
+ console.log({ value })
73
+ return store.setValue(value!)
74
+ }}
75
+ />
76
+ </div>
77
+ <div className='gm-margin-left-10'>
78
+ <h3>自定义全部值</h3>
79
+ <Select
80
+ data={list}
81
+ all={{ text: '😊全部地址😊', value: undefined }}
82
+ value={store.value}
83
+ onChange={(value) => {
84
+ return store.setValue(value!)
85
+ }}
86
+ />
87
+ </div>
88
+ </Flex>
89
+ <div>
90
+ <h3>disabled</h3>
91
+ <Select
92
+ data={list}
93
+ all
94
+ value={store.value}
95
+ onChange={(value) => {
96
+ store.setValue(value!)
97
+ }}
98
+ disabled
99
+ />
100
+ </div>
101
+ <h3>clean</h3>
102
+ <Select
103
+ clean
104
+ all
105
+ data={list}
106
+ value={store.value}
107
+ onChange={(value) => {
108
+ store.setValue(value!)
109
+ }}
110
+ />
111
+ <h3>renderItem</h3>
112
+ <Select
113
+ data={list}
114
+ value={store.value}
115
+ onChange={(value) => {
116
+ console.log({ value })
117
+ return store.setValue(value!)
118
+ }}
119
+ renderItem={(item) => {
120
+ return `${item.value}_${item.text}`
121
+ }}
122
+ />
123
+ <h3>renderSelected</h3>
124
+ <Select
125
+ data={list}
126
+ value={store.value}
127
+ onChange={(value) => {
128
+ console.log({ value })
129
+ return store.setValue(value!)
130
+ }}
131
+ renderSelected={(item) => {
132
+ return `${item.value}_${item.text}`
133
+ }}
134
+ />
135
+ </div>
136
+ )
137
+
138
+ export default {
139
+ title: '表单/Select',
140
+ }
@@ -1,4 +1,4 @@
1
- .gm-select {
2
- display: inline-block;
3
- vertical-align: middle;
4
- }
1
+ .gm-select {
2
+ display: inline-block;
3
+ vertical-align: middle;
4
+ }
@@ -1,29 +1,29 @@
1
- import { CSSProperties, KeyboardEvent, ReactNode } from 'react'
2
- import { ListDataItem } from '../../types'
3
-
4
- interface SelectProps<V> {
5
- data?: ListDataItem<V>[]
6
- value?: V
7
- /** 默认 {value: 0, text: '全部'} */
8
- all?: boolean | { value?: V; text?: string }
9
- onChange?(selected: V): void
10
- disabled?: boolean
11
- renderItem?(item: ListDataItem<V>, index: number): ReactNode
12
- renderSelected?(selected: ListDataItem<V>): ReactNode
13
- clean?: boolean
14
- popoverType?: 'focus' | 'realFocus'
15
- isInPopup?: boolean
16
- onKeyDown?(event: KeyboardEvent): void
17
- className?: string
18
- style?: CSSProperties
19
- placeholder?: string
20
- /**
21
- * 在下拉选项最后自定义内容
22
- *
23
- * 注意:点击自定义内容时,会将浮层关闭。
24
- * 你可以在自定义内容的事件处理函数中添加 `e.preventDefault()` 来阻止这个行为。
25
- */
26
- addonLast?: ReactNode
27
- }
28
-
29
- export type { SelectProps }
1
+ import { CSSProperties, KeyboardEvent, ReactNode } from 'react'
2
+ import { ListDataItem } from '../../types'
3
+
4
+ interface SelectProps<V> {
5
+ data?: ListDataItem<V>[]
6
+ value?: V
7
+ /** 默认 {value: 0, text: '全部'} */
8
+ all?: boolean | { value?: V; text?: string }
9
+ onChange?(selected: V): void
10
+ disabled?: boolean
11
+ renderItem?(item: ListDataItem<V>, index: number): ReactNode
12
+ renderSelected?(selected: ListDataItem<V>): ReactNode
13
+ clean?: boolean
14
+ popoverType?: 'focus' | 'realFocus'
15
+ isInPopup?: boolean
16
+ onKeyDown?(event: KeyboardEvent): void
17
+ className?: string
18
+ style?: CSSProperties
19
+ placeholder?: string
20
+ /**
21
+ * 在下拉选项最后自定义内容
22
+ *
23
+ * 注意:点击自定义内容时,会将浮层关闭。
24
+ * 你可以在自定义内容的事件处理函数中添加 `e.preventDefault()` 来阻止这个行为。
25
+ */
26
+ addonLast?: ReactNode
27
+ }
28
+
29
+ export type { SelectProps }
@@ -1,2 +1,2 @@
1
- export { default as Selection } from './selection'
2
- export type { SelectionProps } from './selection'
1
+ export { default as Selection } from './selection'
2
+ export type { SelectionProps } from './selection'
@@ -1,162 +1,162 @@
1
- import React, {
2
- Component,
3
- createRef,
4
- RefObject,
5
- cloneElement,
6
- ReactElement,
7
- ReactNode,
8
- KeyboardEvent,
9
- CSSProperties,
10
- } from 'react'
11
- import _ from 'lodash'
12
- import classNames from 'classnames'
13
- import SVGCloseCircle from '../../svg/close-circle.svg'
14
- import { IconDownUp } from '../icon_down_up'
15
- import { ConfigConsumer } from '../config_provider'
16
-
17
- type Selected = any
18
-
19
- interface SelectionProps {
20
- selected?: Selected
21
- onSelect(selected?: Selected): void
22
-
23
- disabled?: boolean
24
- placeholder?: string
25
-
26
- /** 自定义 selected */
27
- renderSelected?(value?: Selected): ReactNode
28
- /** 代替默认的 Icon */
29
- funIcon?: ReactNode
30
- /** 无边框 */
31
- clean?: boolean
32
- /** 禁用清除 */
33
- disabledClose?: boolean
34
-
35
- /** 给键盘用 */
36
- onKeyDown?(event: KeyboardEvent): void
37
- className?: string
38
- style?: CSSProperties
39
-
40
- /** 给 Select 定制 */
41
- noInput?: boolean
42
- }
43
-
44
- class Selection extends Component<SelectionProps> {
45
- static defaultProps = {
46
- renderSelected: (value: { text: string }) => value.text,
47
- }
48
-
49
- private _inputRef = createRef<HTMLInputElement | HTMLDivElement>()
50
-
51
- public apiDoFocus = (): void => {
52
- this._inputRef.current!.focus()
53
- }
54
-
55
- private _handleClear = (): void => {
56
- const { onSelect, disabled } = this.props
57
- if (disabled) {
58
- return
59
- }
60
- onSelect(null)
61
- }
62
-
63
- render() {
64
- const {
65
- selected,
66
- onSelect,
67
- disabled,
68
- renderSelected,
69
- placeholder,
70
- funIcon,
71
- clean,
72
- disabledClose,
73
- className,
74
- onKeyDown,
75
- noInput,
76
- ...rest
77
- } = this.props
78
- let text
79
- if (renderSelected && !_.isNil(selected)) {
80
- text = renderSelected(selected)
81
- }
82
-
83
- return (
84
- <ConfigConsumer>
85
- {({ fontSize }) => (
86
- <div
87
- {...rest}
88
- className={classNames(
89
- 'gm-selection',
90
- {
91
- disabled,
92
- 'gm-selection-disabled-clean': clean,
93
- 'gm-selection-disabled-close': disabledClose,
94
- [`gm-selection-text-${fontSize}`]: fontSize,
95
- },
96
- className
97
- )}
98
- >
99
- {noInput ? (
100
- <div
101
- ref={this._inputRef}
102
- // @ts-ignore
103
- disabled={disabled}
104
- className={classNames(
105
- 'gm-form-control gm-selection-selected gm-text-ellipsis',
106
- {
107
- [`gm-form-control-text-${fontSize}`]: fontSize,
108
- }
109
- )}
110
- tabIndex={0}
111
- onKeyDown={onKeyDown}
112
- >
113
- {text || <span className='gm-text-desc'>{placeholder}</span>}
114
- </div>
115
- ) : (
116
- <input
117
- type='text'
118
- ref={this._inputRef as RefObject<HTMLInputElement>}
119
- disabled={disabled}
120
- value={(text as string) || ''}
121
- onChange={_.noop}
122
- onKeyDown={onKeyDown}
123
- placeholder={placeholder}
124
- className={classNames('gm-form-control gm-selection-selected', {
125
- [`gm-form-control-text-${fontSize}`]: fontSize,
126
- })}
127
- />
128
- )}
129
- {selected && !disabledClose && !clean && (
130
- <SVGCloseCircle
131
- onClick={this._handleClear}
132
- className='gm-selection-icon gm-selection-close-icon'
133
- />
134
- )}
135
- {funIcon ? (
136
- cloneElement(funIcon as ReactElement, {
137
- className: classNames(
138
- 'gm-selection-icon',
139
- {
140
- 'gm-selection-fun-icon': selected && !disabledClose && !clean,
141
- },
142
- (funIcon as ReactElement).props?.className
143
- ),
144
- })
145
- ) : (
146
- <IconDownUp
147
- disabled={disabled}
148
- active={(className ?? '').includes('gm-popover-active')}
149
- className={classNames('gm-selection-icon', 'gm-selection-down-up', {
150
- 'gm-selection-fun-icon': selected && !disabledClose && !clean,
151
- })}
152
- />
153
- )}
154
- </div>
155
- )}
156
- </ConfigConsumer>
157
- )
158
- }
159
- }
160
-
161
- export default Selection
162
- export type { SelectionProps }
1
+ import React, {
2
+ Component,
3
+ createRef,
4
+ RefObject,
5
+ cloneElement,
6
+ ReactElement,
7
+ ReactNode,
8
+ KeyboardEvent,
9
+ CSSProperties,
10
+ } from 'react'
11
+ import _ from 'lodash'
12
+ import classNames from 'classnames'
13
+ import SVGCloseCircle from '../../svg/close-circle.svg'
14
+ import { IconDownUp } from '../icon_down_up'
15
+ import { ConfigConsumer } from '../config_provider'
16
+
17
+ type Selected = any
18
+
19
+ interface SelectionProps {
20
+ selected?: Selected
21
+ onSelect(selected?: Selected): void
22
+
23
+ disabled?: boolean
24
+ placeholder?: string
25
+
26
+ /** 自定义 selected */
27
+ renderSelected?(value?: Selected): ReactNode
28
+ /** 代替默认的 Icon */
29
+ funIcon?: ReactNode
30
+ /** 无边框 */
31
+ clean?: boolean
32
+ /** 禁用清除 */
33
+ disabledClose?: boolean
34
+
35
+ /** 给键盘用 */
36
+ onKeyDown?(event: KeyboardEvent): void
37
+ className?: string
38
+ style?: CSSProperties
39
+
40
+ /** 给 Select 定制 */
41
+ noInput?: boolean
42
+ }
43
+
44
+ class Selection extends Component<SelectionProps> {
45
+ static defaultProps = {
46
+ renderSelected: (value: { text: string }) => value.text,
47
+ }
48
+
49
+ private _inputRef = createRef<HTMLInputElement | HTMLDivElement>()
50
+
51
+ public apiDoFocus = (): void => {
52
+ this._inputRef.current!.focus()
53
+ }
54
+
55
+ private _handleClear = (): void => {
56
+ const { onSelect, disabled } = this.props
57
+ if (disabled) {
58
+ return
59
+ }
60
+ onSelect(null)
61
+ }
62
+
63
+ render() {
64
+ const {
65
+ selected,
66
+ onSelect,
67
+ disabled,
68
+ renderSelected,
69
+ placeholder,
70
+ funIcon,
71
+ clean,
72
+ disabledClose,
73
+ className,
74
+ onKeyDown,
75
+ noInput,
76
+ ...rest
77
+ } = this.props
78
+ let text
79
+ if (renderSelected && !_.isNil(selected)) {
80
+ text = renderSelected(selected)
81
+ }
82
+
83
+ return (
84
+ <ConfigConsumer>
85
+ {({ fontSize }) => (
86
+ <div
87
+ {...rest}
88
+ className={classNames(
89
+ 'gm-selection',
90
+ {
91
+ disabled,
92
+ 'gm-selection-disabled-clean': clean,
93
+ 'gm-selection-disabled-close': disabledClose,
94
+ [`gm-selection-text-${fontSize}`]: fontSize,
95
+ },
96
+ className
97
+ )}
98
+ >
99
+ {noInput ? (
100
+ <div
101
+ ref={this._inputRef}
102
+ // @ts-ignore
103
+ disabled={disabled}
104
+ className={classNames(
105
+ 'gm-form-control gm-selection-selected gm-text-ellipsis',
106
+ {
107
+ [`gm-form-control-text-${fontSize}`]: fontSize,
108
+ }
109
+ )}
110
+ tabIndex={0}
111
+ onKeyDown={onKeyDown}
112
+ >
113
+ {text || <span className='gm-text-desc'>{placeholder}</span>}
114
+ </div>
115
+ ) : (
116
+ <input
117
+ type='text'
118
+ ref={this._inputRef as RefObject<HTMLInputElement>}
119
+ disabled={disabled}
120
+ value={(text as string) || ''}
121
+ onChange={_.noop}
122
+ onKeyDown={onKeyDown}
123
+ placeholder={placeholder}
124
+ className={classNames('gm-form-control gm-selection-selected', {
125
+ [`gm-form-control-text-${fontSize}`]: fontSize,
126
+ })}
127
+ />
128
+ )}
129
+ {selected && !disabledClose && !clean && (
130
+ <SVGCloseCircle
131
+ onClick={this._handleClear}
132
+ className='gm-selection-icon gm-selection-close-icon'
133
+ />
134
+ )}
135
+ {funIcon ? (
136
+ cloneElement(funIcon as ReactElement, {
137
+ className: classNames(
138
+ 'gm-selection-icon',
139
+ {
140
+ 'gm-selection-fun-icon': selected && !disabledClose && !clean,
141
+ },
142
+ (funIcon as ReactElement).props?.className
143
+ ),
144
+ })
145
+ ) : (
146
+ <IconDownUp
147
+ disabled={disabled}
148
+ active={(className ?? '').includes('gm-popover-active')}
149
+ className={classNames('gm-selection-icon', 'gm-selection-down-up', {
150
+ 'gm-selection-fun-icon': selected && !disabledClose && !clean,
151
+ })}
152
+ />
153
+ )}
154
+ </div>
155
+ )}
156
+ </ConfigConsumer>
157
+ )
158
+ }
159
+ }
160
+
161
+ export default Selection
162
+ export type { SelectionProps }