plain-design 1.0.0-beta.146 → 1.0.0-beta.147

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 (716) hide show
  1. package/README.md +2 -2
  2. package/dist/plain-design.commonjs.min.js +1 -1
  3. package/dist/plain-design.min.css +1 -1
  4. package/dist/plain-design.min.js +1 -1
  5. package/dist/report.html +2 -2
  6. package/package.json +1 -1
  7. package/src/index.ts +1 -1
  8. package/src/packages/build.ts +7 -7
  9. package/src/packages/components/$address/address.utils.ts +31 -31
  10. package/src/packages/components/$address/createAddressService.tsx +208 -208
  11. package/src/packages/components/$address/index.tsx +7 -7
  12. package/src/packages/components/$ai/index.tsx +227 -227
  13. package/src/packages/components/$configuration/index.tsx +60 -60
  14. package/src/packages/components/$dialog/index.tsx +7 -7
  15. package/src/packages/components/$file/index.tsx +255 -255
  16. package/src/packages/components/$image/index.tsx +7 -7
  17. package/src/packages/components/$loading/index.tsx +3 -3
  18. package/src/packages/components/$message/image.service.utils.tsx +161 -161
  19. package/src/packages/components/$message/index.tsx +7 -7
  20. package/src/packages/components/$notice/index.tsx +7 -7
  21. package/src/packages/components/$object/createObjectService.tsx +217 -217
  22. package/src/packages/components/$object/index.ts +5 -5
  23. package/src/packages/components/$object/object.conver.ts +56 -56
  24. package/src/packages/components/$object/object.service.utils.ts +56 -56
  25. package/src/packages/components/$ov/createOvService.ts +86 -86
  26. package/src/packages/components/$ov/index.tsx +5 -5
  27. package/src/packages/components/$ov/ov.utils.ts +11 -11
  28. package/src/packages/components/$previewer/ImagePreviewerFixedContainer.tsx +108 -108
  29. package/src/packages/components/$previewer/image-previewer-fixed-container.scss +18 -18
  30. package/src/packages/components/$previewer/index.tsx +52 -52
  31. package/src/packages/components/$search/SearchFooter.tsx +32 -32
  32. package/src/packages/components/$search/SearchList.tsx +207 -207
  33. package/src/packages/components/$search/SearchServicePanel.tsx +233 -233
  34. package/src/packages/components/$search/createSearchService.tsx +43 -43
  35. package/src/packages/components/$search/index.tsx +6 -6
  36. package/src/packages/components/$search/search-service.scss +221 -221
  37. package/src/packages/components/$search/search.utils.tsx +112 -112
  38. package/src/packages/components/$upload/createUploadService.tsx +57 -57
  39. package/src/packages/components/$upload/upload.utils.ts +18 -18
  40. package/src/packages/components/Address/index.tsx +138 -138
  41. package/src/packages/components/AddressCascade/address-cascade.utils.ts +44 -44
  42. package/src/packages/components/AddressCascade/createAddressCascade.hooks.ts +9 -9
  43. package/src/packages/components/AddressCascade/createAddressCascade.multiple.tsx +53 -53
  44. package/src/packages/components/AddressCascade/createAddressCascade.single.tsx +75 -75
  45. package/src/packages/components/AddressCascade/index.tsx +59 -59
  46. package/src/packages/components/AiChatBox/ai-chat-box.scss +74 -74
  47. package/src/packages/components/AiChatBox/index.tsx +154 -154
  48. package/src/packages/components/Alert/alert.scss +139 -139
  49. package/src/packages/components/Alert/index.tsx +93 -93
  50. package/src/packages/components/Application/application.scss +16 -16
  51. package/src/packages/components/Application/index.tsx +56 -56
  52. package/src/packages/components/Application/service/createApplicationService.tsx +47 -47
  53. package/src/packages/components/Application/service/createApplicationServiceComponent.tsx +41 -41
  54. package/src/packages/components/Application/service/createApplicationServiceManager.tsx +101 -101
  55. package/src/packages/components/Application/service/useApplicationService.tsx +126 -126
  56. package/src/packages/components/Application/theme/theme.ts +282 -282
  57. package/src/packages/components/Application/theme/theme.utils.ts +17 -17
  58. package/src/packages/components/Application/utils/application.utils.ts +21 -21
  59. package/src/packages/components/Application/utils/createServiceReadyObserver.ts +18 -18
  60. package/src/packages/components/ApplicationConfigurationProvider/index.tsx +5 -5
  61. package/src/packages/components/ArrowStep/index.tsx +73 -73
  62. package/src/packages/components/ArrowStepGroup/arrow-step.scss +119 -119
  63. package/src/packages/components/ArrowStepGroup/index.tsx +63 -63
  64. package/src/packages/components/AsyncFormatter/index.tsx +1 -1
  65. package/src/packages/components/AutoLoadingObserver/index.tsx +173 -173
  66. package/src/packages/components/AutoTable/AutoTable.tsx +56 -56
  67. package/src/packages/components/AutoTable/auto-table.scss +463 -463
  68. package/src/packages/components/AutoTable/createTableOptionUser.tsx +77 -77
  69. package/src/packages/components/AutoTable/filter/useTableOption.filter.form.tsx +217 -217
  70. package/src/packages/components/AutoTable/filter/useTableOption.filter.search.tsx +168 -168
  71. package/src/packages/components/AutoTable/filter/useTableOption.filter.state.ts +196 -196
  72. package/src/packages/components/AutoTable/index.tsx +4 -4
  73. package/src/packages/components/AutoTable/setting/useTableOption.setting.all.fitler.tsx +79 -79
  74. package/src/packages/components/AutoTable/setting/useTableOption.setting.cache.tsx +145 -145
  75. package/src/packages/components/AutoTable/setting/useTableOption.setting.config.tsx +260 -260
  76. package/src/packages/components/AutoTable/setting/useTableOption.setting.export.tsx +283 -283
  77. package/src/packages/components/AutoTable/setting/useTableOption.setting.import.tsx +100 -100
  78. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.filter.tsx +385 -385
  79. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.sort.tsx +123 -123
  80. package/src/packages/components/AutoTable/setting/useTableOption.setting.tsx +109 -109
  81. package/src/packages/components/AutoTable/setting/useTableOption.setting.utils.ts +40 -40
  82. package/src/packages/components/AutoTable/use/useTableOption.buttons.tsx +249 -249
  83. package/src/packages/components/AutoTable/use/useTableOption.cache.ts +235 -235
  84. package/src/packages/components/AutoTable/use/useTableOption.cache.utils.ts +83 -83
  85. package/src/packages/components/AutoTable/use/useTableOption.check.tsx +80 -80
  86. package/src/packages/components/AutoTable/use/useTableOption.column.popper.tsx +491 -491
  87. package/src/packages/components/AutoTable/use/useTableOption.confirm.tsx +122 -122
  88. package/src/packages/components/AutoTable/use/useTableOption.fill.tsx +153 -153
  89. package/src/packages/components/AutoTable/use/useTableOption.hooks.tsx +142 -142
  90. package/src/packages/components/AutoTable/use/useTableOption.loading.tsx +77 -77
  91. package/src/packages/components/AutoTable/use/useTableOption.methods.tsx +515 -515
  92. package/src/packages/components/AutoTable/use/useTableOption.pagination.tsx +191 -191
  93. package/src/packages/components/AutoTable/use/useTableOption.parent.tsx +134 -134
  94. package/src/packages/components/AutoTable/use/useTableOption.permission.tsx +16 -16
  95. package/src/packages/components/AutoTable/use/useTableOption.render.tsx +34 -34
  96. package/src/packages/components/AutoTable/use/useTableOption.sort.ts +198 -198
  97. package/src/packages/components/AutoTable/use/useTableOption.state.tsx +31 -31
  98. package/src/packages/components/AutoTable/use/useTableOption.table.tsx +87 -87
  99. package/src/packages/components/AutoTable/use/useTableOption.tips.tsx +87 -87
  100. package/src/packages/components/AutoTable/use/useTableOptionKeyboard.tsx +111 -111
  101. package/src/packages/components/AutoTable/utils/AutoModule.ts +10 -10
  102. package/src/packages/components/AutoTable/utils/AutoTable.utils.ts +120 -120
  103. package/src/packages/components/AutoTable/utils/TableOption.space.tsx +203 -203
  104. package/src/packages/components/AutoTable/utils/TableOption.url.ts +153 -153
  105. package/src/packages/components/AutoTable/utils/TableOption.utils.tsx +57 -57
  106. package/src/packages/components/AutoTable/utils/buildPlainDefaultUrlConfig.ts +134 -134
  107. package/src/packages/components/AutoWidthInput/auto-width-input.scss +25 -25
  108. package/src/packages/components/AutoWidthInput/index.tsx +67 -67
  109. package/src/packages/components/Badge/badge.scss +71 -71
  110. package/src/packages/components/Badge/index.tsx +52 -52
  111. package/src/packages/components/Box/box.scss +6 -6
  112. package/src/packages/components/Box/index.tsx +30 -30
  113. package/src/packages/components/Button/button.scss +203 -203
  114. package/src/packages/components/Button/index.tsx +213 -213
  115. package/src/packages/components/ButtonGroup/button-group.scss +73 -73
  116. package/src/packages/components/ButtonGroup/index.tsx +43 -43
  117. package/src/packages/components/Card/card.scss +122 -122
  118. package/src/packages/components/Card/index.tsx +74 -74
  119. package/src/packages/components/Carousel/carousel.scss +391 -391
  120. package/src/packages/components/Carousel/index.tsx +591 -591
  121. package/src/packages/components/CarouselItem/index.tsx +77 -77
  122. package/src/packages/components/Cascade/CascadeKeys.tsx +158 -158
  123. package/src/packages/components/Cascade/cascade.scss +111 -111
  124. package/src/packages/components/Cascade/cascade.utils.ts +68 -68
  125. package/src/packages/components/Cascade/createCascadeHooks.ts +12 -12
  126. package/src/packages/components/Cascade/createCascadePopper.tsx +120 -120
  127. package/src/packages/components/Cascade/createCascadeUtils.ts +15 -15
  128. package/src/packages/components/Cascade/createMultipleCascadeRender.tsx +156 -156
  129. package/src/packages/components/Cascade/createSingleCascadeRender.tsx +175 -175
  130. package/src/packages/components/Cascade/index.tsx +106 -106
  131. package/src/packages/components/CascadeKeys/index.tsx +5 -5
  132. package/src/packages/components/CascadePanel/cascade-panel.utils.ts +90 -90
  133. package/src/packages/components/CascadePanel/flat/CascadeFlatPanelNode.tsx +56 -56
  134. package/src/packages/components/CascadePanel/flat/cascade-flat-panel.scss +133 -133
  135. package/src/packages/components/CascadePanel/flat/createCascadeFlatRender.tsx +87 -87
  136. package/src/packages/components/CascadePanel/index.tsx +208 -208
  137. package/src/packages/components/CascadePanel/list/CascadeListPanelItem.tsx +93 -93
  138. package/src/packages/components/CascadePanel/list/CascadeListPanelNode.tsx +69 -69
  139. package/src/packages/components/CascadePanel/list/createCascadeListRender.tsx +31 -31
  140. package/src/packages/components/Checkbox/checkbox.scss +77 -77
  141. package/src/packages/components/Checkbox/index.tsx +141 -141
  142. package/src/packages/components/CheckboxGroup/index.tsx +205 -205
  143. package/src/packages/components/CheckboxInner/checkbox-inner.scss +55 -55
  144. package/src/packages/components/CheckboxInner/index.tsx +34 -34
  145. package/src/packages/components/ClientZoom/index.ts +5 -5
  146. package/src/packages/components/Collapse/collapse.scss +44 -44
  147. package/src/packages/components/Collapse/index.tsx +94 -94
  148. package/src/packages/components/CollapseGroup/index.tsx +70 -70
  149. package/src/packages/components/CollapseTransition/index.tsx +184 -184
  150. package/src/packages/components/ColorPicker/ColorPanel.tsx +146 -125
  151. package/src/packages/components/ColorPicker/color-panel.scss +117 -97
  152. package/src/packages/components/ColorPicker/color-picker.scss +64 -64
  153. package/src/packages/components/ColorPicker/index.tsx +144 -131
  154. package/src/packages/components/ColorPicker/sub/ColorAlphaSlider.tsx +43 -43
  155. package/src/packages/components/ColorPicker/sub/ColorHueSlider.tsx +17 -17
  156. package/src/packages/components/ColorPicker/sub/ColorSlider.tsx +163 -163
  157. package/src/packages/components/ColorPicker/sub/ColorSvPanel.tsx +125 -125
  158. package/src/packages/components/ColorPicker/sub/color-alpha-slider.scss +8 -8
  159. package/src/packages/components/ColorPicker/sub/color-hue-slider.scss +3 -3
  160. package/src/packages/components/ColorPicker/sub/color-slider.scss +22 -22
  161. package/src/packages/components/ColorPicker/sub/color-sv-panel.scss +55 -55
  162. package/src/packages/components/ColorPicker/useColorPanelEditor.tsx +119 -119
  163. package/src/packages/components/ColorPicker/useColorPanelHistory.tsx +51 -51
  164. package/src/packages/components/ColorPicker/utils/PlainColor.ts +70 -70
  165. package/src/packages/components/ColorPicker/utils/color-picker.utils.tsx +27 -27
  166. package/src/packages/components/ConfirmPopup/confirm-popup.scss +16 -16
  167. package/src/packages/components/ConfirmPopup/index.tsx +72 -72
  168. package/src/packages/components/Corner/corner.scss +14 -14
  169. package/src/packages/components/Corner/index.tsx +80 -80
  170. package/src/packages/components/DatePicker/createDateRender.multiple.tsx +189 -189
  171. package/src/packages/components/DatePicker/createDateRender.single.tsx +169 -169
  172. package/src/packages/components/DatePicker/createRangeDateRender.range.tsx +114 -114
  173. package/src/packages/components/DatePicker/createRangeDateRender.separate.tsx +120 -120
  174. package/src/packages/components/DatePicker/date.mixin.scss +73 -73
  175. package/src/packages/components/DatePicker/date.scss +542 -542
  176. package/src/packages/components/DatePicker/date.utils.tsx +398 -398
  177. package/src/packages/components/DatePicker/index.tsx +84 -84
  178. package/src/packages/components/DatePicker/panel/DatePanel.tsx +99 -99
  179. package/src/packages/components/DatePicker/panel/DatePanelDate.tsx +278 -278
  180. package/src/packages/components/DatePicker/panel/DatePanelMonth.tsx +190 -190
  181. package/src/packages/components/DatePicker/panel/DatePanelQuarter.tsx +50 -50
  182. package/src/packages/components/DatePicker/panel/DatePanelRange.tsx +146 -146
  183. package/src/packages/components/DatePicker/panel/DatePanelWeek.tsx +52 -52
  184. package/src/packages/components/DatePicker/panel/DatePanelYear.tsx +100 -100
  185. package/src/packages/components/DatePicker/panel/useDatePanel.tsx +618 -618
  186. package/src/packages/components/DatePicker/panel/useDateWeek.tsx +153 -153
  187. package/src/packages/components/DatePicker/useRangeDateRender.tsx +318 -318
  188. package/src/packages/components/Dialog/dialog.scss +261 -261
  189. package/src/packages/components/Dialog/index.tsx +439 -439
  190. package/src/packages/components/Dialog/useDialogMovable.tsx +72 -72
  191. package/src/packages/components/Dialog/utils/dialog.mouse.ts +16 -16
  192. package/src/packages/components/Dialog/utils/dialog.utils.ts +10 -10
  193. package/src/packages/components/Dropdown/dropdown.public.scss +94 -94
  194. package/src/packages/components/Dropdown/dropdown.scss +13 -13
  195. package/src/packages/components/Dropdown/dropdown.utils.tsx +108 -108
  196. package/src/packages/components/Dropdown/index.tsx +174 -174
  197. package/src/packages/components/DropdownGroup/index.tsx +18 -18
  198. package/src/packages/components/DropdownOption/index.tsx +74 -74
  199. package/src/packages/components/DropdownSeparator/index.tsx +8 -8
  200. package/src/packages/components/Empty/empty.scss +14 -14
  201. package/src/packages/components/Empty/index.tsx +48 -48
  202. package/src/packages/components/FilterFormMultiple/filter-form-multiple.scss +36 -36
  203. package/src/packages/components/FilterFormMultiple/index.tsx +288 -288
  204. package/src/packages/components/FilterFormSingle/index.tsx +178 -178
  205. package/src/packages/components/FilterService/filter/filter.city.tsx +85 -85
  206. package/src/packages/components/FilterService/filter/filter.date.tsx +85 -85
  207. package/src/packages/components/FilterService/filter/filter.datetime.tsx +68 -68
  208. package/src/packages/components/FilterService/filter/filter.district.tsx +86 -86
  209. package/src/packages/components/FilterService/filter/filter.number.tsx +66 -66
  210. package/src/packages/components/FilterService/filter/filter.province.tsx +91 -91
  211. package/src/packages/components/FilterService/filter/filter.select.tsx +67 -67
  212. package/src/packages/components/FilterService/filter/filter.text.tsx +57 -57
  213. package/src/packages/components/FilterService/filter/fitler.object.tsx +115 -115
  214. package/src/packages/components/FilterService/index.tsx +250 -250
  215. package/src/packages/components/FilterService/utils/filter.service.utils.ts +138 -138
  216. package/src/packages/components/FilterService/utils/mergeQueryParam.ts +80 -80
  217. package/src/packages/components/Form/form.scss +256 -256
  218. package/src/packages/components/Form/index.tsx +74 -74
  219. package/src/packages/components/Form/layout/useFormLayout.tsx +332 -332
  220. package/src/packages/components/Form/types/any.tsx +54 -54
  221. package/src/packages/components/Form/types/array.tsx +55 -55
  222. package/src/packages/components/Form/types/arrayjson.tsx +15 -15
  223. package/src/packages/components/Form/types/arraystring.tsx +15 -15
  224. package/src/packages/components/Form/types/date.tsx +72 -72
  225. package/src/packages/components/Form/types/datetime.tsx +8 -8
  226. package/src/packages/components/Form/types/email.tsx +11 -11
  227. package/src/packages/components/Form/types/idcard.tsx +13 -13
  228. package/src/packages/components/Form/types/number.tsx +59 -59
  229. package/src/packages/components/Form/types/phone.tsx +11 -11
  230. package/src/packages/components/Form/types/qq.tsx +11 -11
  231. package/src/packages/components/Form/types/string.tsx +68 -68
  232. package/src/packages/components/Form/types/time.tsx +8 -8
  233. package/src/packages/components/Form/validate/createValidation.tsx +278 -278
  234. package/src/packages/components/Form/validate/useFormItemValidation.tsx +122 -122
  235. package/src/packages/components/Form/validate/useFormValidation.tsx +137 -137
  236. package/src/packages/components/Form/validate/validate.utils.tsx +439 -439
  237. package/src/packages/components/FormCascade/index.tsx +6 -6
  238. package/src/packages/components/FormCheckbox/index.tsx +6 -6
  239. package/src/packages/components/FormCheckboxGroup/index.tsx +6 -6
  240. package/src/packages/components/FormColorPicker/index.tsx +6 -6
  241. package/src/packages/components/FormDatePicker/index.tsx +6 -6
  242. package/src/packages/components/FormInput/index.tsx +6 -6
  243. package/src/packages/components/FormInputNumber/index.tsx +6 -6
  244. package/src/packages/components/FormItem/FormItemValidateMessage.tsx +16 -16
  245. package/src/packages/components/FormItem/createFormEditor.tsx +87 -87
  246. package/src/packages/components/FormItem/index.tsx +134 -134
  247. package/src/packages/components/FormRadio/index.tsx +6 -6
  248. package/src/packages/components/FormRadioGroup/index.tsx +6 -6
  249. package/src/packages/components/FormRate/index.tsx +6 -6
  250. package/src/packages/components/FormSelect/index.tsx +6 -6
  251. package/src/packages/components/FormSlider/index.tsx +6 -6
  252. package/src/packages/components/FormTimePicker/index.tsx +6 -6
  253. package/src/packages/components/FormToggle/index.tsx +6 -6
  254. package/src/packages/components/Formatter/index.tsx +64 -64
  255. package/src/packages/components/Grid/GridCol.tsx +73 -73
  256. package/src/packages/components/Grid/GridRow.tsx +91 -91
  257. package/src/packages/components/Grid/grid.scss +109 -109
  258. package/src/packages/components/Grid/grid.utils.ts +21 -21
  259. package/src/packages/components/GridCol/index.tsx +5 -5
  260. package/src/packages/components/GridRow/index.tsx +5 -5
  261. package/src/packages/components/Icon/icon.external.tsx +6 -0
  262. package/src/packages/components/Icon/icon.registry.tsx +21 -21
  263. package/src/packages/components/Icon/icon.scss +12 -12
  264. package/src/packages/components/Illustration/index.tsx +28 -28
  265. package/src/packages/components/Image/image.scss +334 -334
  266. package/src/packages/components/Image/index.tsx +168 -168
  267. package/src/packages/components/ImagePreviewer/ImagePreviewer.tsx +574 -574
  268. package/src/packages/components/ImagePreviewer/ImagePreviewerButtonBar.tsx +140 -140
  269. package/src/packages/components/ImagePreviewer/ImagePreviewerCarouselImage.tsx +54 -54
  270. package/src/packages/components/ImagePreviewer/ImagePreviewerGallery.tsx +202 -202
  271. package/src/packages/components/ImagePreviewer/PreviewerLoading.tsx +26 -26
  272. package/src/packages/components/ImagePreviewer/image-previewer.scss +244 -244
  273. package/src/packages/components/ImagePreviewer/image-previewer.utils.tsx +136 -136
  274. package/src/packages/components/ImagePreviewer/index.tsx +5 -5
  275. package/src/packages/components/ImagePreviewer/previewer-loading.scss +52 -52
  276. package/src/packages/components/ImageUploader/index.tsx +242 -242
  277. package/src/packages/components/Input/index.scss +446 -446
  278. package/src/packages/components/Input/index.tsx +153 -153
  279. package/src/packages/components/Input/input.utils.ts +119 -119
  280. package/src/packages/components/Input/useMultipleInput.tsx +126 -126
  281. package/src/packages/components/Input/useSingleInput.tsx +45 -45
  282. package/src/packages/components/Input/useSuggestionInput.tsx +218 -218
  283. package/src/packages/components/Input/useTextareaInput.tsx +155 -155
  284. package/src/packages/components/Input/uses/useInputEnterHandler.tsx +83 -83
  285. package/src/packages/components/Input/uses/useInputHooks.tsx +21 -21
  286. package/src/packages/components/Input/uses/useInputMaxLength.tsx +35 -35
  287. package/src/packages/components/Input/uses/useInputSuffixIcon.tsx +67 -67
  288. package/src/packages/components/InputGroup/index.tsx +31 -31
  289. package/src/packages/components/InputGroup/input-group.scss +46 -46
  290. package/src/packages/components/InputNumber/NumberResize.tsx +111 -111
  291. package/src/packages/components/InputNumber/index.tsx +36 -36
  292. package/src/packages/components/InputNumber/input-number.utils.tsx +96 -96
  293. package/src/packages/components/InputNumber/number.scss +95 -95
  294. package/src/packages/components/InputNumber/number.utils.ts +3 -3
  295. package/src/packages/components/InputNumber/useInputNumber.multiple.tsx +121 -121
  296. package/src/packages/components/InputNumber/useInputNumber.public.tsx +478 -478
  297. package/src/packages/components/InputNumber/useInputNumber.single.tsx +137 -137
  298. package/src/packages/components/KeepAlive/KeepAliveCacheItemWrapper.tsx +114 -114
  299. package/src/packages/components/KeepAlive/index.tsx +77 -77
  300. package/src/packages/components/KeepAlive/utils/keepalive.utils.ts +33 -33
  301. package/src/packages/components/Layout/index.tsx +38 -38
  302. package/src/packages/components/Layout/layout.scss +247 -247
  303. package/src/packages/components/Layout/layout.utils.ts +3 -3
  304. package/src/packages/components/LayoutSection/index.tsx +76 -76
  305. package/src/packages/components/LayoutSection/useLayoutSectionResizer.tsx +184 -184
  306. package/src/packages/components/List/index.tsx +74 -74
  307. package/src/packages/components/List/list.scss +3 -3
  308. package/src/packages/components/ListOption/index.tsx +20 -20
  309. package/src/packages/components/ListPanel/index.tsx +30 -30
  310. package/src/packages/components/ListPanel/list-panel.scss +20 -20
  311. package/src/packages/components/Loading/index.tsx +27 -27
  312. package/src/packages/components/Loading/loading.scss +7 -7
  313. package/src/packages/components/LoadingMask/index.tsx +101 -101
  314. package/src/packages/components/LoadingMask/loading-mask.scss +34 -34
  315. package/src/packages/components/NumberRange/index.tsx +93 -93
  316. package/src/packages/components/Object/createObjectHooks.tsx +13 -13
  317. package/src/packages/components/Object/createObjectRender.multiple.tsx +289 -289
  318. package/src/packages/components/Object/createObjectRender.single.tsx +219 -219
  319. package/src/packages/components/Object/index.tsx +104 -104
  320. package/src/packages/components/Object/object.scss +24 -24
  321. package/src/packages/components/Object/object.utils.ts +56 -56
  322. package/src/packages/components/OuterOperation/index.tsx +5 -5
  323. package/src/packages/components/Ov/index.tsx +23 -23
  324. package/src/packages/components/Ov/ov.utils.ts +9 -9
  325. package/src/packages/components/Ov/usePublicOv.tsx +35 -35
  326. package/src/packages/components/PageCard/index.tsx +48 -48
  327. package/src/packages/components/PageCard/page-card.scss +124 -124
  328. package/src/packages/components/PageCardContent/index.tsx +44 -44
  329. package/src/packages/components/PageCardTitle/index.tsx +51 -51
  330. package/src/packages/components/PageRenderList/index.tsx +22 -22
  331. package/src/packages/components/PageThemeUtils/deepmerge.ts +21 -21
  332. package/src/packages/components/PageThemeUtils/index.tsx +262 -262
  333. package/src/packages/components/Pagination/index.tsx +339 -339
  334. package/src/packages/components/Pagination/pagination.scss +126 -126
  335. package/src/packages/components/Paragraph/index.tsx +46 -46
  336. package/src/packages/components/Paragraph/paragraph.scss +12 -12
  337. package/src/packages/components/ParagraphItem/index.tsx +21 -21
  338. package/src/packages/components/Plc/index.tsx +4 -4
  339. package/src/packages/components/PlcAddress/index.tsx +4 -4
  340. package/src/packages/components/PlcAddressItem/index.tsx +4 -4
  341. package/src/packages/components/PlcCheck/index.tsx +5 -5
  342. package/src/packages/components/PlcCheckbox/index.tsx +4 -4
  343. package/src/packages/components/PlcColorPicker/index.tsx +4 -4
  344. package/src/packages/components/PlcDate/index.tsx +4 -4
  345. package/src/packages/components/PlcDateRange/index.tsx +4 -4
  346. package/src/packages/components/PlcDraggier/index.tsx +5 -5
  347. package/src/packages/components/PlcExpand/index.tsx +5 -5
  348. package/src/packages/components/PlcGroup/index.tsx +4 -4
  349. package/src/packages/components/PlcImage/index.tsx +86 -86
  350. package/src/packages/components/PlcIndex/index.tsx +5 -5
  351. package/src/packages/components/PlcInput/index.tsx +4 -4
  352. package/src/packages/components/PlcNumber/index.tsx +4 -4
  353. package/src/packages/components/PlcObject/index.tsx +53 -53
  354. package/src/packages/components/PlcOperation/index.tsx +5 -5
  355. package/src/packages/components/PlcOv/index.tsx +31 -31
  356. package/src/packages/components/PlcRate/index.tsx +4 -4
  357. package/src/packages/components/PlcSelect/index.tsx +4 -4
  358. package/src/packages/components/PlcTextarea/index.tsx +4 -4
  359. package/src/packages/components/PlcTime/index.tsx +4 -4
  360. package/src/packages/components/PlcTimeRange/index.tsx +4 -4
  361. package/src/packages/components/PlcToggle/index.tsx +4 -4
  362. package/src/packages/components/PlcTree/index.tsx +5 -5
  363. package/src/packages/components/Popup/PopupProvider.tsx +20 -20
  364. package/src/packages/components/Popup/index.tsx +403 -403
  365. package/src/packages/components/Popup/popup.scss +13 -13
  366. package/src/packages/components/ProgressBar/index.tsx +87 -87
  367. package/src/packages/components/ProgressBar/progress-bar.scss +40 -40
  368. package/src/packages/components/ProgressBar/progress.utils.ts +24 -24
  369. package/src/packages/components/ProgressCircle/index.tsx +188 -188
  370. package/src/packages/components/ProgressCircle/progress-circle.scss +44 -44
  371. package/src/packages/components/ProgressMini/index.tsx +98 -98
  372. package/src/packages/components/ProgressMini/progress-mini.scss +17 -17
  373. package/src/packages/components/Radio/index.tsx +137 -137
  374. package/src/packages/components/Radio/radio.scss +79 -79
  375. package/src/packages/components/RadioGroup/index.tsx +62 -62
  376. package/src/packages/components/RadioInner/index.tsx +31 -31
  377. package/src/packages/components/RadioInner/radio-inner.scss +17 -17
  378. package/src/packages/components/Rate/index.tsx +152 -152
  379. package/src/packages/components/Rate/rate.scss +32 -32
  380. package/src/packages/components/Reference/ReferenceProvider.tsx +13 -13
  381. package/src/packages/components/Reference/index.tsx +57 -57
  382. package/src/packages/components/RollingNumber/index.tsx +66 -66
  383. package/src/packages/components/Scroll/HorizontalScrollbar.tsx +96 -96
  384. package/src/packages/components/Scroll/VerticalScrollbar.tsx +102 -102
  385. package/src/packages/components/Scroll/index.tsx +419 -419
  386. package/src/packages/components/Scroll/scroll.scss +168 -168
  387. package/src/packages/components/Scroll/useAutoScroll.ts +68 -68
  388. package/src/packages/components/Segment/index.tsx +39 -39
  389. package/src/packages/components/Segment/segment.scss +46 -46
  390. package/src/packages/components/SegmentGroup/index.tsx +48 -48
  391. package/src/packages/components/Select/SelectPanel.tsx +78 -78
  392. package/src/packages/components/Select/createMultipleSelectRender.tsx +248 -248
  393. package/src/packages/components/Select/createPublicSelectRender.tsx +411 -411
  394. package/src/packages/components/Select/createSelectOptionDecoder.tsx +43 -43
  395. package/src/packages/components/Select/createSingleSelectRender.tsx +133 -133
  396. package/src/packages/components/Select/decodeSelectRenderNode.tsx +52 -52
  397. package/src/packages/components/Select/index.tsx +97 -97
  398. package/src/packages/components/Select/select.scss +101 -101
  399. package/src/packages/components/Select/select.utils.tsx +248 -248
  400. package/src/packages/components/SelectDisplay/index.tsx +30 -30
  401. package/src/packages/components/SelectGroup/index.tsx +37 -37
  402. package/src/packages/components/SelectOption/index.tsx +72 -72
  403. package/src/packages/components/Slider/index.tsx +123 -123
  404. package/src/packages/components/Slider/slider.scss +128 -128
  405. package/src/packages/components/Slider/slider.utils.tsx +71 -71
  406. package/src/packages/components/Slider/useSlider.range.tsx +211 -211
  407. package/src/packages/components/Slider/useSlider.single.tsx +148 -148
  408. package/src/packages/components/Slider/useSliderDotDragier.tsx +66 -66
  409. package/src/packages/components/SortList/index.tsx +191 -191
  410. package/src/packages/components/SortList/sort-list.scss +11 -11
  411. package/src/packages/components/Space/index.tsx +36 -36
  412. package/src/packages/components/Space/space.scss +39 -39
  413. package/src/packages/components/StackCard/index.tsx +416 -416
  414. package/src/packages/components/StackCard/stack-card.scss +40 -40
  415. package/src/packages/components/StackCardItem/index.tsx +24 -24
  416. package/src/packages/components/Step/index.tsx +120 -120
  417. package/src/packages/components/StepGroup/index.tsx +63 -63
  418. package/src/packages/components/StepGroup/step-group.scss +411 -411
  419. package/src/packages/components/StepGroup/step.utils.ts +44 -44
  420. package/src/packages/components/Tab/index.tsx +42 -42
  421. package/src/packages/components/TabGroup/TabsHeader.tsx +105 -105
  422. package/src/packages/components/TabGroup/TabsInner.tsx +60 -60
  423. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontal.tsx +94 -94
  424. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalCard.tsx +15 -15
  425. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalShadow.tsx +15 -15
  426. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalText.tsx +66 -66
  427. package/src/packages/components/TabGroup/header/horizontal/tabs-header-card.scss +85 -85
  428. package/src/packages/components/TabGroup/header/horizontal/tabs-header-horizontal.scss +59 -59
  429. package/src/packages/components/TabGroup/header/horizontal/tabs-header-shadow.scss +88 -88
  430. package/src/packages/components/TabGroup/header/horizontal/tabs-header-text.scss +50 -50
  431. package/src/packages/components/TabGroup/header/vertical/TabsHeaderVertical.tsx +24 -24
  432. package/src/packages/components/TabGroup/header/vertical/tabs-header-vertical.scss +116 -116
  433. package/src/packages/components/TabGroup/index.tsx +131 -131
  434. package/src/packages/components/TabGroup/tabs.scss +62 -62
  435. package/src/packages/components/TabGroup/tabs.utils.tsx +22 -22
  436. package/src/packages/components/Table/editor/PlcAddress.tsx +91 -91
  437. package/src/packages/components/Table/editor/PlcAddressItem.tsx +60 -60
  438. package/src/packages/components/Table/editor/PlcCheckbox.tsx +36 -36
  439. package/src/packages/components/Table/editor/PlcColorPicker.tsx +29 -29
  440. package/src/packages/components/Table/editor/PlcDate.tsx +97 -97
  441. package/src/packages/components/Table/editor/PlcDate.utils.tsx +45 -45
  442. package/src/packages/components/Table/editor/PlcDateRange.tsx +73 -73
  443. package/src/packages/components/Table/editor/PlcInput.tsx +21 -21
  444. package/src/packages/components/Table/editor/PlcNumber.tsx +23 -23
  445. package/src/packages/components/Table/editor/PlcRate.tsx +24 -24
  446. package/src/packages/components/Table/editor/PlcSelect.tsx +181 -181
  447. package/src/packages/components/Table/editor/PlcTextarea.tsx +22 -22
  448. package/src/packages/components/Table/editor/PlcTime.tsx +54 -54
  449. package/src/packages/components/Table/editor/PlcTime.utils.ts +15 -15
  450. package/src/packages/components/Table/editor/PlcTimeRange.tsx +66 -66
  451. package/src/packages/components/Table/editor/PlcToggle.tsx +40 -40
  452. package/src/packages/components/Table/index.tsx +4 -4
  453. package/src/packages/components/Table/plc/formatPlcList.tsx +92 -92
  454. package/src/packages/components/Table/plc/group/PlcGroup.tsx +20 -20
  455. package/src/packages/components/Table/plc/plc/Plc.tsx +19 -19
  456. package/src/packages/components/Table/plc/process/copyPlcList.ts +23 -23
  457. package/src/packages/components/Table/plc/process/getPltCellClass.ts +8 -8
  458. package/src/packages/components/Table/plc/process/processAutoFixed.ts +73 -73
  459. package/src/packages/components/Table/plc/process/processHeadPlcList.ts +110 -110
  460. package/src/packages/components/Table/plc/process/processPlcClassAndStyle.ts +43 -43
  461. package/src/packages/components/Table/plc/process/processPlcFixed.ts +81 -81
  462. package/src/packages/components/Table/plc/process/processPlcSort.ts +91 -91
  463. package/src/packages/components/Table/plc/use/useBasePlc.tsx +85 -85
  464. package/src/packages/components/Table/plc/use/useBasePlcGroup.tsx +70 -70
  465. package/src/packages/components/Table/plc/use/usePlc.tsx +136 -136
  466. package/src/packages/components/Table/plc/use/usePlcPropsState.tsx +112 -112
  467. package/src/packages/components/Table/plc/use/useTableAutoSpan.tsx +112 -112
  468. package/src/packages/components/Table/plc/useTablePlc.tsx +229 -229
  469. package/src/packages/components/Table/plc/utils/iteratePlcList.tsx +48 -48
  470. package/src/packages/components/Table/plc/utils/plc.render.ts +122 -122
  471. package/src/packages/components/Table/plc/utils/plc.scope-slots.ts +63 -63
  472. package/src/packages/components/Table/plc/utils/plc.utils.ts +302 -302
  473. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.hooks.tsx +16 -16
  474. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.multiple.tsx +280 -280
  475. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.single.tsx +89 -89
  476. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.tsx +61 -61
  477. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.utils.ts +35 -35
  478. package/src/packages/components/Table/standard/PlcDraggier/PlcDraggier.tsx +55 -55
  479. package/src/packages/components/Table/standard/PlcExclusion.tsx +26 -26
  480. package/src/packages/components/Table/standard/PlcExpand.tsx +204 -204
  481. package/src/packages/components/Table/standard/PlcIndex.tsx +34 -34
  482. package/src/packages/components/Table/standard/PlcOperation/OuterOperation.tsx +210 -210
  483. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +391 -391
  484. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.utils.tsx +159 -159
  485. package/src/packages/components/Table/standard/PlcOperation/outer-operation.scss +39 -39
  486. package/src/packages/components/Table/standard/PlcOperation/useOperationPermission.ts +53 -53
  487. package/src/packages/components/Table/standard/PlcTree/PlcTree.autoWidth.tsx +52 -52
  488. package/src/packages/components/Table/standard/PlcTree/PlcTree.renderNode.tsx +81 -81
  489. package/src/packages/components/Table/standard/PlcTree/PlcTree.tsx +194 -194
  490. package/src/packages/components/Table/standard/PlcTree/PlcTree.utils.ts +59 -59
  491. package/src/packages/components/Table/standard/PlcTree/PlcTreeHeader.tsx +64 -64
  492. package/src/packages/components/Table/standard/PlcTree/RenderPlcTreeNode.tsx +114 -114
  493. package/src/packages/components/Table/table/Table.tsx +382 -382
  494. package/src/packages/components/Table/table/body/cell.tsx +310 -310
  495. package/src/packages/components/Table/table/body/row.tsx +47 -47
  496. package/src/packages/components/Table/table/body/useCellValue.tsx +145 -145
  497. package/src/packages/components/Table/table/head/head-cell.tsx +100 -100
  498. package/src/packages/components/Table/table/head/useHeadCellResize.ts +79 -79
  499. package/src/packages/components/Table/table/node/useTableNode.tsx +66 -66
  500. package/src/packages/components/Table/table/table.scss +438 -438
  501. package/src/packages/components/Table/table/use/useFixedShadow.ts +48 -48
  502. package/src/packages/components/Table/table/use/useTableDraggier.col.tsx +639 -639
  503. package/src/packages/components/Table/table/use/useTableDraggier.row.tsx +279 -279
  504. package/src/packages/components/Table/table/use/useTableDraggier.tsx +237 -237
  505. package/src/packages/components/Table/table/use/useTableFormEditor.tsx +190 -190
  506. package/src/packages/components/Table/table/use/useTableLoading.tsx +39 -39
  507. package/src/packages/components/Table/table/use/useTableMethods.tsx +65 -65
  508. package/src/packages/components/Table/table/use/useTableModifyEditor.tsx +204 -204
  509. package/src/packages/components/Table/table/use/useTableScroll.tsx +49 -49
  510. package/src/packages/components/Table/table/utils/createTableHooks.ts +70 -70
  511. package/src/packages/components/Table/table/utils/table.utils.ts +286 -286
  512. package/src/packages/components/Table/table/utils/url.utils.ts +23 -23
  513. package/src/packages/components/TableOptionSpace/index.ts +5 -5
  514. package/src/packages/components/TableOptionUtils/index.ts +5 -5
  515. package/src/packages/components/Tag/tag.utils.ts +20 -20
  516. package/src/packages/components/ThemeColor/index.tsx +22 -22
  517. package/src/packages/components/ThemeColor/theme-color.scss +36 -36
  518. package/src/packages/components/ThemeColorSelector/index.tsx +53 -53
  519. package/src/packages/components/ThemeDarkSelector/index.tsx +37 -37
  520. package/src/packages/components/ThemeEditor/index.tsx +199 -199
  521. package/src/packages/components/ThemeEditor/theme-editor.scss +106 -106
  522. package/src/packages/components/ThemeLocaleSelector/index.tsx +41 -41
  523. package/src/packages/components/ThemePrimaryColors/index.ts +5 -5
  524. package/src/packages/components/ThemeShapeSelector/index.tsx +55 -55
  525. package/src/packages/components/ThemeSizeSelector/index.tsx +50 -50
  526. package/src/packages/components/TimePicker/createRangeTimeRender.tsx +80 -80
  527. package/src/packages/components/TimePicker/createSeparateRangeTimeRender.tsx +104 -104
  528. package/src/packages/components/TimePicker/createSingleTimeRender.tsx +202 -202
  529. package/src/packages/components/TimePicker/index.tsx +65 -65
  530. package/src/packages/components/TimePicker/panel/TimeBaseColumn.tsx +136 -136
  531. package/src/packages/components/TimePicker/panel/TimeBasePanel.tsx +172 -172
  532. package/src/packages/components/TimePicker/panel/TimePanel.tsx +94 -94
  533. package/src/packages/components/TimePicker/panel/TimeRangePanel.tsx +141 -141
  534. package/src/packages/components/TimePicker/panel/time-base-column.scss +51 -51
  535. package/src/packages/components/TimePicker/panel/time-base-panel.scss +39 -39
  536. package/src/packages/components/TimePicker/panel/time-panel.utils.ts +16 -16
  537. package/src/packages/components/TimePicker/panel/time-range-panel.scss +9 -9
  538. package/src/packages/components/TimePicker/time.scss +10 -10
  539. package/src/packages/components/TimePicker/time.utils.ts +100 -100
  540. package/src/packages/components/TimePicker/useRangeTimeRender.tsx +236 -236
  541. package/src/packages/components/TimePicker/useTimeHooks.ts +11 -11
  542. package/src/packages/components/Toggle/index.tsx +116 -116
  543. package/src/packages/components/Toggle/toggle.scss +151 -151
  544. package/src/packages/components/Tooltip/index.tsx +118 -118
  545. package/src/packages/components/Tooltip/tooltip.scss +5 -5
  546. package/src/packages/components/Transition/index.tsx +134 -134
  547. package/src/packages/components/Tree/RenderTreeNode.tsx +178 -178
  548. package/src/packages/components/Tree/index.tsx +130 -130
  549. package/src/packages/components/Tree/tree.scss +259 -259
  550. package/src/packages/components/TreeCore/TreeCore.type.tsx +140 -140
  551. package/src/packages/components/TreeCore/createTreeCore.tsx +364 -364
  552. package/src/packages/components/TreeCore/createTreeDraggier.tsx +412 -412
  553. package/src/packages/components/TreeCore/createTreeHooks.ts +16 -16
  554. package/src/packages/components/TreeCore/createTreeMethods.tsx +421 -421
  555. package/src/packages/components/TreeCore/createTreeNode.tsx +244 -244
  556. package/src/packages/components/TreeCore/createTreeProps.ts +76 -76
  557. package/src/packages/components/TreeCore/createTreeUtils.ts +140 -140
  558. package/src/packages/components/TreeCore/fromatNodeData.ts +65 -65
  559. package/src/packages/components/TreeNodeWithMenu/index.tsx +95 -95
  560. package/src/packages/components/TreeNodeWithMenu/tree-node-with-menu.scss +39 -39
  561. package/src/packages/components/TreeNodeWithMenu/treeNodeWithMenu.utils.ts +12 -12
  562. package/src/packages/components/Triangle/index.tsx +88 -88
  563. package/src/packages/components/Triangle/triangle.scss +12 -12
  564. package/src/packages/components/Upload/index.tsx +422 -422
  565. package/src/packages/components/Upload/upload.scss +185 -185
  566. package/src/packages/components/VirtualList/createVirtualDraggier.ts +375 -375
  567. package/src/packages/components/VirtualList/index.tsx +109 -109
  568. package/src/packages/components/VirtualList/useVirtualList.tsx +440 -440
  569. package/src/packages/components/VirtualList/virtual-list.scss +58 -58
  570. package/src/packages/components/VirtualTable/index.tsx +220 -220
  571. package/src/packages/components/VirtualTable/virtual-table.scss +179 -179
  572. package/src/packages/components/_Object/index.tsx +5 -5
  573. package/src/packages/components/buildPlainDefaultUrlConfig/index.tsx +5 -5
  574. package/src/packages/components/createAddressService/index.ts +5 -5
  575. package/src/packages/components/createAutoScrollManager/index.tsx +41 -41
  576. package/src/packages/components/createHttp/http.utils.ts +56 -56
  577. package/src/packages/components/createHttp/index.tsx +29 -29
  578. package/src/packages/components/createObjectService/index.tsx +5 -5
  579. package/src/packages/components/createOvService/index.tsx +5 -5
  580. package/src/packages/components/createPlainAddressService/index.tsx +107 -107
  581. package/src/packages/components/createPopup/index.ts +5 -5
  582. package/src/packages/components/createRequestInterceptor/index.ts +139 -139
  583. package/src/packages/components/createScrollDraggier/index.ts +341 -341
  584. package/src/packages/components/createScrollUtils/index.tsx +163 -163
  585. package/src/packages/components/createSimpleDate/index.ts +49 -49
  586. package/src/packages/components/createTableOptionUser/index.tsx +5 -5
  587. package/src/packages/components/createTransitionHandler/index.ts +46 -46
  588. package/src/packages/components/createUploadService/index.tsx +5 -5
  589. package/src/packages/components/createVirtualDraggier/index.ts +5 -5
  590. package/src/packages/components/createWebDraggier/index.ts +5 -5
  591. package/src/packages/components/i18n/index.tsx +5 -5
  592. package/src/packages/components/loadFile/index.ts +20 -20
  593. package/src/packages/components/nextPopupId/index.ts +5 -5
  594. package/src/packages/components/useAutoScrollUtils/auto-scroll-utils.scss +48 -48
  595. package/src/packages/components/useAutoScrollUtils/index.tsx +86 -86
  596. package/src/packages/components/useContextmenuOptions/index.tsx +40 -40
  597. package/src/packages/components/useDialog/DialogService.tsx +227 -227
  598. package/src/packages/components/useDialog/dialog-service.scss +50 -50
  599. package/src/packages/components/useDialog/dialog.service.utils.tsx +88 -88
  600. package/src/packages/components/useDialog/index.tsx +66 -66
  601. package/src/packages/components/useImage/ImageService.tsx +285 -285
  602. package/src/packages/components/useImage/index.tsx +28 -28
  603. package/src/packages/components/useLoading/LoadingService.tsx +106 -106
  604. package/src/packages/components/useLoading/index.tsx +31 -31
  605. package/src/packages/components/useLoading/loading.service.scss +25 -25
  606. package/src/packages/components/useLoading/loading.service.utils.tsx +13 -13
  607. package/src/packages/components/useMessage/Message.tsx +77 -77
  608. package/src/packages/components/useMessage/MessageContainer.tsx +64 -64
  609. package/src/packages/components/useMessage/MessageManager.tsx +58 -58
  610. package/src/packages/components/useMessage/index.tsx +51 -51
  611. package/src/packages/components/useMessage/message.scss +149 -149
  612. package/src/packages/components/useMessage/message.service.utils.tsx +43 -43
  613. package/src/packages/components/useNotice/Notice.tsx +93 -93
  614. package/src/packages/components/useNotice/NoticeContainer.tsx +65 -65
  615. package/src/packages/components/useNotice/NoticeManager.tsx +58 -58
  616. package/src/packages/components/useNotice/index.tsx +42 -42
  617. package/src/packages/components/useNotice/noitice.service.utils.tsx +48 -48
  618. package/src/packages/components/useNotice/notice.scss +158 -158
  619. package/src/packages/components/usePageRender/index.tsx +3 -3
  620. package/src/packages/components/usePageRenderContext/index.tsx +8 -8
  621. package/src/packages/components/usePopup/PopupItem.tsx +432 -432
  622. package/src/packages/components/usePopup/index.tsx +1 -1
  623. package/src/packages/components/usePopup/popup-item.scss +252 -252
  624. package/src/packages/components/usePopup/refresh/MaxMinTopLeft.ts +38 -38
  625. package/src/packages/components/usePopup/refresh/applyPosition.ts +61 -61
  626. package/src/packages/components/usePopup/refresh/calcPosition.ts +88 -88
  627. package/src/packages/components/usePopup/refresh/refreshArrow.ts +112 -112
  628. package/src/packages/components/usePopup/refresh/refreshPopup.ts +79 -79
  629. package/src/packages/components/usePopup/trigger/useManagerTrigger.click.tsx +56 -56
  630. package/src/packages/components/usePopup/trigger/useManagerTrigger.clickOutside.tsx +39 -39
  631. package/src/packages/components/usePopup/trigger/useManagerTrigger.contextmenu.tsx +59 -59
  632. package/src/packages/components/usePopup/trigger/useManagerTrigger.focus.tsx +30 -30
  633. package/src/packages/components/usePopup/trigger/useManagerTrigger.hover.tsx +60 -60
  634. package/src/packages/components/usePopup/trigger/usePopupTrigger.tsx +56 -56
  635. package/src/packages/components/usePopup/trigger/useReferenceTrigger.tsx +90 -90
  636. package/src/packages/components/usePopup/usePopup.tsx +73 -73
  637. package/src/packages/components/usePopup/usePopupManager.tsx +325 -325
  638. package/src/packages/components/usePopup/utils/closeAllPopper.ts +5 -5
  639. package/src/packages/components/usePopup/utils/createPopperAttrsGetter.ts +5 -5
  640. package/src/packages/components/usePopup/utils/createPopupManagerHooks.tsx +65 -65
  641. package/src/packages/components/usePopup/utils/decodePlacement.ts +16 -16
  642. package/src/packages/components/usePopup/utils/getAvailableDirection.ts +91 -91
  643. package/src/packages/components/usePopup/utils/getBoundary.ts +25 -25
  644. package/src/packages/components/usePopup/utils/getRects.ts +24 -24
  645. package/src/packages/components/usePopup/utils/handleDirection.ts +10 -10
  646. package/src/packages/components/usePopup/utils/ids2map.ts +11 -11
  647. package/src/packages/components/usePopup/utils/popup.utils.ts +239 -239
  648. package/src/packages/components/usePopup/utils/stopPopup.ts +7 -7
  649. package/src/packages/components/usePopupEditor/index.tsx +113 -113
  650. package/src/packages/components/usePopupEditor/popup-editor.utils.ts +15 -15
  651. package/src/packages/components/usePopupManager/index.ts +5 -5
  652. package/src/packages/components/usePopupTrigger/index.tsx +5 -5
  653. package/src/packages/components/useReferenceTrigger/index.tsx +5 -5
  654. package/src/packages/components/useTableFilter/index.ts +73 -73
  655. package/src/packages/components/useTooltip/index.tsx +188 -188
  656. package/src/packages/components/useWatchAutoClear/index.ts +5 -5
  657. package/src/packages/directives/ClickWave/click-wave.scss +57 -57
  658. package/src/packages/directives/ClickWave/index.tsx +78 -78
  659. package/src/packages/directives/ResizeDetector/index.tsx +107 -107
  660. package/src/packages/entry.tsx +322 -322
  661. package/src/packages/i18n/i18n.utils.ts +272 -272
  662. package/src/packages/i18n/index.ts +5 -5
  663. package/src/packages/i18n/lang/en-us.ts +4 -0
  664. package/src/packages/i18n/lang/zh-cn.ts +4 -0
  665. package/src/packages/index.tsx +5 -5
  666. package/src/packages/styles/application/application.public.scss +15 -15
  667. package/src/packages/styles/application/application.public.transition.scss +90 -90
  668. package/src/packages/styles/global.import.scss +194 -194
  669. package/src/packages/uses/createInputPopperAttrs.ts +60 -60
  670. package/src/packages/uses/useCollapseStyles.tsx +56 -56
  671. package/src/packages/uses/useDragHorizontalScroll.ts +81 -81
  672. package/src/packages/uses/useEdit.ts +116 -116
  673. package/src/packages/uses/useFocusHandler.ts +73 -73
  674. package/src/packages/uses/useFunctionWrapper.ts +31 -31
  675. package/src/packages/uses/useMultipleModel.tsx +65 -65
  676. package/src/packages/uses/useRenderReference.tsx +32 -32
  677. package/src/packages/uses/useStyle.tsx +82 -82
  678. package/src/packages/utils/ClientZoom.ts +50 -50
  679. package/src/packages/utils/ComponentUtils.ts +10 -10
  680. package/src/packages/utils/FixInput.ts +3 -3
  681. package/src/packages/utils/InnerTransition.ts +13 -13
  682. package/src/packages/utils/LoadingText.ts +11 -11
  683. package/src/packages/utils/OpenController.ts +15 -15
  684. package/src/packages/utils/buildCycleIndexList.ts +31 -31
  685. package/src/packages/utils/clearFields.ts +16 -16
  686. package/src/packages/utils/color.utils.ts +189 -189
  687. package/src/packages/utils/combineURL.ts +5 -5
  688. package/src/packages/utils/constant.tsx +5 -5
  689. package/src/packages/utils/createAnimate.ts +45 -45
  690. package/src/packages/utils/createCache.ts +32 -32
  691. package/src/packages/utils/createDraggier.ts +256 -256
  692. package/src/packages/utils/createEffectiveHandler.ts +8 -8
  693. package/src/packages/utils/createError.ts +16 -16
  694. package/src/packages/utils/createFlagManager.ts +34 -34
  695. package/src/packages/utils/createKeyHandler.ts +20 -20
  696. package/src/packages/utils/createListUtils.ts +38 -38
  697. package/src/packages/utils/customDeepClone.ts +15 -15
  698. package/src/packages/utils/deepCloneRenderNode.ts +41 -41
  699. package/src/packages/utils/deepIterateObject.ts +14 -14
  700. package/src/packages/utils/findReactElement.tsx +76 -76
  701. package/src/packages/utils/getDeviceInfo.ts +59 -59
  702. package/src/packages/utils/getElementRect.ts +32 -32
  703. package/src/packages/utils/getRowEl.ts +33 -33
  704. package/src/packages/utils/incrementalMerge.ts +8 -8
  705. package/src/packages/utils/inheritSlots.ts +30 -30
  706. package/src/packages/utils/installAllIcons.ts +19 -19
  707. package/src/packages/utils/installAllLazyIcons.ts +17 -17
  708. package/src/packages/utils/isObjectCommonMatch.ts +21 -21
  709. package/src/packages/utils/isSSR.tsx +3 -3
  710. package/src/packages/utils/onParentElementsScroll.tsx +26 -26
  711. package/src/packages/utils/plainDate.ts +203 -203
  712. package/src/packages/utils/renderInputModeTextRangeValue.tsx +25 -25
  713. package/src/packages/utils/renderNothing.tsx +1 -1
  714. package/src/packages/utils/type.ts +11 -11
  715. package/src/packages/utils/useMove.tsx +78 -78
  716. package/src/packages/utils/watchEffectAutoClear.ts +28 -28
