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

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 (714) 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 -0
  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/$configuration/index.tsx +60 -60
  13. package/src/packages/components/$dialog/index.tsx +7 -7
  14. package/src/packages/components/$file/index.tsx +255 -255
  15. package/src/packages/components/$image/index.tsx +7 -7
  16. package/src/packages/components/$loading/index.tsx +3 -3
  17. package/src/packages/components/$message/image.service.utils.tsx +161 -161
  18. package/src/packages/components/$message/index.tsx +7 -7
  19. package/src/packages/components/$notice/index.tsx +7 -7
  20. package/src/packages/components/$object/createObjectService.tsx +217 -217
  21. package/src/packages/components/$object/index.ts +5 -5
  22. package/src/packages/components/$object/object.conver.ts +56 -56
  23. package/src/packages/components/$object/object.service.utils.ts +56 -56
  24. package/src/packages/components/$ov/createOvService.ts +86 -86
  25. package/src/packages/components/$ov/index.tsx +5 -5
  26. package/src/packages/components/$ov/ov.utils.ts +11 -11
  27. package/src/packages/components/$previewer/ImagePreviewerFixedContainer.tsx +108 -108
  28. package/src/packages/components/$previewer/image-previewer-fixed-container.scss +18 -18
  29. package/src/packages/components/$previewer/index.tsx +52 -52
  30. package/src/packages/components/$search/SearchFooter.tsx +32 -32
  31. package/src/packages/components/$search/SearchList.tsx +207 -207
  32. package/src/packages/components/$search/SearchServicePanel.tsx +233 -233
  33. package/src/packages/components/$search/createSearchService.tsx +43 -43
  34. package/src/packages/components/$search/index.tsx +6 -6
  35. package/src/packages/components/$search/search-service.scss +221 -221
  36. package/src/packages/components/$search/search.utils.tsx +112 -112
  37. package/src/packages/components/$upload/createUploadService.tsx +57 -57
  38. package/src/packages/components/$upload/upload.utils.ts +18 -18
  39. package/src/packages/components/Address/index.tsx +138 -138
  40. package/src/packages/components/AddressCascade/address-cascade.utils.ts +44 -44
  41. package/src/packages/components/AddressCascade/createAddressCascade.hooks.ts +9 -9
  42. package/src/packages/components/AddressCascade/createAddressCascade.multiple.tsx +53 -53
  43. package/src/packages/components/AddressCascade/createAddressCascade.single.tsx +75 -75
  44. package/src/packages/components/AddressCascade/index.tsx +59 -59
  45. package/src/packages/components/AiChatBox/ai-chat-box.scss +74 -74
  46. package/src/packages/components/AiChatBox/index.tsx +154 -154
  47. package/src/packages/components/Alert/alert.scss +139 -139
  48. package/src/packages/components/Alert/index.tsx +93 -93
  49. package/src/packages/components/Application/application.scss +16 -16
  50. package/src/packages/components/Application/index.tsx +56 -56
  51. package/src/packages/components/Application/service/createApplicationService.tsx +47 -47
  52. package/src/packages/components/Application/service/createApplicationServiceComponent.tsx +41 -41
  53. package/src/packages/components/Application/service/createApplicationServiceManager.tsx +101 -101
  54. package/src/packages/components/Application/service/useApplicationService.tsx +126 -126
  55. package/src/packages/components/Application/theme/theme.ts +282 -282
  56. package/src/packages/components/Application/theme/theme.utils.ts +17 -17
  57. package/src/packages/components/Application/utils/application.utils.ts +21 -21
  58. package/src/packages/components/Application/utils/createServiceReadyObserver.ts +18 -18
  59. package/src/packages/components/ApplicationConfigurationProvider/index.tsx +5 -5
  60. package/src/packages/components/ArrowStep/index.tsx +73 -73
  61. package/src/packages/components/ArrowStepGroup/arrow-step.scss +119 -119
  62. package/src/packages/components/ArrowStepGroup/index.tsx +63 -63
  63. package/src/packages/components/AsyncFormatter/index.tsx +1 -1
  64. package/src/packages/components/AutoLoadingObserver/index.tsx +173 -173
  65. package/src/packages/components/AutoTable/AutoTable.tsx +56 -56
  66. package/src/packages/components/AutoTable/auto-table.scss +463 -463
  67. package/src/packages/components/AutoTable/createTableOptionUser.tsx +77 -77
  68. package/src/packages/components/AutoTable/filter/useTableOption.filter.form.tsx +217 -217
  69. package/src/packages/components/AutoTable/filter/useTableOption.filter.search.tsx +168 -168
  70. package/src/packages/components/AutoTable/filter/useTableOption.filter.state.ts +196 -196
  71. package/src/packages/components/AutoTable/index.tsx +4 -4
  72. package/src/packages/components/AutoTable/setting/useTableOption.setting.all.fitler.tsx +79 -79
  73. package/src/packages/components/AutoTable/setting/useTableOption.setting.cache.tsx +145 -145
  74. package/src/packages/components/AutoTable/setting/useTableOption.setting.config.tsx +260 -260
  75. package/src/packages/components/AutoTable/setting/useTableOption.setting.export.tsx +283 -283
  76. package/src/packages/components/AutoTable/setting/useTableOption.setting.import.tsx +100 -100
  77. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.filter.tsx +385 -385
  78. package/src/packages/components/AutoTable/setting/useTableOption.setting.senior.sort.tsx +123 -123
  79. package/src/packages/components/AutoTable/setting/useTableOption.setting.tsx +109 -109
  80. package/src/packages/components/AutoTable/setting/useTableOption.setting.utils.ts +40 -40
  81. package/src/packages/components/AutoTable/use/useTableOption.buttons.tsx +249 -249
  82. package/src/packages/components/AutoTable/use/useTableOption.cache.ts +235 -235
  83. package/src/packages/components/AutoTable/use/useTableOption.cache.utils.ts +83 -83
  84. package/src/packages/components/AutoTable/use/useTableOption.check.tsx +80 -80
  85. package/src/packages/components/AutoTable/use/useTableOption.column.popper.tsx +491 -491
  86. package/src/packages/components/AutoTable/use/useTableOption.confirm.tsx +122 -122
  87. package/src/packages/components/AutoTable/use/useTableOption.fill.tsx +153 -153
  88. package/src/packages/components/AutoTable/use/useTableOption.hooks.tsx +142 -142
  89. package/src/packages/components/AutoTable/use/useTableOption.loading.tsx +77 -77
  90. package/src/packages/components/AutoTable/use/useTableOption.methods.tsx +515 -515
  91. package/src/packages/components/AutoTable/use/useTableOption.pagination.tsx +191 -191
  92. package/src/packages/components/AutoTable/use/useTableOption.parent.tsx +134 -134
  93. package/src/packages/components/AutoTable/use/useTableOption.permission.tsx +16 -16
  94. package/src/packages/components/AutoTable/use/useTableOption.render.tsx +34 -34
  95. package/src/packages/components/AutoTable/use/useTableOption.sort.ts +198 -198
  96. package/src/packages/components/AutoTable/use/useTableOption.state.tsx +31 -31
  97. package/src/packages/components/AutoTable/use/useTableOption.table.tsx +87 -87
  98. package/src/packages/components/AutoTable/use/useTableOption.tips.tsx +87 -87
  99. package/src/packages/components/AutoTable/use/useTableOptionKeyboard.tsx +111 -111
  100. package/src/packages/components/AutoTable/utils/AutoModule.ts +10 -10
  101. package/src/packages/components/AutoTable/utils/AutoTable.utils.ts +120 -120
  102. package/src/packages/components/AutoTable/utils/TableOption.space.tsx +203 -203
  103. package/src/packages/components/AutoTable/utils/TableOption.url.ts +153 -153
  104. package/src/packages/components/AutoTable/utils/TableOption.utils.tsx +57 -57
  105. package/src/packages/components/AutoTable/utils/buildPlainDefaultUrlConfig.ts +134 -134
  106. package/src/packages/components/AutoWidthInput/auto-width-input.scss +25 -25
  107. package/src/packages/components/AutoWidthInput/index.tsx +67 -67
  108. package/src/packages/components/Badge/badge.scss +71 -71
  109. package/src/packages/components/Badge/index.tsx +52 -52
  110. package/src/packages/components/Box/box.scss +6 -6
  111. package/src/packages/components/Box/index.tsx +2 -1
  112. package/src/packages/components/Button/button.scss +203 -203
  113. package/src/packages/components/Button/index.tsx +213 -213
  114. package/src/packages/components/ButtonGroup/button-group.scss +73 -73
  115. package/src/packages/components/ButtonGroup/index.tsx +43 -43
  116. package/src/packages/components/Card/card.scss +122 -122
  117. package/src/packages/components/Card/index.tsx +74 -74
  118. package/src/packages/components/Carousel/carousel.scss +391 -391
  119. package/src/packages/components/Carousel/index.tsx +591 -591
  120. package/src/packages/components/CarouselItem/index.tsx +77 -77
  121. package/src/packages/components/Cascade/CascadeKeys.tsx +158 -158
  122. package/src/packages/components/Cascade/cascade.scss +111 -111
  123. package/src/packages/components/Cascade/cascade.utils.ts +68 -68
  124. package/src/packages/components/Cascade/createCascadeHooks.ts +12 -12
  125. package/src/packages/components/Cascade/createCascadePopper.tsx +120 -120
  126. package/src/packages/components/Cascade/createCascadeUtils.ts +15 -15
  127. package/src/packages/components/Cascade/createMultipleCascadeRender.tsx +156 -156
  128. package/src/packages/components/Cascade/createSingleCascadeRender.tsx +175 -175
  129. package/src/packages/components/Cascade/index.tsx +106 -106
  130. package/src/packages/components/CascadeKeys/index.tsx +5 -5
  131. package/src/packages/components/CascadePanel/cascade-panel.utils.ts +90 -90
  132. package/src/packages/components/CascadePanel/flat/CascadeFlatPanelNode.tsx +56 -56
  133. package/src/packages/components/CascadePanel/flat/cascade-flat-panel.scss +133 -133
  134. package/src/packages/components/CascadePanel/flat/createCascadeFlatRender.tsx +87 -87
  135. package/src/packages/components/CascadePanel/index.tsx +208 -208
  136. package/src/packages/components/CascadePanel/list/CascadeListPanelItem.tsx +93 -93
  137. package/src/packages/components/CascadePanel/list/CascadeListPanelNode.tsx +69 -69
  138. package/src/packages/components/CascadePanel/list/createCascadeListRender.tsx +31 -31
  139. package/src/packages/components/Checkbox/checkbox.scss +77 -77
  140. package/src/packages/components/Checkbox/index.tsx +141 -141
  141. package/src/packages/components/CheckboxGroup/index.tsx +205 -205
  142. package/src/packages/components/CheckboxInner/checkbox-inner.scss +55 -55
  143. package/src/packages/components/CheckboxInner/index.tsx +34 -34
  144. package/src/packages/components/ClientZoom/index.ts +5 -5
  145. package/src/packages/components/Collapse/collapse.scss +44 -44
  146. package/src/packages/components/Collapse/index.tsx +94 -94
  147. package/src/packages/components/CollapseGroup/index.tsx +70 -70
  148. package/src/packages/components/CollapseTransition/index.tsx +184 -184
  149. package/src/packages/components/ColorPicker/color-picker.scss +64 -64
  150. package/src/packages/components/ColorPicker/sub/ColorAlphaSlider.tsx +43 -43
  151. package/src/packages/components/ColorPicker/sub/ColorHueSlider.tsx +17 -17
  152. package/src/packages/components/ColorPicker/sub/ColorSlider.tsx +163 -163
  153. package/src/packages/components/ColorPicker/sub/ColorSvPanel.tsx +125 -125
  154. package/src/packages/components/ColorPicker/sub/color-alpha-slider.scss +8 -8
  155. package/src/packages/components/ColorPicker/sub/color-hue-slider.scss +3 -3
  156. package/src/packages/components/ColorPicker/sub/color-slider.scss +22 -22
  157. package/src/packages/components/ColorPicker/sub/color-sv-panel.scss +55 -55
  158. package/src/packages/components/ColorPicker/useColorPanelEditor.tsx +119 -119
  159. package/src/packages/components/ColorPicker/useColorPanelHistory.tsx +51 -51
  160. package/src/packages/components/ColorPicker/utils/PlainColor.ts +70 -70
  161. package/src/packages/components/ColorPicker/utils/color-picker.utils.tsx +27 -27
  162. package/src/packages/components/ConfirmPopup/confirm-popup.scss +16 -16
  163. package/src/packages/components/ConfirmPopup/index.tsx +72 -72
  164. package/src/packages/components/Corner/corner.scss +14 -14
  165. package/src/packages/components/Corner/index.tsx +80 -80
  166. package/src/packages/components/DatePicker/createDateRender.multiple.tsx +189 -189
  167. package/src/packages/components/DatePicker/createDateRender.single.tsx +169 -169
  168. package/src/packages/components/DatePicker/createRangeDateRender.range.tsx +114 -114
  169. package/src/packages/components/DatePicker/createRangeDateRender.separate.tsx +120 -120
  170. package/src/packages/components/DatePicker/date.mixin.scss +73 -73
  171. package/src/packages/components/DatePicker/date.scss +542 -542
  172. package/src/packages/components/DatePicker/date.utils.tsx +398 -398
  173. package/src/packages/components/DatePicker/index.tsx +84 -84
  174. package/src/packages/components/DatePicker/panel/DatePanel.tsx +99 -99
  175. package/src/packages/components/DatePicker/panel/DatePanelDate.tsx +278 -278
  176. package/src/packages/components/DatePicker/panel/DatePanelMonth.tsx +190 -190
  177. package/src/packages/components/DatePicker/panel/DatePanelQuarter.tsx +50 -50
  178. package/src/packages/components/DatePicker/panel/DatePanelRange.tsx +146 -146
  179. package/src/packages/components/DatePicker/panel/DatePanelWeek.tsx +52 -52
  180. package/src/packages/components/DatePicker/panel/DatePanelYear.tsx +100 -100
  181. package/src/packages/components/DatePicker/panel/useDatePanel.tsx +618 -618
  182. package/src/packages/components/DatePicker/panel/useDateWeek.tsx +153 -153
  183. package/src/packages/components/DatePicker/useRangeDateRender.tsx +318 -318
  184. package/src/packages/components/Dialog/dialog.scss +261 -261
  185. package/src/packages/components/Dialog/index.tsx +439 -439
  186. package/src/packages/components/Dialog/useDialogMovable.tsx +72 -72
  187. package/src/packages/components/Dialog/utils/dialog.mouse.ts +16 -16
  188. package/src/packages/components/Dialog/utils/dialog.utils.ts +10 -10
  189. package/src/packages/components/Dropdown/dropdown.public.scss +94 -94
  190. package/src/packages/components/Dropdown/dropdown.scss +13 -13
  191. package/src/packages/components/Dropdown/dropdown.utils.tsx +108 -108
  192. package/src/packages/components/Dropdown/index.tsx +174 -174
  193. package/src/packages/components/DropdownGroup/index.tsx +18 -18
  194. package/src/packages/components/DropdownOption/index.tsx +74 -74
  195. package/src/packages/components/DropdownSeparator/index.tsx +8 -8
  196. package/src/packages/components/Empty/empty.scss +14 -14
  197. package/src/packages/components/Empty/index.tsx +48 -48
  198. package/src/packages/components/FilterFormMultiple/filter-form-multiple.scss +36 -36
  199. package/src/packages/components/FilterFormMultiple/index.tsx +288 -288
  200. package/src/packages/components/FilterFormSingle/index.tsx +178 -178
  201. package/src/packages/components/FilterService/filter/filter.city.tsx +85 -85
  202. package/src/packages/components/FilterService/filter/filter.date.tsx +85 -85
  203. package/src/packages/components/FilterService/filter/filter.datetime.tsx +68 -68
  204. package/src/packages/components/FilterService/filter/filter.district.tsx +86 -86
  205. package/src/packages/components/FilterService/filter/filter.number.tsx +66 -66
  206. package/src/packages/components/FilterService/filter/filter.province.tsx +91 -91
  207. package/src/packages/components/FilterService/filter/filter.select.tsx +67 -67
  208. package/src/packages/components/FilterService/filter/filter.text.tsx +57 -57
  209. package/src/packages/components/FilterService/filter/fitler.object.tsx +115 -115
  210. package/src/packages/components/FilterService/index.tsx +250 -250
  211. package/src/packages/components/FilterService/utils/filter.service.utils.ts +138 -138
  212. package/src/packages/components/FilterService/utils/mergeQueryParam.ts +80 -80
  213. package/src/packages/components/Form/form.scss +256 -256
  214. package/src/packages/components/Form/index.tsx +74 -74
  215. package/src/packages/components/Form/layout/useFormLayout.tsx +332 -332
  216. package/src/packages/components/Form/types/any.tsx +54 -54
  217. package/src/packages/components/Form/types/array.tsx +55 -55
  218. package/src/packages/components/Form/types/arrayjson.tsx +15 -15
  219. package/src/packages/components/Form/types/arraystring.tsx +15 -15
  220. package/src/packages/components/Form/types/date.tsx +72 -72
  221. package/src/packages/components/Form/types/datetime.tsx +8 -8
  222. package/src/packages/components/Form/types/email.tsx +11 -11
  223. package/src/packages/components/Form/types/idcard.tsx +13 -13
  224. package/src/packages/components/Form/types/number.tsx +59 -59
  225. package/src/packages/components/Form/types/phone.tsx +11 -11
  226. package/src/packages/components/Form/types/qq.tsx +11 -11
  227. package/src/packages/components/Form/types/string.tsx +68 -68
  228. package/src/packages/components/Form/types/time.tsx +8 -8
  229. package/src/packages/components/Form/validate/createValidation.tsx +278 -278
  230. package/src/packages/components/Form/validate/useFormItemValidation.tsx +122 -122
  231. package/src/packages/components/Form/validate/useFormValidation.tsx +137 -137
  232. package/src/packages/components/Form/validate/validate.utils.tsx +439 -439
  233. package/src/packages/components/FormCascade/index.tsx +6 -6
  234. package/src/packages/components/FormCheckbox/index.tsx +6 -6
  235. package/src/packages/components/FormCheckboxGroup/index.tsx +6 -6
  236. package/src/packages/components/FormColorPicker/index.tsx +6 -6
  237. package/src/packages/components/FormDatePicker/index.tsx +6 -6
  238. package/src/packages/components/FormInput/index.tsx +6 -6
  239. package/src/packages/components/FormInputNumber/index.tsx +6 -6
  240. package/src/packages/components/FormItem/FormItemValidateMessage.tsx +16 -16
  241. package/src/packages/components/FormItem/createFormEditor.tsx +87 -87
  242. package/src/packages/components/FormItem/index.tsx +134 -134
  243. package/src/packages/components/FormRadio/index.tsx +6 -6
  244. package/src/packages/components/FormRadioGroup/index.tsx +6 -6
  245. package/src/packages/components/FormRate/index.tsx +6 -6
  246. package/src/packages/components/FormSelect/index.tsx +6 -6
  247. package/src/packages/components/FormSlider/index.tsx +6 -6
  248. package/src/packages/components/FormTimePicker/index.tsx +6 -6
  249. package/src/packages/components/FormToggle/index.tsx +6 -6
  250. package/src/packages/components/Formatter/index.tsx +64 -64
  251. package/src/packages/components/Grid/GridCol.tsx +73 -73
  252. package/src/packages/components/Grid/GridRow.tsx +91 -91
  253. package/src/packages/components/Grid/grid.scss +109 -109
  254. package/src/packages/components/Grid/grid.utils.ts +21 -21
  255. package/src/packages/components/GridCol/index.tsx +5 -5
  256. package/src/packages/components/GridRow/index.tsx +5 -5
  257. package/src/packages/components/Icon/icon.registry.tsx +21 -21
  258. package/src/packages/components/Icon/icon.scss +12 -12
  259. package/src/packages/components/IconPicker/DefaultIcons.ts +7 -0
  260. package/src/packages/components/IconPicker/icon-picker.scss +43 -0
  261. package/src/packages/components/IconPicker/index.tsx +189 -0
  262. package/src/packages/components/Illustration/index.tsx +28 -28
  263. package/src/packages/components/Image/image.scss +334 -334
  264. package/src/packages/components/Image/index.tsx +168 -168
  265. package/src/packages/components/ImagePreviewer/ImagePreviewer.tsx +574 -574
  266. package/src/packages/components/ImagePreviewer/ImagePreviewerButtonBar.tsx +140 -140
  267. package/src/packages/components/ImagePreviewer/ImagePreviewerCarouselImage.tsx +54 -54
  268. package/src/packages/components/ImagePreviewer/ImagePreviewerGallery.tsx +202 -202
  269. package/src/packages/components/ImagePreviewer/PreviewerLoading.tsx +26 -26
  270. package/src/packages/components/ImagePreviewer/image-previewer.scss +244 -244
  271. package/src/packages/components/ImagePreviewer/image-previewer.utils.tsx +136 -136
  272. package/src/packages/components/ImagePreviewer/index.tsx +5 -5
  273. package/src/packages/components/ImagePreviewer/previewer-loading.scss +52 -52
  274. package/src/packages/components/ImageUploader/index.tsx +242 -242
  275. package/src/packages/components/Input/index.scss +446 -446
  276. package/src/packages/components/Input/index.tsx +153 -153
  277. package/src/packages/components/Input/input.utils.ts +119 -119
  278. package/src/packages/components/Input/useMultipleInput.tsx +126 -126
  279. package/src/packages/components/Input/useSingleInput.tsx +45 -45
  280. package/src/packages/components/Input/useSuggestionInput.tsx +218 -218
  281. package/src/packages/components/Input/useTextareaInput.tsx +155 -155
  282. package/src/packages/components/Input/uses/useInputEnterHandler.tsx +83 -83
  283. package/src/packages/components/Input/uses/useInputHooks.tsx +21 -21
  284. package/src/packages/components/Input/uses/useInputMaxLength.tsx +35 -35
  285. package/src/packages/components/Input/uses/useInputSuffixIcon.tsx +67 -67
  286. package/src/packages/components/InputGroup/index.tsx +31 -31
  287. package/src/packages/components/InputGroup/input-group.scss +46 -46
  288. package/src/packages/components/InputNumber/NumberResize.tsx +111 -111
  289. package/src/packages/components/InputNumber/index.tsx +36 -36
  290. package/src/packages/components/InputNumber/input-number.utils.tsx +96 -96
  291. package/src/packages/components/InputNumber/number.scss +95 -95
  292. package/src/packages/components/InputNumber/number.utils.ts +3 -3
  293. package/src/packages/components/InputNumber/useInputNumber.multiple.tsx +121 -121
  294. package/src/packages/components/InputNumber/useInputNumber.public.tsx +478 -478
  295. package/src/packages/components/InputNumber/useInputNumber.single.tsx +137 -137
  296. package/src/packages/components/KeepAlive/KeepAliveCacheItemWrapper.tsx +114 -114
  297. package/src/packages/components/KeepAlive/index.tsx +77 -77
  298. package/src/packages/components/KeepAlive/utils/keepalive.utils.ts +33 -33
  299. package/src/packages/components/Layout/index.tsx +38 -38
  300. package/src/packages/components/Layout/layout.scss +247 -247
  301. package/src/packages/components/Layout/layout.utils.ts +3 -3
  302. package/src/packages/components/LayoutSection/index.tsx +76 -76
  303. package/src/packages/components/LayoutSection/useLayoutSectionResizer.tsx +184 -184
  304. package/src/packages/components/List/index.tsx +74 -74
  305. package/src/packages/components/List/list.scss +3 -3
  306. package/src/packages/components/ListOption/index.tsx +20 -20
  307. package/src/packages/components/ListPanel/index.tsx +30 -30
  308. package/src/packages/components/ListPanel/list-panel.scss +20 -20
  309. package/src/packages/components/Loading/index.tsx +27 -27
  310. package/src/packages/components/Loading/loading.scss +7 -7
  311. package/src/packages/components/LoadingMask/index.tsx +101 -101
  312. package/src/packages/components/LoadingMask/loading-mask.scss +34 -34
  313. package/src/packages/components/NumberRange/index.tsx +93 -93
  314. package/src/packages/components/Object/createObjectHooks.tsx +13 -13
  315. package/src/packages/components/Object/createObjectRender.multiple.tsx +289 -289
  316. package/src/packages/components/Object/createObjectRender.single.tsx +219 -219
  317. package/src/packages/components/Object/index.tsx +104 -104
  318. package/src/packages/components/Object/object.scss +24 -24
  319. package/src/packages/components/Object/object.utils.ts +56 -56
  320. package/src/packages/components/OuterOperation/index.tsx +5 -5
  321. package/src/packages/components/Ov/index.tsx +23 -23
  322. package/src/packages/components/Ov/ov.utils.ts +9 -9
  323. package/src/packages/components/Ov/usePublicOv.tsx +35 -35
  324. package/src/packages/components/PageCard/index.tsx +48 -48
  325. package/src/packages/components/PageCard/page-card.scss +124 -124
  326. package/src/packages/components/PageCardContent/index.tsx +44 -44
  327. package/src/packages/components/PageCardTitle/index.tsx +51 -51
  328. package/src/packages/components/PageRenderList/index.tsx +22 -22
  329. package/src/packages/components/PageThemeUtils/deepmerge.ts +21 -21
  330. package/src/packages/components/PageThemeUtils/index.tsx +262 -262
  331. package/src/packages/components/Pagination/index.tsx +339 -339
  332. package/src/packages/components/Pagination/pagination.scss +126 -126
  333. package/src/packages/components/Paragraph/index.tsx +46 -46
  334. package/src/packages/components/Paragraph/paragraph.scss +12 -12
  335. package/src/packages/components/ParagraphItem/index.tsx +21 -21
  336. package/src/packages/components/Plc/index.tsx +4 -4
  337. package/src/packages/components/PlcAddress/index.tsx +4 -4
  338. package/src/packages/components/PlcAddressItem/index.tsx +4 -4
  339. package/src/packages/components/PlcCheck/index.tsx +5 -5
  340. package/src/packages/components/PlcCheckbox/index.tsx +4 -4
  341. package/src/packages/components/PlcColorPicker/index.tsx +4 -4
  342. package/src/packages/components/PlcDate/index.tsx +4 -4
  343. package/src/packages/components/PlcDateRange/index.tsx +4 -4
  344. package/src/packages/components/PlcDraggier/index.tsx +5 -5
  345. package/src/packages/components/PlcExpand/index.tsx +5 -5
  346. package/src/packages/components/PlcGroup/index.tsx +4 -4
  347. package/src/packages/components/PlcImage/index.tsx +86 -86
  348. package/src/packages/components/PlcIndex/index.tsx +5 -5
  349. package/src/packages/components/PlcInput/index.tsx +4 -4
  350. package/src/packages/components/PlcNumber/index.tsx +4 -4
  351. package/src/packages/components/PlcObject/index.tsx +53 -53
  352. package/src/packages/components/PlcOperation/index.tsx +5 -5
  353. package/src/packages/components/PlcOv/index.tsx +31 -31
  354. package/src/packages/components/PlcRate/index.tsx +4 -4
  355. package/src/packages/components/PlcSelect/index.tsx +4 -4
  356. package/src/packages/components/PlcTextarea/index.tsx +4 -4
  357. package/src/packages/components/PlcTime/index.tsx +4 -4
  358. package/src/packages/components/PlcTimeRange/index.tsx +4 -4
  359. package/src/packages/components/PlcToggle/index.tsx +4 -4
  360. package/src/packages/components/PlcTree/index.tsx +5 -5
  361. package/src/packages/components/Popup/PopupProvider.tsx +20 -20
  362. package/src/packages/components/Popup/index.tsx +403 -403
  363. package/src/packages/components/Popup/popup.scss +13 -13
  364. package/src/packages/components/ProgressBar/index.tsx +87 -87
  365. package/src/packages/components/ProgressBar/progress-bar.scss +40 -40
  366. package/src/packages/components/ProgressBar/progress.utils.ts +24 -24
  367. package/src/packages/components/ProgressCircle/index.tsx +188 -188
  368. package/src/packages/components/ProgressCircle/progress-circle.scss +44 -44
  369. package/src/packages/components/ProgressMini/index.tsx +98 -98
  370. package/src/packages/components/ProgressMini/progress-mini.scss +17 -17
  371. package/src/packages/components/Radio/index.tsx +137 -137
  372. package/src/packages/components/Radio/radio.scss +79 -79
  373. package/src/packages/components/RadioGroup/index.tsx +62 -62
  374. package/src/packages/components/RadioInner/index.tsx +31 -31
  375. package/src/packages/components/RadioInner/radio-inner.scss +17 -17
  376. package/src/packages/components/Rate/index.tsx +152 -152
  377. package/src/packages/components/Rate/rate.scss +32 -32
  378. package/src/packages/components/Reference/ReferenceProvider.tsx +13 -13
  379. package/src/packages/components/Reference/index.tsx +57 -57
  380. package/src/packages/components/RollingNumber/index.tsx +66 -66
  381. package/src/packages/components/Scroll/HorizontalScrollbar.tsx +96 -96
  382. package/src/packages/components/Scroll/VerticalScrollbar.tsx +102 -102
  383. package/src/packages/components/Scroll/index.tsx +419 -419
  384. package/src/packages/components/Scroll/scroll.scss +168 -168
  385. package/src/packages/components/Scroll/useAutoScroll.ts +68 -68
  386. package/src/packages/components/Segment/index.tsx +39 -39
  387. package/src/packages/components/Segment/segment.scss +46 -46
  388. package/src/packages/components/SegmentGroup/index.tsx +48 -48
  389. package/src/packages/components/Select/SelectPanel.tsx +78 -78
  390. package/src/packages/components/Select/createMultipleSelectRender.tsx +248 -248
  391. package/src/packages/components/Select/createPublicSelectRender.tsx +411 -411
  392. package/src/packages/components/Select/createSelectOptionDecoder.tsx +43 -43
  393. package/src/packages/components/Select/createSingleSelectRender.tsx +133 -133
  394. package/src/packages/components/Select/decodeSelectRenderNode.tsx +52 -52
  395. package/src/packages/components/Select/index.tsx +97 -97
  396. package/src/packages/components/Select/select.scss +101 -101
  397. package/src/packages/components/Select/select.utils.tsx +248 -248
  398. package/src/packages/components/SelectDisplay/index.tsx +30 -30
  399. package/src/packages/components/SelectGroup/index.tsx +37 -37
  400. package/src/packages/components/SelectOption/index.tsx +72 -72
  401. package/src/packages/components/Slider/index.tsx +123 -123
  402. package/src/packages/components/Slider/slider.scss +128 -128
  403. package/src/packages/components/Slider/slider.utils.tsx +71 -71
  404. package/src/packages/components/Slider/useSlider.range.tsx +211 -211
  405. package/src/packages/components/Slider/useSlider.single.tsx +148 -148
  406. package/src/packages/components/Slider/useSliderDotDragier.tsx +66 -66
  407. package/src/packages/components/SortList/index.tsx +191 -191
  408. package/src/packages/components/SortList/sort-list.scss +11 -11
  409. package/src/packages/components/Space/index.tsx +36 -36
  410. package/src/packages/components/Space/space.scss +39 -39
  411. package/src/packages/components/StackCard/index.tsx +416 -416
  412. package/src/packages/components/StackCard/stack-card.scss +40 -40
  413. package/src/packages/components/StackCardItem/index.tsx +24 -24
  414. package/src/packages/components/Step/index.tsx +120 -120
  415. package/src/packages/components/StepGroup/index.tsx +63 -63
  416. package/src/packages/components/StepGroup/step-group.scss +411 -411
  417. package/src/packages/components/StepGroup/step.utils.ts +44 -44
  418. package/src/packages/components/Tab/index.tsx +42 -42
  419. package/src/packages/components/TabGroup/TabsHeader.tsx +105 -105
  420. package/src/packages/components/TabGroup/TabsInner.tsx +60 -60
  421. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontal.tsx +94 -94
  422. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalCard.tsx +15 -15
  423. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalShadow.tsx +15 -15
  424. package/src/packages/components/TabGroup/header/horizontal/TabsHeaderHorizontalText.tsx +66 -66
  425. package/src/packages/components/TabGroup/header/horizontal/tabs-header-card.scss +85 -85
  426. package/src/packages/components/TabGroup/header/horizontal/tabs-header-horizontal.scss +59 -59
  427. package/src/packages/components/TabGroup/header/horizontal/tabs-header-shadow.scss +88 -88
  428. package/src/packages/components/TabGroup/header/horizontal/tabs-header-text.scss +50 -50
  429. package/src/packages/components/TabGroup/header/vertical/TabsHeaderVertical.tsx +24 -24
  430. package/src/packages/components/TabGroup/header/vertical/tabs-header-vertical.scss +116 -116
  431. package/src/packages/components/TabGroup/index.tsx +131 -131
  432. package/src/packages/components/TabGroup/tabs.scss +62 -62
  433. package/src/packages/components/TabGroup/tabs.utils.tsx +22 -22
  434. package/src/packages/components/Table/editor/PlcAddress.tsx +91 -91
  435. package/src/packages/components/Table/editor/PlcAddressItem.tsx +60 -60
  436. package/src/packages/components/Table/editor/PlcCheckbox.tsx +36 -36
  437. package/src/packages/components/Table/editor/PlcColorPicker.tsx +29 -29
  438. package/src/packages/components/Table/editor/PlcDate.tsx +97 -97
  439. package/src/packages/components/Table/editor/PlcDate.utils.tsx +45 -45
  440. package/src/packages/components/Table/editor/PlcDateRange.tsx +73 -73
  441. package/src/packages/components/Table/editor/PlcInput.tsx +21 -21
  442. package/src/packages/components/Table/editor/PlcNumber.tsx +23 -23
  443. package/src/packages/components/Table/editor/PlcRate.tsx +24 -24
  444. package/src/packages/components/Table/editor/PlcSelect.tsx +181 -181
  445. package/src/packages/components/Table/editor/PlcTextarea.tsx +22 -22
  446. package/src/packages/components/Table/editor/PlcTime.tsx +54 -54
  447. package/src/packages/components/Table/editor/PlcTime.utils.ts +15 -15
  448. package/src/packages/components/Table/editor/PlcTimeRange.tsx +66 -66
  449. package/src/packages/components/Table/editor/PlcToggle.tsx +40 -40
  450. package/src/packages/components/Table/index.tsx +4 -4
  451. package/src/packages/components/Table/plc/formatPlcList.tsx +92 -92
  452. package/src/packages/components/Table/plc/group/PlcGroup.tsx +20 -20
  453. package/src/packages/components/Table/plc/plc/Plc.tsx +19 -19
  454. package/src/packages/components/Table/plc/process/copyPlcList.ts +23 -23
  455. package/src/packages/components/Table/plc/process/getPltCellClass.ts +8 -8
  456. package/src/packages/components/Table/plc/process/processAutoFixed.ts +73 -73
  457. package/src/packages/components/Table/plc/process/processHeadPlcList.ts +110 -110
  458. package/src/packages/components/Table/plc/process/processPlcClassAndStyle.ts +43 -43
  459. package/src/packages/components/Table/plc/process/processPlcFixed.ts +81 -81
  460. package/src/packages/components/Table/plc/process/processPlcSort.ts +91 -91
  461. package/src/packages/components/Table/plc/use/useBasePlc.tsx +85 -85
  462. package/src/packages/components/Table/plc/use/useBasePlcGroup.tsx +70 -70
  463. package/src/packages/components/Table/plc/use/usePlc.tsx +136 -136
  464. package/src/packages/components/Table/plc/use/usePlcPropsState.tsx +112 -112
  465. package/src/packages/components/Table/plc/use/useTableAutoSpan.tsx +112 -112
  466. package/src/packages/components/Table/plc/useTablePlc.tsx +229 -229
  467. package/src/packages/components/Table/plc/utils/iteratePlcList.tsx +48 -48
  468. package/src/packages/components/Table/plc/utils/plc.render.ts +122 -122
  469. package/src/packages/components/Table/plc/utils/plc.scope-slots.ts +63 -63
  470. package/src/packages/components/Table/plc/utils/plc.utils.ts +302 -302
  471. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.hooks.tsx +16 -16
  472. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.multiple.tsx +280 -280
  473. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.single.tsx +89 -89
  474. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.tsx +61 -61
  475. package/src/packages/components/Table/standard/PlcCheck/PlcCheck.utils.ts +35 -35
  476. package/src/packages/components/Table/standard/PlcDraggier/PlcDraggier.tsx +55 -55
  477. package/src/packages/components/Table/standard/PlcExclusion.tsx +26 -26
  478. package/src/packages/components/Table/standard/PlcExpand.tsx +204 -204
  479. package/src/packages/components/Table/standard/PlcIndex.tsx +34 -34
  480. package/src/packages/components/Table/standard/PlcOperation/OuterOperation.tsx +210 -210
  481. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.tsx +391 -391
  482. package/src/packages/components/Table/standard/PlcOperation/PlcOperation.utils.tsx +159 -159
  483. package/src/packages/components/Table/standard/PlcOperation/outer-operation.scss +39 -39
  484. package/src/packages/components/Table/standard/PlcOperation/useOperationPermission.ts +53 -53
  485. package/src/packages/components/Table/standard/PlcTree/PlcTree.autoWidth.tsx +52 -52
  486. package/src/packages/components/Table/standard/PlcTree/PlcTree.renderNode.tsx +81 -81
  487. package/src/packages/components/Table/standard/PlcTree/PlcTree.tsx +194 -194
  488. package/src/packages/components/Table/standard/PlcTree/PlcTree.utils.ts +59 -59
  489. package/src/packages/components/Table/standard/PlcTree/PlcTreeHeader.tsx +64 -64
  490. package/src/packages/components/Table/standard/PlcTree/RenderPlcTreeNode.tsx +114 -114
  491. package/src/packages/components/Table/table/Table.tsx +382 -382
  492. package/src/packages/components/Table/table/body/cell.tsx +310 -310
  493. package/src/packages/components/Table/table/body/row.tsx +47 -47
  494. package/src/packages/components/Table/table/body/useCellValue.tsx +145 -145
  495. package/src/packages/components/Table/table/head/head-cell.tsx +100 -100
  496. package/src/packages/components/Table/table/head/useHeadCellResize.ts +79 -79
  497. package/src/packages/components/Table/table/node/useTableNode.tsx +66 -66
  498. package/src/packages/components/Table/table/table.scss +438 -438
  499. package/src/packages/components/Table/table/use/useFixedShadow.ts +48 -48
  500. package/src/packages/components/Table/table/use/useTableDraggier.col.tsx +639 -639
  501. package/src/packages/components/Table/table/use/useTableDraggier.row.tsx +279 -279
  502. package/src/packages/components/Table/table/use/useTableDraggier.tsx +237 -237
  503. package/src/packages/components/Table/table/use/useTableFormEditor.tsx +190 -190
  504. package/src/packages/components/Table/table/use/useTableLoading.tsx +39 -39
  505. package/src/packages/components/Table/table/use/useTableMethods.tsx +65 -65
  506. package/src/packages/components/Table/table/use/useTableModifyEditor.tsx +204 -204
  507. package/src/packages/components/Table/table/use/useTableScroll.tsx +49 -49
  508. package/src/packages/components/Table/table/utils/createTableHooks.ts +70 -70
  509. package/src/packages/components/Table/table/utils/table.utils.ts +286 -286
  510. package/src/packages/components/Table/table/utils/url.utils.ts +23 -23
  511. package/src/packages/components/TableOptionSpace/index.ts +5 -5
  512. package/src/packages/components/TableOptionUtils/index.ts +5 -5
  513. package/src/packages/components/Tag/tag.utils.ts +20 -20
  514. package/src/packages/components/ThemeColor/index.tsx +22 -22
  515. package/src/packages/components/ThemeColor/theme-color.scss +36 -36
  516. package/src/packages/components/ThemeColorSelector/index.tsx +53 -53
  517. package/src/packages/components/ThemeDarkSelector/index.tsx +37 -37
  518. package/src/packages/components/ThemeEditor/index.tsx +199 -199
  519. package/src/packages/components/ThemeEditor/theme-editor.scss +106 -106
  520. package/src/packages/components/ThemeLocaleSelector/index.tsx +41 -41
  521. package/src/packages/components/ThemePrimaryColors/index.ts +5 -5
  522. package/src/packages/components/ThemeShapeSelector/index.tsx +55 -55
  523. package/src/packages/components/ThemeSizeSelector/index.tsx +50 -50
  524. package/src/packages/components/TimePicker/createRangeTimeRender.tsx +80 -80
  525. package/src/packages/components/TimePicker/createSeparateRangeTimeRender.tsx +104 -104
  526. package/src/packages/components/TimePicker/createSingleTimeRender.tsx +202 -202
  527. package/src/packages/components/TimePicker/index.tsx +65 -65
  528. package/src/packages/components/TimePicker/panel/TimeBaseColumn.tsx +136 -136
  529. package/src/packages/components/TimePicker/panel/TimeBasePanel.tsx +172 -172
  530. package/src/packages/components/TimePicker/panel/TimePanel.tsx +94 -94
  531. package/src/packages/components/TimePicker/panel/TimeRangePanel.tsx +141 -141
  532. package/src/packages/components/TimePicker/panel/time-base-column.scss +51 -51
  533. package/src/packages/components/TimePicker/panel/time-base-panel.scss +39 -39
  534. package/src/packages/components/TimePicker/panel/time-panel.utils.ts +16 -16
  535. package/src/packages/components/TimePicker/panel/time-range-panel.scss +9 -9
  536. package/src/packages/components/TimePicker/time.scss +10 -10
  537. package/src/packages/components/TimePicker/time.utils.ts +100 -100
  538. package/src/packages/components/TimePicker/useRangeTimeRender.tsx +236 -236
  539. package/src/packages/components/TimePicker/useTimeHooks.ts +11 -11
  540. package/src/packages/components/Toggle/index.tsx +116 -116
  541. package/src/packages/components/Toggle/toggle.scss +151 -151
  542. package/src/packages/components/Tooltip/index.tsx +118 -118
  543. package/src/packages/components/Tooltip/tooltip.scss +5 -5
  544. package/src/packages/components/Transition/index.tsx +134 -134
  545. package/src/packages/components/Tree/RenderTreeNode.tsx +178 -178
  546. package/src/packages/components/Tree/index.tsx +130 -130
  547. package/src/packages/components/Tree/tree.scss +259 -259
  548. package/src/packages/components/TreeCore/TreeCore.type.tsx +140 -140
  549. package/src/packages/components/TreeCore/createTreeCore.tsx +364 -364
  550. package/src/packages/components/TreeCore/createTreeDraggier.tsx +412 -412
  551. package/src/packages/components/TreeCore/createTreeHooks.ts +16 -16
  552. package/src/packages/components/TreeCore/createTreeMethods.tsx +421 -421
  553. package/src/packages/components/TreeCore/createTreeNode.tsx +244 -244
  554. package/src/packages/components/TreeCore/createTreeProps.ts +76 -76
  555. package/src/packages/components/TreeCore/createTreeUtils.ts +140 -140
  556. package/src/packages/components/TreeCore/fromatNodeData.ts +65 -65
  557. package/src/packages/components/TreeNodeWithMenu/index.tsx +95 -95
  558. package/src/packages/components/TreeNodeWithMenu/tree-node-with-menu.scss +39 -39
  559. package/src/packages/components/TreeNodeWithMenu/treeNodeWithMenu.utils.ts +12 -12
  560. package/src/packages/components/Triangle/index.tsx +88 -88
  561. package/src/packages/components/Triangle/triangle.scss +12 -12
  562. package/src/packages/components/Upload/index.tsx +422 -422
  563. package/src/packages/components/Upload/upload.scss +185 -185
  564. package/src/packages/components/VirtualList/createVirtualDraggier.ts +375 -375
  565. package/src/packages/components/VirtualList/index.tsx +109 -109
  566. package/src/packages/components/VirtualList/useVirtualList.tsx +440 -440
  567. package/src/packages/components/VirtualList/virtual-list.scss +58 -58
  568. package/src/packages/components/VirtualTable/index.tsx +220 -220
  569. package/src/packages/components/VirtualTable/virtual-table.scss +179 -179
  570. package/src/packages/components/_Object/index.tsx +5 -5
  571. package/src/packages/components/buildPlainDefaultUrlConfig/index.tsx +5 -5
  572. package/src/packages/components/createAddressService/index.ts +5 -5
  573. package/src/packages/components/createAutoScrollManager/index.tsx +41 -41
  574. package/src/packages/components/createHttp/http.utils.ts +56 -56
  575. package/src/packages/components/createHttp/index.tsx +29 -29
  576. package/src/packages/components/createObjectService/index.tsx +5 -5
  577. package/src/packages/components/createOvService/index.tsx +5 -5
  578. package/src/packages/components/createPlainAddressService/index.tsx +107 -107
  579. package/src/packages/components/createPopup/index.ts +5 -5
  580. package/src/packages/components/createRequestInterceptor/index.ts +139 -139
  581. package/src/packages/components/createScrollDraggier/index.ts +341 -341
  582. package/src/packages/components/createScrollUtils/index.tsx +163 -163
  583. package/src/packages/components/createSimpleDate/index.ts +49 -49
  584. package/src/packages/components/createTableOptionUser/index.tsx +5 -5
  585. package/src/packages/components/createTransitionHandler/index.ts +46 -46
  586. package/src/packages/components/createUploadService/index.tsx +5 -5
  587. package/src/packages/components/createVirtualDraggier/index.ts +5 -5
  588. package/src/packages/components/createWebDraggier/index.ts +5 -5
  589. package/src/packages/components/i18n/index.tsx +5 -5
  590. package/src/packages/components/loadFile/index.ts +20 -20
  591. package/src/packages/components/nextPopupId/index.ts +5 -5
  592. package/src/packages/components/useAutoScrollUtils/auto-scroll-utils.scss +48 -48
  593. package/src/packages/components/useAutoScrollUtils/index.tsx +86 -86
  594. package/src/packages/components/useContextmenuOptions/index.tsx +40 -40
  595. package/src/packages/components/useDialog/DialogService.tsx +227 -227
  596. package/src/packages/components/useDialog/dialog-service.scss +50 -50
  597. package/src/packages/components/useDialog/dialog.service.utils.tsx +88 -88
  598. package/src/packages/components/useDialog/index.tsx +66 -66
  599. package/src/packages/components/useImage/ImageService.tsx +285 -285
  600. package/src/packages/components/useImage/index.tsx +28 -28
  601. package/src/packages/components/useLoading/LoadingService.tsx +106 -106
  602. package/src/packages/components/useLoading/index.tsx +31 -31
  603. package/src/packages/components/useLoading/loading.service.scss +25 -25
  604. package/src/packages/components/useLoading/loading.service.utils.tsx +13 -13
  605. package/src/packages/components/useMessage/Message.tsx +77 -77
  606. package/src/packages/components/useMessage/MessageContainer.tsx +64 -64
  607. package/src/packages/components/useMessage/MessageManager.tsx +58 -58
  608. package/src/packages/components/useMessage/index.tsx +51 -51
  609. package/src/packages/components/useMessage/message.scss +149 -149
  610. package/src/packages/components/useMessage/message.service.utils.tsx +43 -43
  611. package/src/packages/components/useNotice/Notice.tsx +93 -93
  612. package/src/packages/components/useNotice/NoticeContainer.tsx +65 -65
  613. package/src/packages/components/useNotice/NoticeManager.tsx +58 -58
  614. package/src/packages/components/useNotice/index.tsx +42 -42
  615. package/src/packages/components/useNotice/noitice.service.utils.tsx +48 -48
  616. package/src/packages/components/useNotice/notice.scss +158 -158
  617. package/src/packages/components/usePageRender/index.tsx +3 -3
  618. package/src/packages/components/usePageRenderContext/index.tsx +8 -8
  619. package/src/packages/components/usePopup/PopupItem.tsx +432 -432
  620. package/src/packages/components/usePopup/index.tsx +1 -1
  621. package/src/packages/components/usePopup/popup-item.scss +252 -252
  622. package/src/packages/components/usePopup/refresh/MaxMinTopLeft.ts +38 -38
  623. package/src/packages/components/usePopup/refresh/applyPosition.ts +61 -61
  624. package/src/packages/components/usePopup/refresh/calcPosition.ts +88 -88
  625. package/src/packages/components/usePopup/refresh/refreshArrow.ts +112 -112
  626. package/src/packages/components/usePopup/refresh/refreshPopup.ts +79 -79
  627. package/src/packages/components/usePopup/trigger/useManagerTrigger.click.tsx +56 -56
  628. package/src/packages/components/usePopup/trigger/useManagerTrigger.clickOutside.tsx +39 -39
  629. package/src/packages/components/usePopup/trigger/useManagerTrigger.contextmenu.tsx +59 -59
  630. package/src/packages/components/usePopup/trigger/useManagerTrigger.focus.tsx +30 -30
  631. package/src/packages/components/usePopup/trigger/useManagerTrigger.hover.tsx +60 -60
  632. package/src/packages/components/usePopup/trigger/usePopupTrigger.tsx +56 -56
  633. package/src/packages/components/usePopup/trigger/useReferenceTrigger.tsx +90 -90
  634. package/src/packages/components/usePopup/usePopup.tsx +73 -73
  635. package/src/packages/components/usePopup/usePopupManager.tsx +325 -325
  636. package/src/packages/components/usePopup/utils/closeAllPopper.ts +5 -5
  637. package/src/packages/components/usePopup/utils/createPopperAttrsGetter.ts +5 -5
  638. package/src/packages/components/usePopup/utils/createPopupManagerHooks.tsx +65 -65
  639. package/src/packages/components/usePopup/utils/decodePlacement.ts +16 -16
  640. package/src/packages/components/usePopup/utils/getAvailableDirection.ts +91 -91
  641. package/src/packages/components/usePopup/utils/getBoundary.ts +25 -25
  642. package/src/packages/components/usePopup/utils/getRects.ts +24 -24
  643. package/src/packages/components/usePopup/utils/handleDirection.ts +10 -10
  644. package/src/packages/components/usePopup/utils/ids2map.ts +11 -11
  645. package/src/packages/components/usePopup/utils/popup.utils.ts +239 -239
  646. package/src/packages/components/usePopup/utils/stopPopup.ts +7 -7
  647. package/src/packages/components/usePopupEditor/index.tsx +113 -113
  648. package/src/packages/components/usePopupEditor/popup-editor.utils.ts +15 -15
  649. package/src/packages/components/usePopupManager/index.ts +5 -5
  650. package/src/packages/components/usePopupTrigger/index.tsx +5 -5
  651. package/src/packages/components/useReferenceTrigger/index.tsx +5 -5
  652. package/src/packages/components/useTableFilter/index.ts +73 -73
  653. package/src/packages/components/useTooltip/index.tsx +188 -188
  654. package/src/packages/components/useWatchAutoClear/index.ts +5 -5
  655. package/src/packages/directives/ClickWave/click-wave.scss +57 -57
  656. package/src/packages/directives/ClickWave/index.tsx +78 -78
  657. package/src/packages/directives/ResizeDetector/index.tsx +107 -107
  658. package/src/packages/entry.tsx +1 -0
  659. package/src/packages/i18n/i18n.utils.ts +272 -272
  660. package/src/packages/i18n/index.ts +5 -5
  661. package/src/packages/i18n/lang/en-us.ts +3 -0
  662. package/src/packages/i18n/lang/zh-cn.ts +3 -0
  663. package/src/packages/index.tsx +5 -5
  664. package/src/packages/styles/application/application.public.scss +15 -15
  665. package/src/packages/styles/application/application.public.transition.scss +90 -90
  666. package/src/packages/styles/global.import.scss +194 -194
  667. package/src/packages/uses/createInputPopperAttrs.ts +67 -60
  668. package/src/packages/uses/useCollapseStyles.tsx +56 -56
  669. package/src/packages/uses/useDragHorizontalScroll.ts +81 -81
  670. package/src/packages/uses/useEdit.ts +116 -116
  671. package/src/packages/uses/useFocusHandler.ts +73 -73
  672. package/src/packages/uses/useFunctionWrapper.ts +31 -31
  673. package/src/packages/uses/useMultipleModel.tsx +65 -65
  674. package/src/packages/uses/useRenderReference.tsx +32 -32
  675. package/src/packages/uses/useStyle.tsx +82 -82
  676. package/src/packages/utils/ClientZoom.ts +50 -50
  677. package/src/packages/utils/ComponentUtils.ts +10 -10
  678. package/src/packages/utils/FixInput.ts +3 -3
  679. package/src/packages/utils/InnerTransition.ts +13 -13
  680. package/src/packages/utils/LoadingText.ts +11 -11
  681. package/src/packages/utils/OpenController.ts +15 -15
  682. package/src/packages/utils/buildCycleIndexList.ts +31 -31
  683. package/src/packages/utils/clearFields.ts +16 -16
  684. package/src/packages/utils/color.utils.ts +189 -189
  685. package/src/packages/utils/combineURL.ts +5 -5
  686. package/src/packages/utils/constant.tsx +5 -5
  687. package/src/packages/utils/createAnimate.ts +45 -45
  688. package/src/packages/utils/createCache.ts +32 -32
  689. package/src/packages/utils/createDraggier.ts +256 -256
  690. package/src/packages/utils/createEffectiveHandler.ts +8 -8
  691. package/src/packages/utils/createError.ts +16 -16
  692. package/src/packages/utils/createFlagManager.ts +34 -34
  693. package/src/packages/utils/createKeyHandler.ts +20 -20
  694. package/src/packages/utils/createListUtils.ts +38 -38
  695. package/src/packages/utils/customDeepClone.ts +15 -15
  696. package/src/packages/utils/deepCloneRenderNode.ts +41 -41
  697. package/src/packages/utils/deepIterateObject.ts +14 -14
  698. package/src/packages/utils/findReactElement.tsx +76 -76
  699. package/src/packages/utils/getDeviceInfo.ts +59 -59
  700. package/src/packages/utils/getElementRect.ts +32 -32
  701. package/src/packages/utils/getRowEl.ts +33 -33
  702. package/src/packages/utils/incrementalMerge.ts +8 -8
  703. package/src/packages/utils/inheritSlots.ts +30 -30
  704. package/src/packages/utils/installAllIcons.ts +2 -1
  705. package/src/packages/utils/installAllLazyIcons.ts +17 -17
  706. package/src/packages/utils/isObjectCommonMatch.ts +21 -21
  707. package/src/packages/utils/isSSR.tsx +3 -3
  708. package/src/packages/utils/onParentElementsScroll.tsx +26 -26
  709. package/src/packages/utils/plainDate.ts +203 -203
  710. package/src/packages/utils/renderInputModeTextRangeValue.tsx +25 -25
  711. package/src/packages/utils/renderNothing.tsx +1 -1
  712. package/src/packages/utils/type.ts +11 -11
  713. package/src/packages/utils/useMove.tsx +78 -78
  714. 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
+ }