@@ -1,439 +1,439 @@
1
- import {PlainObject} from "@peryl/utils/event";
2
- import {computed, ExtractPropTypes, PropType} from "@peryl/react-compose";
3
- import {createEnum} from "@peryl/utils/createEnum";
4
- import {toArray} from "@peryl/utils/toArray";
5
-
6
- /**
7
- * 表单的校验模式
8
- * @author 韦胜健
9
- * @date 2022/8/22 17:50
10
- * @param form: 会通过watch的方式监听值变化,随后触发change校验
11
- * @param table: 会通过edit control的方式监听change
12
- */
13
- export const eFormValidateMode = createEnum(['form', 'table'] as const);
14
-
15
- /**
16
- * 校验的触发类型
17
- * @author 韦胜健
18
- * @date 2022/8/22 21:51
19
- * @param change 值变化的时候校验
20
- * @param blur 编辑器失去焦点的时候触发校验
21
- */
22
- export const eFormValidateTrigger = createEnum(['change', 'blur'] as const);
23
-
24
- /**
25
- * FormItem与FormEditor组件共同使用的属性(FormEditor组件暴露的FormEditor的属性)
26
- * @author 韦胜健
27
- * @date 2022/8/24 10:23
28
- */
29
- export const FormItemValidateExposePropsOption = {
30
- /*---------------------------------------对比iValidateRuleConfig名称不变的属性-------------------------------------------*/
31
- label: { type: String as PropType<string | null | undefined> }, // 字段显示文本
32
- field: { type: String }, // 字段绑定名称(字段访问路径)
33
- required: { type: [Function, Boolean] as PropType<iValidateRule["required"]> },
34
- validator: { type: Function as PropType<iValidateRule["validator"]> },
35
- /*---------------------------------------额外添加校验规则-------------------------------------------*/
36
- rules: { type: [Object, Array] as PropType<iValidateRule | iValidateRule[]> },
37
- } as const;
38
- /**
39
- * FormItem校验相关的属性定义
40
- * @author 韦胜健
41
- * @date 2022/8/22 15:16
42
- */
43
- export const FormItemValidatePropsOption = {
44
- ...FormItemValidateExposePropsOption,
45
- /*---------------------------------------对比iValidateRuleConfig,名称变化的属性-------------------------------------------*/
46
- validateTrigger: { type: String as PropType<typeof eFormValidateTrigger.TYPE> },
47
- validateType: { type: String },
48
- validateValueGetter: { type: Function as PropType<iValidateRule["valueGetter"]> },
49
- validatePattern: {},
50
- validateMax: { type: Number },
51
- validateMin: { type: Number },
52
- validateLen: { type: Number },
53
- validateEnum: { type: Array as PropType<any[]> },
54
- validateTransform: { type: Function as PropType<iValidateRule["transform"]> },
55
- validateMessage: { type: [String, Function] as PropType<iValidateRule["message"]> },
56
- } as const;
57
-
58
- /**
59
- * FormItemValidateProps转化成props对象的类型
60
- * @author 韦胜健
61
- * @date 2022/8/22 15:18
62
- */
63
- export type iFormItemValidatePropsType = ExtractPropTypes<typeof FormItemValidatePropsOption>
64
-
65
- /**
66
- * Form校验相关的属性定义
67
- * @author 韦胜健
68
- * @date 2022/8/22 17:47
69
- */
70
- export const FormValidatePropsOption = {
71
- modelValue: { type: Object as PropType<PlainObject> }, // 校验的表单对象
72
- rules: { type: Object as PropType<Record<string, iValidateRule | iValidateRule[]>> }, // 额外的校验规则,key为field,value为校验规则,依赖于FormItem,如果对应field的FormItem不存在,则这个校验规则也不存在
73
- anotherRules: { type: Array as PropType<iAnotherRule[]> }, // 额外的校验规则,不同于rules, 不依赖于FormItem,一直有效
74
- validateMode: { type: String as PropType<typeof eFormValidateMode.TYPE> }, // 校验模式,看eFormValidateMode说明
75
- // associateFields: { type: Object as PropType<Record<string, string>> }, // 校验关联字段,当key的field校验时自动校验value对应的field
76
- hideRequiredAsterisk: { type: Boolean }, // 是否隐藏label旁边的红色必填星号标识
77
- hideValidateMessage: { type: Boolean }, // 是否隐藏校验失败信息
78
-
79
- disabledFields: { type: Object as PropType<iValidationDisabledFields> }, // 禁用的字段
80
- readonlyFields: { type: Object as PropType<iValidationReadonlyFields> }, // 只读的字段
81
- } as const;
82
-
83
- /**
84
- * FormValidatePropsType转化成props对象类型
85
- * @author 韦胜健
86
- * @date 2022/8/22 17:48
87
- */
88
- export type iFormValidatePropsType = ExtractPropTypes<typeof FormValidatePropsOption>
89
-
90
- /**
91
- * 自定义校验函数参数类型
92
- * @author 韦胜健
93
- * @date 2022/8/22 15:18
94
- */
95
- export interface iValidatorParam {
96
- value: any,
97
- formData: undefined | null | PlainObject,
98
- rule: iValidateRule,
99
- }
100
-
101
- /**
102
- * 获取值的函数类型
103
- * @author 韦胜健
104
- * @date 2022/8/22 15:18
105
- */
106
- export type iValidateValueGetter = (param: Omit<iValidatorParam, "value">) => any
107
-
108
- /**
109
- * 单条校验规则
110
- * @author 韦胜健
111
- * @date 2022/8/22 14:26
112
- */
113
- export interface iValidateRule {
114
- label?: string | null, // 校验提示字段文本
115
- field?: string, // 校验的字段名称(字段访问路径),label与field不能同时为空,并且一个label对应一个field
116
- required?: boolean | ((formData: undefined | null | PlainObject) => boolean), // 是否必填(type为any的情况下,不能为null,undefined,空数组以及空字符串)
117
-
118
- trigger?: typeof eFormValidateTrigger.TYPE,// 校验的触发方式
119
- type?: string, // 校验的数据类型(默认为any)
120
- valueGetter?: iValidateValueGetter, // 获取校验的值,有这个函数可以不需要formData以及field
121
- pattern?: any, // 校验的正则表达式,RegExp|string
122
- min?: number | string, // 依据不同的type,校验最小值
123
- max?: number | string, // 依据不同的type,校验最大值
124
- len?: number, // 依据不同的type,校验长度
125
- enum?: any[], // 依据不同的type,值的范围
126
- transform?: (val: any, formData: undefined | null | PlainObject) => any, // 在校验之前对原始值进行转换
127
- validator?: (param: iValidatorParam) => void | string | Promise<void | string>,// 自定义校验逻辑
128
- message?: string | ((value: any, formData: PlainObject | null | undefined) => string), // 校验失败的时候的提示信息
129
- }
130
-
131
- export type iAnotherRule = Omit<iValidateRule, 'label' | 'field'> & { label: string, field: string }
132
-
133
- /**
134
- * 注册校验类型的函数类型
135
- * @author 韦胜健
136
- * @date 2022.11.5 23:03
137
- */
138
- export type iRegistrationValidator = ((param: iValidatorParam & { required: boolean, getMessage: (msg: string) => string }) => Promise<void | string>)
139
-
140
- /**
141
- * 校验结果类型
142
- * @author 韦胜健
143
- * @date 2022/8/22 21:55
144
- */
145
- export interface iValidateResult {
146
- rule: iValidateRule,
147
- label?: string,
148
- field?: string,
149
- message: string,
150
- value: any,
151
- }
152
-
153
- /**
154
- * 校验保留的结果信息
155
- * @author 韦胜健
156
- * @date 2022.11.5 23:27
157
- */
158
- export interface iValidateState {validateResultData: null | iValidateResult[];}
159
-
160
- /**
161
- * 获取校验提示信息,如果message是函数则完全使用message提示信息,否则提示信息为label+message
162
- * @author 韦胜健
163
- * @date 2022.9.2 19:14
164
- */
165
- export function getValidateResultMessage(
166
- result: iValidateResult,
167
- formData: PlainObject | undefined
168
- ): string {
169
- const {
170
- label,
171
- message,
172
- rule: { message: ruleMessage },
173
- value
174
- } = result;
175
- if (typeof ruleMessage === 'function') {
176
- return ruleMessage(value, formData);
177
- } else {
178
- return [label, message].filter(Boolean).join('');
179
- }
180
- }
181
-
182
- /*禁用字段对象配置类型*/
183
- export type iValidationDisabledFields = Record<string, boolean | undefined>;
184
-
185
- /*只读字段对象配置类型*/
186
- export type iValidationReadonlyFields = Record<string, boolean | undefined>;
187
-
188
- /**
189
- * 校验规则是否为必填
190
- * @author 韦胜健
191
- * @date 2022.11.5 22:31
192
- */
193
- export function isRuleRequired(rule: iValidateRule, formData: PlainObject | null | undefined): boolean {
194
- /*没有设置必填*/
195
- if (rule.required == null || rule.required == false) {return false;}
196
- /*设置为true*/
197
- if (rule.required === true) {return true;}
198
- /*动态必填*/
199
- if (typeof rule.required === 'function' && rule.required(formData) === true) {
200
- return true;
201
- }
202
- return false;
203
- }
204
-
205
- /**
206
- * 计算formItem的校验规则
207
- * @author 韦胜健
208
- * @date 2022.11.5 22:34
209
- */
210
- export function createFormItemRules({ getFormPropsRules, formItemProps: props }: { getFormPropsRules: () => iFormValidatePropsType["rules"], formItemProps: iFormItemValidatePropsType }) {
211
-
212
- /**
213
- * 暴露在props中的校验规则属性,合并成一个校验规则
214
- * @author 韦胜健
215
- * @date 2022.11.5 22:35
216
- */
217
- const outerRule = computed((): iValidateRule | null => {
218
- const {
219
- required,
220
- validator,
221
- validateType,
222
- validateValueGetter,
223
- validatePattern,
224
- validateMax,
225
- validateMin,
226
- validateLen,
227
- validateEnum,
228
- validateTransform,
229
- validateMessage,
230
- } = props;
231
- if (
232
- [
233
- required,
234
- validator,
235
- validateType,
236
- validateValueGetter,
237
- validatePattern,
238
- validateMax,
239
- validateMin,
240
- validateLen,
241
- validateEnum,
242
- validateTransform,
243
- validateMessage
244
- ].some((i) => i != null && i !== false)
245
- ) {
246
- return {
247
- label: props.label,
248
- field: props.field,
249
- trigger: props.validateTrigger,
250
- required,
251
- validator,
252
- type: validateType,
253
- valueGetter: validateValueGetter,
254
- pattern: validatePattern,
255
- max: validateMax,
256
- min: validateMin,
257
- len: validateLen,
258
- enum: validateEnum,
259
- transform: validateTransform,
260
- message: validateMessage
261
- };
262
- } else {
263
- return null;
264
- }
265
- });
266
-
267
- /**
268
- * 从props.rules中取出来的校验规则
269
- * @author 韦胜健
270
- * @date 2022.11.5 22:35
271
- */
272
- const propsRules = computed((): iValidateRule[] | null => {
273
- return !props.rules ? null : toArray(props.rules).map(rule => {
274
- const field = rule.field || props.field;
275
- return {
276
- field,
277
- label: props.label,
278
- /*有field就用field取值,否则试试props.validateValueGetter*/
279
- valueGetter: !field ? props.validateValueGetter : undefined,
280
- ...rule
281
- };
282
- });
283
- });
284
-
285
- /**
286
- * 从form组件props.rules并且根据当前formItem.props.field取出来的校验规则
287
- * @author 韦胜健
288
- * @date 2022.11.5 22:35
289
- */
290
- const formRules = computed((): iValidateRule[] | null => {
291
- if (!props.field) {return null;}
292
- const formPropsRules = getFormPropsRules();
293
- if (!formPropsRules) {return null;}
294
- const rule = formPropsRules[props.field];
295
- return !rule ? null : toArray(rule).map(rule => ({
296
- field: props.field,
297
- label: props.label,
298
- valueGetter: props.validateValueGetter,
299
- ...rule,
300
- }));
301
- });
302
-
303
- return { outerRule, propsRules, formRules };
304
- }
305
-
306
- /**
307
- * 判断是否匹配触发规则
308
- * @author 韦胜健
309
- * @date 2022.11.5 22:50
310
- */
311
- export function isMatchTrigger(trigger: typeof eFormValidateTrigger.TYPE, rule: iValidateRule) {
312
- /*校验的触发动作是change的话,只要不是blur的校验规则都拿出来校验*/
313
- return (trigger === eFormValidateTrigger.change && rule.trigger !== eFormValidateTrigger.blur) ||
314
- /*校验的触发动作是blur的话,只有blur的校验规则才拿出来校验*/
315
- (trigger === eFormValidateTrigger.blur && rule.trigger === eFormValidateTrigger.blur);
316
- }
317
-
318
- /**
319
- * 根据路径深度获取对象值
320
- * @author 韦胜健
321
- * @date 2022/8/22 22:04
322
- */
323
- export function getValueByPath(formData: PlainObject | undefined, path: string) {
324
- if (path.indexOf('.') === -1) {
325
- return formData?.[path];
326
- }
327
- const keys = path.split('.');
328
- const len = keys.length;
329
- let obj = formData;
330
- for (let i = 0; i < keys.length; i++) {
331
- const key = keys[i];
332
- if (i === len - 1 && !!obj) {
333
- return obj[key];
334
- }
335
- if (!obj) {
336
- return undefined;
337
- }
338
- obj = obj[key];
339
- }
340
- return undefined;
341
- }
342
-
343
- /**
344
- * 计算校验规则对应的值
345
- * @author 韦胜健
346
- * @date 2022.11.5 22:57
347
- */
348
- export function getRuleValue(
349
- {
350
- formData,
351
- field,
352
- validateValueGetter,
353
- formItemProps
354
- }: {
355
- formData: any;
356
- field: string | undefined | null;
357
- validateValueGetter: undefined | ((formData: any) => any);
358
- formItemProps: { label?: string | null; field?: string };
359
- }) {
360
- if (!!validateValueGetter) {
361
- return validateValueGetter(formData);
362
- }
363
- if (!field || !formData) {
364
- console.log('属性不正确:', formItemProps);
365
- console.error(
366
- `FormItem没有设置validateValueGetter的情况下,FormItem.props.field以及Form.props.modelValue都不能为空!`
367
- );
368
- return null;
369
- }
370
- return getValueByPath(formData, field);
371
- }
372
-
373
- /**
374
- * 执行校验规则
375
- * @author 韦胜健
376
- * @date 2022/8/22 22:44
377
- */
378
- export async function checkRules(
379
- {
380
- rules,
381
- formData,
382
- types,
383
- getLabelByField,
384
- }: {
385
- rules: iValidateRule[],
386
- formData: PlainObject | null | undefined,
387
- types: Record<string, iRegistrationValidator | undefined>,
388
- getLabelByField: (field: string) => string | null | undefined,
389
- }): Promise<iValidateResult[] | null> {
390
- const ret = (
391
- await Promise.all(
392
- rules.map(async (rule) => {
393
- const { label, field } = rule;
394
- let value = rule.valueGetter
395
- ? rule.valueGetter({ formData, rule })
396
- : getRuleValue({
397
- field,
398
- formData,
399
- validateValueGetter: undefined,
400
- formItemProps: { label, field }
401
- });
402
- if (!!rule.transform) {
403
- value = rule.transform(value, formData);
404
- }
405
- const validateType = rule.type || 'any';
406
- const registryValidateType = types[validateType];
407
- if (!registryValidateType) {
408
- return Promise.reject(`无法识别校验类型rule.type=${validateType}`);
409
- }
410
- const required: boolean =
411
- typeof rule.required === 'function' ? rule.required(formData) : !!rule.required;
412
- const getMessage = (msg: string) => {
413
- if (!!rule.message) {
414
- return typeof rule.message === 'function'
415
- ? rule.message(value, formData)
416
- : rule.message;
417
- }
418
- return msg;
419
- };
420
- const validatorParam = { value, formData, rule, required, getMessage };
421
- let message = await registryValidateType(validatorParam);
422
- if (!message && !!rule.validator) {
423
- message = await rule.validator(validatorParam);
424
- }
425
- /*没有返回错误信息,视为校验通过*/
426
- return !message
427
- ? null
428
- : {
429
- rule,
430
- label: rule.label || (!rule.field ? null : getLabelByField(rule.field)),
431
- field: rule.field,
432
- message: message,
433
- value
434
- };
435
- })
436
- )
437
- ).filter(Boolean) as iValidateResult[];
438
- return ret.length == 0 ? null : ret;
439
- }
1
+ import {PlainObject} from "@peryl/utils/event";
2
+ import {computed, ExtractPropTypes, PropType} from "@peryl/react-compose";
3
+ import {createEnum} from "@peryl/utils/createEnum";
4
+ import {toArray} from "@peryl/utils/toArray";
5
+
6
+ /**
7
+ * 表单的校验模式
8
+ * @author 韦胜健
9
+ * @date 2022/8/22 17:50
10
+ * @param form: 会通过watch的方式监听值变化,随后触发change校验
11
+ * @param table: 会通过edit control的方式监听change
12
+ */
13
+ export const eFormValidateMode = createEnum(['form', 'table'] as const);
14
+
15
+ /**
16
+ * 校验的触发类型
17
+ * @author 韦胜健
18
+ * @date 2022/8/22 21:51
19
+ * @param change 值变化的时候校验
20
+ * @param blur 编辑器失去焦点的时候触发校验
21
+ */
22
+ export const eFormValidateTrigger = createEnum(['change', 'blur'] as const);
23
+
24
+ /**
25
+ * FormItem与FormEditor组件共同使用的属性(FormEditor组件暴露的FormEditor的属性)
26
+ * @author 韦胜健
27
+ * @date 2022/8/24 10:23
28
+ */
29
+ export const FormItemValidateExposePropsOption = {
30
+ /*---------------------------------------对比iValidateRuleConfig名称不变的属性-------------------------------------------*/
31
+ label: { type: String as PropType<string | null | undefined> }, // 字段显示文本
32
+ field: { type: String }, // 字段绑定名称(字段访问路径)
33
+ required: { type: [Function, Boolean] as PropType<iValidateRule["required"]> },
34
+ validator: { type: Function as PropType<iValidateRule["validator"]> },
35
+ /*---------------------------------------额外添加校验规则-------------------------------------------*/
36
+ rules: { type: [Object, Array] as PropType<iValidateRule | iValidateRule[]> },
37
+ } as const;
38
+ /**
39
+ * FormItem校验相关的属性定义
40
+ * @author 韦胜健
41
+ * @date 2022/8/22 15:16
42
+ */
43
+ export const FormItemValidatePropsOption = {
44
+ ...FormItemValidateExposePropsOption,
45
+ /*---------------------------------------对比iValidateRuleConfig,名称变化的属性-------------------------------------------*/
46
+ validateTrigger: { type: String as PropType<typeof eFormValidateTrigger.TYPE> },
47
+ validateType: { type: String },
48
+ validateValueGetter: { type: Function as PropType<iValidateRule["valueGetter"]> },
49
+ validatePattern: {},
50
+ validateMax: { type: Number },
51
+ validateMin: { type: Number },
52
+ validateLen: { type: Number },
53
+ validateEnum: { type: Array as PropType<any[]> },
54
+ validateTransform: { type: Function as PropType<iValidateRule["transform"]> },
55
+ validateMessage: { type: [String, Function] as PropType<iValidateRule["message"]> },
56
+ } as const;
57
+
58
+ /**
59
+ * FormItemValidateProps转化成props对象的类型
60
+ * @author 韦胜健
61
+ * @date 2022/8/22 15:18
62
+ */
63
+ export type iFormItemValidatePropsType = ExtractPropTypes<typeof FormItemValidatePropsOption>
64
+
65
+ /**
66
+ * Form校验相关的属性定义
67
+ * @author 韦胜健
68
+ * @date 2022/8/22 17:47
69
+ */
70
+ export const FormValidatePropsOption = {
71
+ modelValue: { type: Object as PropType<PlainObject> }, // 校验的表单对象
72
+ rules: { type: Object as PropType<Record<string, iValidateRule | iValidateRule[]>> }, // 额外的校验规则,key为field,value为校验规则,依赖于FormItem,如果对应field的FormItem不存在,则这个校验规则也不存在
73
+ anotherRules: { type: Array as PropType<iAnotherRule[]> }, // 额外的校验规则,不同于rules, 不依赖于FormItem,一直有效
74
+ validateMode: { type: String as PropType<typeof eFormValidateMode.TYPE> }, // 校验模式,看eFormValidateMode说明
75
+ // associateFields: { type: Object as PropType<Record<string, string>> }, // 校验关联字段,当key的field校验时自动校验value对应的field
76
+ hideRequiredAsterisk: { type: Boolean }, // 是否隐藏label旁边的红色必填星号标识
77
+ hideValidateMessage: { type: Boolean }, // 是否隐藏校验失败信息
78
+
79
+ disabledFields: { type: Object as PropType<iValidationDisabledFields> }, // 禁用的字段
80
+ readonlyFields: { type: Object as PropType<iValidationReadonlyFields> }, // 只读的字段
81
+ } as const;
82
+
83
+ /**
84
+ * FormValidatePropsType转化成props对象类型
85
+ * @author 韦胜健
86
+ * @date 2022/8/22 17:48
87
+ */
88
+ export type iFormValidatePropsType = ExtractPropTypes<typeof FormValidatePropsOption>
89
+
90
+ /**
91
+ * 自定义校验函数参数类型
92
+ * @author 韦胜健
93
+ * @date 2022/8/22 15:18
94
+ */
95
+ export interface iValidatorParam {
96
+ value: any,
97
+ formData: undefined | null | PlainObject,
98
+ rule: iValidateRule,
99
+ }
100
+
101
+ /**
102
+ * 获取值的函数类型
103
+ * @author 韦胜健
104
+ * @date 2022/8/22 15:18
105
+ */
106
+ export type iValidateValueGetter = (param: Omit<iValidatorParam, "value">) => any
107
+
108
+ /**
109
+ * 单条校验规则
110
+ * @author 韦胜健
111
+ * @date 2022/8/22 14:26
112
+ */
113
+ export interface iValidateRule {
114
+ label?: string | null, // 校验提示字段文本
115
+ field?: string, // 校验的字段名称(字段访问路径),label与field不能同时为空,并且一个label对应一个field
116
+ required?: boolean | ((formData: undefined | null | PlainObject) => boolean), // 是否必填(type为any的情况下,不能为null,undefined,空数组以及空字符串)
117
+
118
+ trigger?: typeof eFormValidateTrigger.TYPE,// 校验的触发方式
119
+ type?: string, // 校验的数据类型(默认为any)
120
+ valueGetter?: iValidateValueGetter, // 获取校验的值,有这个函数可以不需要formData以及field
121
+ pattern?: any, // 校验的正则表达式,RegExp|string
122
+ min?: number | string, // 依据不同的type,校验最小值
123
+ max?: number | string, // 依据不同的type,校验最大值
124
+ len?: number, // 依据不同的type,校验长度
125
+ enum?: any[], // 依据不同的type,值的范围
126
+ transform?: (val: any, formData: undefined | null | PlainObject) => any, // 在校验之前对原始值进行转换
127
+ validator?: (param: iValidatorParam) => void | string | Promise<void | string>,// 自定义校验逻辑
128
+ message?: string | ((value: any, formData: PlainObject | null | undefined) => string), // 校验失败的时候的提示信息
129
+ }
130
+
131
+ export type iAnotherRule = Omit<iValidateRule, 'label' | 'field'> & { label: string, field: string }
132
+
133
+ /**
134
+ * 注册校验类型的函数类型
135
+ * @author 韦胜健
136
+ * @date 2022.11.5 23:03
137
+ */
138
+ export type iRegistrationValidator = ((param: iValidatorParam & { required: boolean, getMessage: (msg: string) => string }) => Promise<void | string>)
139
+
140
+ /**
141
+ * 校验结果类型
142
+ * @author 韦胜健
143
+ * @date 2022/8/22 21:55
144
+ */
145
+ export interface iValidateResult {
146
+ rule: iValidateRule,
147
+ label?: string,
148
+ field?: string,
149
+ message: string,
150
+ value: any,
151
+ }
152
+
153
+ /**
154
+ * 校验保留的结果信息
155
+ * @author 韦胜健
156
+ * @date 2022.11.5 23:27
157
+ */
158
+ export interface iValidateState {validateResultData: null | iValidateResult[];}
159
+
160
+ /**
161
+ * 获取校验提示信息,如果message是函数则完全使用message提示信息,否则提示信息为label+message
162
+ * @author 韦胜健
163
+ * @date 2022.9.2 19:14
164
+ */
165
+ export function getValidateResultMessage(
166
+ result: iValidateResult,
167
+ formData: PlainObject | undefined
168
+ ): string {
169
+ const {
170
+ label,
171
+ message,
172
+ rule: { message: ruleMessage },
173
+ value
174
+ } = result;
175
+ if (typeof ruleMessage === 'function') {
176
+ return ruleMessage(value, formData);
177
+ } else {
178
+ return [label, message].filter(Boolean).join('');
179
+ }
180
+ }
181
+
182
+ /*禁用字段对象配置类型*/
183
+ export type iValidationDisabledFields = Record<string, boolean | undefined>;
184
+
185
+ /*只读字段对象配置类型*/
186
+ export type iValidationReadonlyFields = Record<string, boolean | undefined>;
187
+
188
+ /**
189
+ * 校验规则是否为必填
190
+ * @author 韦胜健
191
+ * @date 2022.11.5 22:31
192
+ */
193
+ export function isRuleRequired(rule: iValidateRule, formData: PlainObject | null | undefined): boolean {
194
+ /*没有设置必填*/
195
+ if (rule.required == null || rule.required == false) {return false;}
196
+ /*设置为true*/
197
+ if (rule.required === true) {return true;}
198
+ /*动态必填*/
199
+ if (typeof rule.required === 'function' && rule.required(formData) === true) {
200
+ return true;
201
+ }
202
+ return false;
203
+ }
204
+
205
+ /**
206
+ * 计算formItem的校验规则
207
+ * @author 韦胜健
208
+ * @date 2022.11.5 22:34
209
+ */
210
+ export function createFormItemRules({ getFormPropsRules, formItemProps: props }: { getFormPropsRules: () => iFormValidatePropsType["rules"], formItemProps: iFormItemValidatePropsType }) {
211
+
212
+ /**
213
+ * 暴露在props中的校验规则属性,合并成一个校验规则
214
+ * @author 韦胜健
215
+ * @date 2022.11.5 22:35
216
+ */
217
+ const outerRule = computed((): iValidateRule | null => {
218
+ const {
219
+ required,
220
+ validator,
221
+ validateType,
222
+ validateValueGetter,
223
+ validatePattern,
224
+ validateMax,
225
+ validateMin,
226
+ validateLen,
227
+ validateEnum,
228
+ validateTransform,
229
+ validateMessage,
230
+ } = props;
231
+ if (
232
+ [
233
+ required,
234
+ validator,
235
+ validateType,
236
+ validateValueGetter,
237
+ validatePattern,
238
+ validateMax,
239
+ validateMin,
240
+ validateLen,
241
+ validateEnum,
242
+ validateTransform,
243
+ validateMessage
244
+ ].some((i) => i != null && i !== false)
245
+ ) {
246
+ return {
247
+ label: props.label,
248
+ field: props.field,
249
+ trigger: props.validateTrigger,
250
+ required,
251
+ validator,
252
+ type: validateType,
253
+ valueGetter: validateValueGetter,
254
+ pattern: validatePattern,
255
+ max: validateMax,
256
+ min: validateMin,
257
+ len: validateLen,
258
+ enum: validateEnum,
259
+ transform: validateTransform,
260
+ message: validateMessage
261
+ };
262
+ } else {
263
+ return null;
264
+ }
265
+ });
266
+
267
+ /**
268
+ * 从props.rules中取出来的校验规则
269
+ * @author 韦胜健
270
+ * @date 2022.11.5 22:35
271
+ */
272
+ const propsRules = computed((): iValidateRule[] | null => {
273
+ return !props.rules ? null : toArray(props.rules).map(rule => {
274
+ const field = rule.field || props.field;
275
+ return {
276
+ field,
277
+ label: props.label,
278
+ /*有field就用field取值,否则试试props.validateValueGetter*/
279
+ valueGetter: !field ? props.validateValueGetter : undefined,
280
+ ...rule
281
+ };
282
+ });
283
+ });
284
+
285
+ /**
286
+ * 从form组件props.rules并且根据当前formItem.props.field取出来的校验规则
287
+ * @author 韦胜健
288
+ * @date 2022.11.5 22:35
289
+ */
290
+ const formRules = computed((): iValidateRule[] | null => {
291
+ if (!props.field) {return null;}
292
+ const formPropsRules = getFormPropsRules();
293
+ if (!formPropsRules) {return null;}
294
+ const rule = formPropsRules[props.field];
295
+ return !rule ? null : toArray(rule).map(rule => ({
296
+ field: props.field,
297
+ label: props.label,
298
+ valueGetter: props.validateValueGetter,
299
+ ...rule,
300
+ }));
301
+ });
302
+
303
+ return { outerRule, propsRules, formRules };
304
+ }
305
+
306
+ /**
307
+ * 判断是否匹配触发规则
308
+ * @author 韦胜健
309
+ * @date 2022.11.5 22:50
310
+ */
311
+ export function isMatchTrigger(trigger: typeof eFormValidateTrigger.TYPE, rule: iValidateRule) {
312
+ /*校验的触发动作是change的话,只要不是blur的校验规则都拿出来校验*/
313
+ return (trigger === eFormValidateTrigger.change && rule.trigger !== eFormValidateTrigger.blur) ||
314
+ /*校验的触发动作是blur的话,只有blur的校验规则才拿出来校验*/
315
+ (trigger === eFormValidateTrigger.blur && rule.trigger === eFormValidateTrigger.blur);
316
+ }
317
+
318
+ /**
319
+ * 根据路径深度获取对象值
320
+ * @author 韦胜健
321
+ * @date 2022/8/22 22:04
322
+ */
323
+ export function getValueByPath(formData: PlainObject | undefined, path: string) {
324
+ if (path.indexOf('.') === -1) {
325
+ return formData?.[path];
326
+ }
327
+ const keys = path.split('.');
328
+ const len = keys.length;
329
+ let obj = formData;
330
+ for (let i = 0; i < keys.length; i++) {
331
+ const key = keys[i];
332
+ if (i === len - 1 && !!obj) {
333
+ return obj[key];
334
+ }
335
+ if (!obj) {
336
+ return undefined;
337
+ }
338
+ obj = obj[key];
339
+ }
340
+ return undefined;
341
+ }
342
+
343
+ /**
344
+ * 计算校验规则对应的值
345
+ * @author 韦胜健
346
+ * @date 2022.11.5 22:57
347
+ */
348
+ export function getRuleValue(
349
+ {
350
+ formData,
351
+ field,
352
+ validateValueGetter,
353
+ formItemProps
354
+ }: {
355
+ formData: any;
356
+ field: string | undefined | null;
357
+ validateValueGetter: undefined | ((formData: any) => any);
358
+ formItemProps: { label?: string | null; field?: string };
359
+ }) {
360
+ if (!!validateValueGetter) {
361
+ return validateValueGetter(formData);
362
+ }
363
+ if (!field || !formData) {
364
+ console.log('属性不正确:', formItemProps);
365
+ console.error(
366
+ `FormItem没有设置validateValueGetter的情况下,FormItem.props.field以及Form.props.modelValue都不能为空!`
367
+ );
368
+ return null;
369
+ }
370
+ return getValueByPath(formData, field);
371
+ }
372
+
373
+ /**
374
+ * 执行校验规则
375
+ * @author 韦胜健
376
+ * @date 2022/8/22 22:44
377
+ */
378
+ export async function checkRules(
379
+ {
380
+ rules,
381
+ formData,
382
+ types,
383
+ getLabelByField,
384
+ }: {
385
+ rules: iValidateRule[],
386
+ formData: PlainObject | null | undefined,
387
+ types: Record<string, iRegistrationValidator | undefined>,
388
+ getLabelByField: (field: string) => string | null | undefined,
389
+ }): Promise<iValidateResult[] | null> {
390
+ const ret = (
391
+ await Promise.all(
392
+ rules.map(async (rule) => {
393
+ const { label, field } = rule;
394
+ let value = rule.valueGetter
395
+ ? rule.valueGetter({ formData, rule })
396
+ : getRuleValue({
397
+ field,
398
+ formData,
399
+ validateValueGetter: undefined,
400
+ formItemProps: { label, field }
401
+ });
402
+ if (!!rule.transform) {
403
+ value = rule.transform(value, formData);
404
+ }
405
+ const validateType = rule.type || 'any';
406
+ const registryValidateType = types[validateType];
407
+ if (!registryValidateType) {
408
+ return Promise.reject(`无法识别校验类型rule.type=${validateType}`);
409
+ }
410
+ const required: boolean =
411
+ typeof rule.required === 'function' ? rule.required(formData) : !!rule.required;
412
+ const getMessage = (msg: string) => {
413
+ if (!!rule.message) {
414
+ return typeof rule.message === 'function'
415
+ ? rule.message(value, formData)
416
+ : rule.message;
417
+ }
418
+ return msg;
419
+ };
420
+ const validatorParam = { value, formData, rule, required, getMessage };
421
+ let message = await registryValidateType(validatorParam);
422
+ if (!message && !!rule.validator) {
423
+ message = await rule.validator(validatorParam);
424
+ }
425
+ /*没有返回错误信息,视为校验通过*/
426
+ return !message
427
+ ? null
428
+ : {
429
+ rule,
430
+ label: rule.label || (!rule.field ? null : getLabelByField(rule.field)),
431
+ field: rule.field,
432
+ message: message,
433
+ value
434
+ };
435
+ })
436
+ )
437
+ ).filter(Boolean) as iValidateResult[];
438
+ return ret.length == 0 ? null : ret;
439
+ }