taro-uno-ui 0.9.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (647) hide show
  1. package/README.md +21 -0
  2. package/dist/app.config.d.ts +38 -0
  3. package/dist/app.d.ts +6 -0
  4. package/dist/components/basic/Button/Button.d.ts +6 -0
  5. package/dist/components/basic/Button/Button.styles.d.ts +2 -0
  6. package/dist/components/basic/Button/Button.types.d.ts +74 -0
  7. package/dist/components/basic/Button/index.d.ts +4 -0
  8. package/dist/components/basic/Divider/Divider.d.ts +6 -0
  9. package/dist/components/basic/Divider/Divider.styles.d.ts +87 -0
  10. package/dist/components/basic/Divider/Divider.types.d.ts +242 -0
  11. package/dist/components/basic/Divider/index.d.ts +6 -0
  12. package/dist/components/basic/Icon/Icon.d.ts +5 -0
  13. package/dist/components/basic/Icon/Icon.data.d.ts +29 -0
  14. package/dist/components/basic/Icon/Icon.styles.d.ts +61 -0
  15. package/dist/components/basic/Icon/Icon.types.d.ts +199 -0
  16. package/dist/components/basic/Icon/IconManager.d.ts +120 -0
  17. package/dist/components/basic/Icon/index.d.ts +6 -0
  18. package/dist/components/basic/Text/Text.d.ts +7 -0
  19. package/dist/components/basic/Text/Text.styles.d.ts +67 -0
  20. package/dist/components/basic/Text/Text.types.d.ts +274 -0
  21. package/dist/components/basic/Text/index.d.ts +5 -0
  22. package/dist/components/basic/Typography/Typography.d.ts +8 -0
  23. package/dist/components/basic/Typography/Typography.styles.d.ts +83 -0
  24. package/dist/components/basic/Typography/Typography.types.d.ts +245 -0
  25. package/dist/components/basic/Typography/index.d.ts +3 -0
  26. package/dist/components/basic/Video/Video.d.ts +7 -0
  27. package/dist/components/basic/Video/Video.styles.d.ts +212 -0
  28. package/dist/components/basic/Video/Video.types.d.ts +447 -0
  29. package/dist/components/basic/Video/index.d.ts +10 -0
  30. package/dist/components/basic/index.d.ts +217 -0
  31. package/dist/components/common/ErrorBoundary.d.ts +19 -0
  32. package/dist/components/common/LazyComponent.d.ts +78 -0
  33. package/dist/components/common/ResponsiveContainer.d.ts +23 -0
  34. package/dist/components/common/ResponsiveGrid.d.ts +44 -0
  35. package/dist/components/common/SecurityProvider.d.ts +15 -0
  36. package/dist/components/common/ThemeProvider.d.ts +17 -0
  37. package/dist/components/common/VirtualList.d.ts +89 -0
  38. package/dist/components/common/index.d.ts +17 -0
  39. package/dist/components/display/Avatar/Avatar.d.ts +3 -0
  40. package/dist/components/display/Avatar/Avatar.styles.d.ts +2 -0
  41. package/dist/components/display/Avatar/Avatar.types.d.ts +37 -0
  42. package/dist/components/display/Avatar/index.d.ts +3 -0
  43. package/dist/components/display/Badge/Badge.d.ts +3 -0
  44. package/dist/components/display/Badge/Badge.types.d.ts +27 -0
  45. package/dist/components/display/Badge/index.d.ts +2 -0
  46. package/dist/components/display/Calendar/Calendar.d.ts +5 -0
  47. package/dist/components/display/Calendar/Calendar.styles.d.ts +2 -0
  48. package/dist/components/display/Calendar/Calendar.types.d.ts +87 -0
  49. package/dist/components/display/Calendar/index.d.ts +3 -0
  50. package/dist/components/display/Card/Card.d.ts +3 -0
  51. package/dist/components/display/Card/Card.styles.d.ts +1 -0
  52. package/dist/components/display/Card/Card.types.d.ts +52 -0
  53. package/dist/components/display/Card/index.d.ts +3 -0
  54. package/dist/components/display/Carousel/Carousel.d.ts +5 -0
  55. package/dist/components/display/Carousel/Carousel.styles.d.ts +2 -0
  56. package/dist/components/display/Carousel/Carousel.types.d.ts +55 -0
  57. package/dist/components/display/Carousel/index.d.ts +3 -0
  58. package/dist/components/display/List/List.d.ts +4 -0
  59. package/dist/components/display/List/List.styles.d.ts +1 -0
  60. package/dist/components/display/List/List.types.d.ts +64 -0
  61. package/dist/components/display/List/index.d.ts +3 -0
  62. package/dist/components/display/Rate/Rate.d.ts +6 -0
  63. package/dist/components/display/Rate/Rate.styles.d.ts +100 -0
  64. package/dist/components/display/Rate/Rate.types.d.ts +105 -0
  65. package/dist/components/display/Rate/index.d.ts +17 -0
  66. package/dist/components/display/Table/Table.d.ts +7 -0
  67. package/dist/components/display/Table/Table.styles.d.ts +84 -0
  68. package/dist/components/display/Table/Table.types.d.ts +251 -0
  69. package/dist/components/display/Table/index.d.ts +4 -0
  70. package/dist/components/display/Tag/Tag.d.ts +5 -0
  71. package/dist/components/display/Tag/Tag.styles.d.ts +2 -0
  72. package/dist/components/display/Tag/Tag.types.d.ts +47 -0
  73. package/dist/components/display/Tag/index.d.ts +3 -0
  74. package/dist/components/display/Timeline/Timeline.d.ts +16 -0
  75. package/dist/components/display/Timeline/Timeline.styles.d.ts +2 -0
  76. package/dist/components/display/Timeline/Timeline.types.d.ts +53 -0
  77. package/dist/components/display/Timeline/index.d.ts +3 -0
  78. package/dist/components/display/index.d.ts +67 -0
  79. package/dist/components/feedback/Loading/Loading.d.ts +4 -0
  80. package/dist/components/feedback/Loading/Loading.styles.d.ts +2 -0
  81. package/dist/components/feedback/Loading/Loading.types.d.ts +29 -0
  82. package/dist/components/feedback/Loading/index.d.ts +4 -0
  83. package/dist/components/feedback/Message/Message.d.ts +4 -0
  84. package/dist/components/feedback/Message/Message.styles.d.ts +34 -0
  85. package/dist/components/feedback/Message/Message.types.d.ts +33 -0
  86. package/dist/components/feedback/Message/index.d.ts +4 -0
  87. package/dist/components/feedback/Modal/Modal.d.ts +8 -0
  88. package/dist/components/feedback/Modal/Modal.styles.d.ts +18 -0
  89. package/dist/components/feedback/Modal/Modal.types.d.ts +143 -0
  90. package/dist/components/feedback/Modal/index.d.ts +3 -0
  91. package/dist/components/feedback/Notification/Notification.d.ts +4 -0
  92. package/dist/components/feedback/Notification/Notification.styles.d.ts +88 -0
  93. package/dist/components/feedback/Notification/Notification.types.d.ts +279 -0
  94. package/dist/components/feedback/Notification/NotificationManager.d.ts +4 -0
  95. package/dist/components/feedback/Notification/index.d.ts +25 -0
  96. package/dist/components/feedback/Progress/Progress.d.ts +4 -0
  97. package/dist/components/feedback/Progress/Progress.styles.d.ts +261 -0
  98. package/dist/components/feedback/Progress/Progress.test.simple.d.ts +2 -0
  99. package/dist/components/feedback/Progress/Progress.types.d.ts +147 -0
  100. package/dist/components/feedback/Progress/index.d.ts +3 -0
  101. package/dist/components/feedback/Progress/utils/animation.d.ts +55 -0
  102. package/dist/components/feedback/Progress/utils/index.d.ts +2 -0
  103. package/dist/components/feedback/Progress/utils/progress-calculator.d.ts +75 -0
  104. package/dist/components/feedback/Result/Result.d.ts +7 -0
  105. package/dist/components/feedback/Result/Result.styles.d.ts +2 -0
  106. package/dist/components/feedback/Result/Result.types.d.ts +66 -0
  107. package/dist/components/feedback/Result/index.d.ts +3 -0
  108. package/dist/components/feedback/Toast/Toast.d.ts +7 -0
  109. package/dist/components/feedback/Toast/Toast.styles.d.ts +14 -0
  110. package/dist/components/feedback/Toast/Toast.types.d.ts +81 -0
  111. package/dist/components/feedback/Toast/index.d.ts +3 -0
  112. package/dist/components/feedback/Tooltip/Tooltip.d.ts +4 -0
  113. package/dist/components/feedback/Tooltip/Tooltip.examples.d.ts +6 -0
  114. package/dist/components/feedback/Tooltip/Tooltip.styles.d.ts +78 -0
  115. package/dist/components/feedback/Tooltip/Tooltip.types.d.ts +130 -0
  116. package/dist/components/feedback/Tooltip/index.d.ts +3 -0
  117. package/dist/components/feedback/index.d.ts +71 -0
  118. package/dist/components/form/Cascader/Cascader.d.ts +7 -0
  119. package/dist/components/form/Cascader/Cascader.styles.d.ts +107 -0
  120. package/dist/components/form/Cascader/Cascader.types.d.ts +418 -0
  121. package/dist/components/form/Cascader/hooks/index.d.ts +3 -0
  122. package/dist/components/form/Cascader/hooks/useCascaderFieldNames.d.ts +12 -0
  123. package/dist/components/form/Cascader/hooks/useCascaderOptions.d.ts +15 -0
  124. package/dist/components/form/Cascader/hooks/useCascaderState.d.ts +23 -0
  125. package/dist/components/form/Cascader/index.d.ts +6 -0
  126. package/dist/components/form/Cascader/utils/formatDisplayValue.d.ts +9 -0
  127. package/dist/components/form/Cascader/utils/index.d.ts +1 -0
  128. package/dist/components/form/Checkbox/Checkbox.d.ts +6 -0
  129. package/dist/components/form/Checkbox/Checkbox.styles.d.ts +111 -0
  130. package/dist/components/form/Checkbox/Checkbox.types.d.ts +473 -0
  131. package/dist/components/form/Checkbox/CheckboxGroup.d.ts +6 -0
  132. package/dist/components/form/Checkbox/index.d.ts +8 -0
  133. package/dist/components/form/DatePicker/DatePicker.d.ts +6 -0
  134. package/dist/components/form/DatePicker/DatePicker.styles.d.ts +99 -0
  135. package/dist/components/form/DatePicker/DatePicker.types.d.ts +236 -0
  136. package/dist/components/form/DatePicker/index.d.ts +3 -0
  137. package/dist/components/form/Form/Form.d.ts +8 -0
  138. package/dist/components/form/Form/Form.styles.d.ts +84 -0
  139. package/dist/components/form/Form/Form.types.d.ts +416 -0
  140. package/dist/components/form/Form/index.d.ts +9 -0
  141. package/dist/components/form/Form/useFormLogic.d.ts +22 -0
  142. package/dist/components/form/Input/Input.d.ts +6 -0
  143. package/dist/components/form/Input/Input.styles.d.ts +61 -0
  144. package/dist/components/form/Input/Input.types.d.ts +294 -0
  145. package/dist/components/form/Input/index.d.ts +8 -0
  146. package/dist/components/form/Input/useInputLogic.d.ts +35 -0
  147. package/dist/components/form/InputNumber/InputNumber.d.ts +6 -0
  148. package/dist/components/form/InputNumber/InputNumber.styles.d.ts +120 -0
  149. package/dist/components/form/InputNumber/InputNumber.types.d.ts +303 -0
  150. package/dist/components/form/InputNumber/components/InputNumberClearButton.d.ts +10 -0
  151. package/dist/components/form/InputNumber/components/InputNumberControls.d.ts +11 -0
  152. package/dist/components/form/InputNumber/components/index.d.ts +2 -0
  153. package/dist/components/form/InputNumber/hooks/index.d.ts +4 -0
  154. package/dist/components/form/InputNumber/hooks/useInputNumberState.d.ts +38 -0
  155. package/dist/components/form/InputNumber/hooks/useInputNumberValidation.d.ts +12 -0
  156. package/dist/components/form/InputNumber/index.d.ts +5 -0
  157. package/dist/components/form/Radio/Radio.d.ts +6 -0
  158. package/dist/components/form/Radio/Radio.styles.d.ts +80 -0
  159. package/dist/components/form/Radio/Radio.types.d.ts +415 -0
  160. package/dist/components/form/Radio/index.d.ts +8 -0
  161. package/dist/components/form/Select/Select.d.ts +6 -0
  162. package/dist/components/form/Select/Select.styles.d.ts +71 -0
  163. package/dist/components/form/Select/Select.types.d.ts +418 -0
  164. package/dist/components/form/Select/index.d.ts +8 -0
  165. package/dist/components/form/Slider/Slider.d.ts +7 -0
  166. package/dist/components/form/Slider/Slider.styles.d.ts +2 -0
  167. package/dist/components/form/Slider/Slider.types.d.ts +85 -0
  168. package/dist/components/form/Slider/index.d.ts +3 -0
  169. package/dist/components/form/Switch/Switch.d.ts +10 -0
  170. package/dist/components/form/Switch/Switch.styles.d.ts +154 -0
  171. package/dist/components/form/Switch/Switch.types.d.ts +351 -0
  172. package/dist/components/form/Switch/index.d.ts +7 -0
  173. package/dist/components/form/Textarea/Textarea.d.ts +6 -0
  174. package/dist/components/form/Textarea/Textarea.styles.d.ts +66 -0
  175. package/dist/components/form/Textarea/Textarea.types.d.ts +348 -0
  176. package/dist/components/form/Textarea/index.d.ts +7 -0
  177. package/dist/components/form/TimePicker/TimePicker.d.ts +6 -0
  178. package/dist/components/form/TimePicker/TimePicker.styles.d.ts +104 -0
  179. package/dist/components/form/TimePicker/TimePicker.types.d.ts +385 -0
  180. package/dist/components/form/TimePicker/index.d.ts +4 -0
  181. package/dist/components/form/Transfer/Transfer.d.ts +7 -0
  182. package/dist/components/form/Transfer/Transfer.styles.d.ts +106 -0
  183. package/dist/components/form/Transfer/Transfer.types.d.ts +384 -0
  184. package/dist/components/form/Transfer/components/TransferItem.d.ts +23 -0
  185. package/dist/components/form/Transfer/components/TransferList.d.ts +55 -0
  186. package/dist/components/form/Transfer/components/TransferOperations.d.ts +21 -0
  187. package/dist/components/form/Transfer/components/TransferPagination.d.ts +19 -0
  188. package/dist/components/form/Transfer/components/TransferSearch.d.ts +21 -0
  189. package/dist/components/form/Transfer/components/index.d.ts +6 -0
  190. package/dist/components/form/Transfer/hooks/index.d.ts +3 -0
  191. package/dist/components/form/Transfer/hooks/useTransferData.d.ts +41 -0
  192. package/dist/components/form/Transfer/hooks/useTransferState.d.ts +21 -0
  193. package/dist/components/form/Transfer/index.d.ts +9 -0
  194. package/dist/components/form/Upload/Upload.d.ts +7 -0
  195. package/dist/components/form/Upload/Upload.styles.d.ts +2 -0
  196. package/dist/components/form/Upload/Upload.types.d.ts +143 -0
  197. package/dist/components/form/Upload/index.d.ts +3 -0
  198. package/dist/components/form/index.d.ts +126 -0
  199. package/dist/components/index.d.ts +122 -0
  200. package/dist/components/layout/Affix/Affix.d.ts +4 -0
  201. package/dist/components/layout/Affix/Affix.styles.d.ts +1669 -0
  202. package/dist/components/layout/Affix/Affix.types.d.ts +25 -0
  203. package/dist/components/layout/Affix/index.d.ts +3 -0
  204. package/dist/components/layout/Col/Col.d.ts +6 -0
  205. package/dist/components/layout/Col/Col.styles.d.ts +52 -0
  206. package/dist/components/layout/Col/Col.types.d.ts +54 -0
  207. package/dist/components/layout/Col/index.d.ts +3 -0
  208. package/dist/components/layout/Container/Container.d.ts +6 -0
  209. package/dist/components/layout/Container/Container.styles.d.ts +41 -0
  210. package/dist/components/layout/Container/Container.types.d.ts +59 -0
  211. package/dist/components/layout/Container/index.d.ts +3 -0
  212. package/dist/components/layout/Grid/Grid.d.ts +6 -0
  213. package/dist/components/layout/Grid/Grid.styles.d.ts +60 -0
  214. package/dist/components/layout/Grid/Grid.types.d.ts +68 -0
  215. package/dist/components/layout/Grid/index.d.ts +3 -0
  216. package/dist/components/layout/Layout/Content.d.ts +4 -0
  217. package/dist/components/layout/Layout/Footer.d.ts +4 -0
  218. package/dist/components/layout/Layout/Header.d.ts +4 -0
  219. package/dist/components/layout/Layout/Layout.d.ts +4 -0
  220. package/dist/components/layout/Layout/Layout.styles.d.ts +3366 -0
  221. package/dist/components/layout/Layout/Layout.types.d.ts +48 -0
  222. package/dist/components/layout/Layout/Sider.d.ts +4 -0
  223. package/dist/components/layout/Layout/index.d.ts +8 -0
  224. package/dist/components/layout/Row/Row.d.ts +6 -0
  225. package/dist/components/layout/Row/Row.styles.d.ts +55 -0
  226. package/dist/components/layout/Row/Row.types.d.ts +51 -0
  227. package/dist/components/layout/Row/index.d.ts +3 -0
  228. package/dist/components/layout/Space/Space.d.ts +6 -0
  229. package/dist/components/layout/Space/Space.styles.d.ts +69 -0
  230. package/dist/components/layout/Space/Space.types.d.ts +84 -0
  231. package/dist/components/layout/Space/index.d.ts +3 -0
  232. package/dist/components/layout/index.d.ts +39 -0
  233. package/dist/components/navigation/Menu/Menu.constants.d.ts +59 -0
  234. package/dist/components/navigation/Menu/Menu.d.ts +10 -0
  235. package/dist/components/navigation/Menu/Menu.stories.d.ts +157 -0
  236. package/dist/components/navigation/Menu/Menu.styles.d.ts +143 -0
  237. package/dist/components/navigation/Menu/Menu.types.d.ts +210 -0
  238. package/dist/components/navigation/Menu/Menu.utils.d.ts +54 -0
  239. package/dist/components/navigation/Menu/MenuItem.d.ts +32 -0
  240. package/dist/components/navigation/Menu/SubMenu.d.ts +41 -0
  241. package/dist/components/navigation/Menu/index.d.ts +54 -0
  242. package/dist/components/navigation/NavBar/NavBar.d.ts +7 -0
  243. package/dist/components/navigation/NavBar/NavBar.styles.d.ts +114 -0
  244. package/dist/components/navigation/NavBar/NavBar.types.d.ts +50 -0
  245. package/dist/components/navigation/NavBar/index.d.ts +3 -0
  246. package/dist/components/navigation/Pagination/Pagination.d.ts +6 -0
  247. package/dist/components/navigation/Pagination/Pagination.styles.d.ts +55 -0
  248. package/dist/components/navigation/Pagination/Pagination.types.d.ts +77 -0
  249. package/dist/components/navigation/Pagination/index.d.ts +15 -0
  250. package/dist/components/navigation/Steps/Step.d.ts +4 -0
  251. package/dist/components/navigation/Steps/Steps.d.ts +4 -0
  252. package/dist/components/navigation/Steps/Steps.styles.d.ts +6716 -0
  253. package/dist/components/navigation/Steps/Steps.types.d.ts +41 -0
  254. package/dist/components/navigation/Steps/index.d.ts +3 -0
  255. package/dist/components/navigation/Tabs/Tabs.d.ts +6 -0
  256. package/dist/components/navigation/Tabs/Tabs.styles.d.ts +60 -0
  257. package/dist/components/navigation/Tabs/Tabs.types.d.ts +107 -0
  258. package/dist/components/navigation/Tabs/index.d.ts +3 -0
  259. package/dist/components/navigation/index.d.ts +35 -0
  260. package/dist/constants/index.d.ts +624 -0
  261. package/dist/hooks/index.d.ts +28 -0
  262. package/dist/hooks/types.d.ts +7 -0
  263. package/dist/hooks/useAsync.d.ts +17 -0
  264. package/dist/hooks/useClickOutside.d.ts +19 -0
  265. package/dist/hooks/useCounter.d.ts +36 -0
  266. package/dist/hooks/useDebounce.d.ts +31 -0
  267. package/dist/hooks/useDeepCompareEffect.d.ts +22 -0
  268. package/dist/hooks/useEventHandling.d.ts +81 -0
  269. package/dist/hooks/useEventListener.d.ts +19 -0
  270. package/dist/hooks/useLifecycle.d.ts +66 -0
  271. package/dist/hooks/useMediaQuery.d.ts +22 -0
  272. package/dist/hooks/useMutation.d.ts +47 -0
  273. package/dist/hooks/usePerformance.d.ts +73 -0
  274. package/dist/hooks/usePerformanceMonitor.d.ts +66 -0
  275. package/dist/hooks/usePlatform.d.ts +20 -0
  276. package/dist/hooks/usePrevious.d.ts +14 -0
  277. package/dist/hooks/useRequest.d.ts +32 -0
  278. package/dist/hooks/useStateManagement.d.ts +62 -0
  279. package/dist/hooks/useStorage.d.ts +27 -0
  280. package/dist/hooks/useStyle.d.ts +127 -0
  281. package/dist/hooks/useTheme.d.ts +58 -0
  282. package/dist/hooks/useToggle.d.ts +28 -0
  283. package/dist/hooks/useVirtualScroll.d.ts +42 -0
  284. package/dist/index.d.ts +271 -0
  285. package/dist/js/{index-DffLRSro.js → index-CDFsvu80.js} +15369 -10741
  286. package/dist/js/index-CDFsvu80.js.map +1 -0
  287. package/dist/js/index-DFdcksbe.js.map +1 -1
  288. package/dist/js/index-DXRIkWX1.js.map +1 -1
  289. package/dist/js/{index-6NJ3A1Dn.js → index-JffnTUrv.js} +15430 -10801
  290. package/dist/js/index-JffnTUrv.js.map +1 -0
  291. package/dist/platform/index.d.ts +172 -0
  292. package/dist/providers/AppProvider.d.ts +34 -0
  293. package/dist/providers/index.d.ts +1 -0
  294. package/dist/theme/ThemeProvider.d.ts +34 -0
  295. package/dist/theme/ThemeProvider.types.d.ts +21 -0
  296. package/dist/theme/animations.d.ts +96 -0
  297. package/dist/theme/defaults.d.ts +6 -0
  298. package/dist/theme/design-system.d.ts +400 -0
  299. package/dist/theme/design-tokens.d.ts +459 -0
  300. package/dist/theme/index.d.ts +187 -0
  301. package/dist/theme/responsive.d.ts +63 -0
  302. package/dist/theme/styles.d.ts +65 -0
  303. package/dist/theme/tokens/colors.d.ts +72 -0
  304. package/dist/theme/tokens/effects.d.ts +122 -0
  305. package/dist/theme/tokens/index.d.ts +94 -0
  306. package/dist/theme/tokens/spacing.d.ts +65 -0
  307. package/dist/theme/tokens/typography.d.ts +73 -0
  308. package/dist/theme/types.d.ts +153 -0
  309. package/dist/theme/useThemeUtils.d.ts +21 -0
  310. package/dist/theme/utils.d.ts +255 -0
  311. package/dist/theme/variables.d.ts +170 -0
  312. package/dist/types/accessibility.d.ts +46 -0
  313. package/dist/types/button.d.ts +285 -0
  314. package/dist/types/component-props.d.ts +109 -0
  315. package/dist/types/index.d.ts +343 -0
  316. package/dist/types/standardized-components.d.ts +263 -0
  317. package/dist/types/utils.d.ts +190 -0
  318. package/dist/utils/abort-controller.d.ts +19 -0
  319. package/dist/utils/cache.d.ts +28 -0
  320. package/dist/utils/createNamespace.d.ts +9 -0
  321. package/dist/utils/environment.d.ts +26 -0
  322. package/dist/utils/error-handler.d.ts +37 -0
  323. package/dist/utils/errorLogger.d.ts +72 -0
  324. package/dist/utils/formatUtils.d.ts +93 -0
  325. package/dist/utils/http/error-codes.d.ts +131 -0
  326. package/dist/utils/http/http-client.d.ts +53 -0
  327. package/dist/utils/http/request-cache.d.ts +65 -0
  328. package/dist/utils/http/request.d.ts +280 -0
  329. package/dist/utils/http/taro-adapter.d.ts +4 -0
  330. package/dist/utils/http/types.d.ts +351 -0
  331. package/dist/utils/http/web-adapter.d.ts +4 -0
  332. package/dist/utils/index.d.ts +46 -0
  333. package/dist/utils/inputValidator.d.ts +74 -0
  334. package/dist/utils/performance/performance.d.ts +167 -0
  335. package/dist/utils/responsiveUtils.d.ts +148 -0
  336. package/dist/utils/rtl-support.d.ts +78 -0
  337. package/dist/utils/security/api-security.d.ts +82 -0
  338. package/dist/utils/security/xss-protection.d.ts +20 -0
  339. package/dist/utils/securityHeaders.d.ts +74 -0
  340. package/dist/utils/typeHelpers.d.ts +1 -0
  341. package/dist/utils/types/dataProcessing.d.ts +111 -0
  342. package/dist/utils/types/typeHelpers.d.ts +50 -0
  343. package/dist/utils/xssProtection.d.ts +90 -0
  344. package/package.json +14 -10
  345. package/src/components/basic/Button/Button.tsx +53 -13
  346. package/src/components/basic/Button/Button.types.ts +45 -9
  347. package/src/components/basic/Divider/Divider.tsx +60 -29
  348. package/src/components/basic/Icon/Icon.data.ts +474 -0
  349. package/src/components/basic/Icon/Icon.test.tsx +2 -2
  350. package/src/components/basic/Icon/Icon.tsx +48 -35
  351. package/src/components/basic/Icon/IconManager.ts +229 -0
  352. package/src/components/basic/Text/Text.styles.ts +3 -3
  353. package/src/components/basic/Text/Text.types.ts +14 -4
  354. package/src/components/basic/Typography/Typography.styles.ts +10 -9
  355. package/src/components/basic/Typography/Typography.tsx +15 -13
  356. package/src/components/basic/Typography/Typography.types.ts +41 -41
  357. package/src/components/basic/Typography/index.tsx +1 -1
  358. package/src/components/basic/Video/Video.styles.ts +777 -0
  359. package/src/components/basic/Video/Video.test.tsx +490 -0
  360. package/src/components/basic/Video/Video.tsx +1468 -0
  361. package/src/components/basic/Video/Video.types.ts +500 -0
  362. package/src/components/basic/Video/index.tsx +26 -0
  363. package/src/components/basic/index.tsx +13 -15
  364. package/src/components/common/ErrorBoundary.tsx +1 -1
  365. package/src/components/common/LazyComponent.tsx +9 -8
  366. package/src/components/common/SecurityProvider.tsx +2 -14
  367. package/src/components/common/ThemeProvider.tsx +43 -56
  368. package/src/components/common/VirtualList.tsx +187 -205
  369. package/src/components/common/index.tsx +25 -0
  370. package/src/components/display/Avatar/Avatar.styles.ts +1 -1
  371. package/src/components/display/Avatar/Avatar.tsx +6 -19
  372. package/src/components/display/Avatar/Avatar.types.ts +1 -1
  373. package/src/components/display/Avatar/index.ts +1 -1
  374. package/src/components/display/Badge/Badge.tsx +3 -16
  375. package/src/components/display/Badge/Badge.types.ts +1 -1
  376. package/src/components/display/Badge/index.ts +1 -1
  377. package/src/components/display/Calendar/Calendar.styles.ts +36 -36
  378. package/src/components/display/Calendar/Calendar.test.tsx +27 -15
  379. package/src/components/display/Calendar/Calendar.tsx +56 -35
  380. package/src/components/display/Calendar/Calendar.types.ts +1 -1
  381. package/src/components/display/Calendar/index.ts +1 -1
  382. package/src/components/display/Card/Card.styles.ts +2 -2
  383. package/src/components/display/Card/Card.test.tsx +6 -4
  384. package/src/components/display/Card/Card.tsx +1 -1
  385. package/src/components/display/Card/Card.types.ts +4 -4
  386. package/src/components/display/Card/index.ts +1 -1
  387. package/src/components/display/Carousel/Carousel.styles.ts +31 -31
  388. package/src/components/display/Carousel/Carousel.tsx +34 -39
  389. package/src/components/display/Carousel/Carousel.types.ts +1 -1
  390. package/src/components/display/Carousel/index.ts +1 -1
  391. package/src/components/display/List/List.styles.ts +3 -3
  392. package/src/components/display/List/List.tsx +0 -1
  393. package/src/components/display/List/index.ts +1 -1
  394. package/src/components/display/Rate/Rate.styles.ts +5 -17
  395. package/src/components/display/Rate/Rate.tsx +6 -14
  396. package/src/components/display/Rate/Rate.types.ts +4 -3
  397. package/src/components/display/Rate/index.ts +3 -11
  398. package/src/components/display/Table/Table.test.tsx +2 -0
  399. package/src/components/display/Table/Table.tsx +3 -7
  400. package/src/components/display/Table/Table.types.ts +3 -2
  401. package/src/components/display/Tag/Tag.styles.ts +31 -31
  402. package/src/components/display/Tag/Tag.tsx +9 -26
  403. package/src/components/display/Tag/Tag.types.ts +1 -1
  404. package/src/components/display/Tag/index.ts +1 -1
  405. package/src/components/display/Timeline/Timeline.styles.ts +32 -32
  406. package/src/components/display/Timeline/Timeline.tsx +23 -42
  407. package/src/components/display/Timeline/Timeline.types.ts +1 -1
  408. package/src/components/display/Timeline/index.ts +1 -1
  409. package/src/components/display/index.tsx +33 -29
  410. package/src/components/feedback/Loading/Loading.tsx +6 -1
  411. package/src/components/feedback/Loading/index.ts +2 -5
  412. package/src/components/feedback/Message/Message.styles.ts +3 -3
  413. package/src/components/feedback/Message/index.ts +2 -5
  414. package/src/components/feedback/Modal/Modal.styles.ts +1 -1
  415. package/src/components/feedback/Modal/Modal.tsx +9 -31
  416. package/src/components/feedback/Modal/Modal.types.ts +12 -2
  417. package/src/components/feedback/Notification/Notification.styles.ts +49 -39
  418. package/src/components/feedback/Notification/Notification.test.tsx +1 -1
  419. package/src/components/feedback/Notification/Notification.tsx +97 -120
  420. package/src/components/feedback/Notification/Notification.types.ts +11 -8
  421. package/src/components/feedback/Notification/NotificationManager.tsx +135 -106
  422. package/src/components/feedback/Notification/index.ts +10 -3
  423. package/src/components/feedback/Notification/index.tsx +16 -26
  424. package/src/components/feedback/Progress/Progress.styles.ts +23 -14
  425. package/src/components/feedback/Progress/Progress.tsx +93 -113
  426. package/src/components/feedback/Progress/Progress.types.ts +1 -1
  427. package/src/components/feedback/Progress/index.ts +1 -1
  428. package/src/components/feedback/Progress/utils/animation.ts +12 -23
  429. package/src/components/feedback/Progress/utils/index.ts +2 -2
  430. package/src/components/feedback/Progress/utils/progress-calculator.ts +14 -32
  431. package/src/components/feedback/Result/Result.styles.ts +29 -29
  432. package/src/components/feedback/Result/Result.tsx +8 -20
  433. package/src/components/feedback/Result/Result.types.ts +7 -7
  434. package/src/components/feedback/Result/index.tsx +1 -1
  435. package/src/components/feedback/Toast/Toast.styles.ts +1 -1
  436. package/src/components/feedback/Toast/Toast.tsx +25 -13
  437. package/src/components/feedback/Tooltip/Tooltip.examples.tsx +21 -44
  438. package/src/components/feedback/Tooltip/Tooltip.styles.ts +16 -22
  439. package/src/components/feedback/Tooltip/Tooltip.test.tsx +1 -1
  440. package/src/components/feedback/Tooltip/Tooltip.tsx +65 -46
  441. package/src/components/feedback/Tooltip/Tooltip.types.ts +14 -20
  442. package/src/components/feedback/Tooltip/index.ts +1 -1
  443. package/src/components/feedback/Tooltip/index.tsx +12 -24
  444. package/src/components/feedback/index.tsx +54 -42
  445. package/src/components/form/Cascader/Cascader.styles.ts +2 -2
  446. package/src/components/form/Cascader/Cascader.tsx +84 -88
  447. package/src/components/form/Cascader/Cascader.types.ts +49 -50
  448. package/src/components/form/Cascader/hooks/useCascaderFieldNames.ts +11 -8
  449. package/src/components/form/Cascader/hooks/useCascaderOptions.ts +73 -55
  450. package/src/components/form/Cascader/hooks/useCascaderState.ts +31 -25
  451. package/src/components/form/Cascader/index.ts +1 -1
  452. package/src/components/form/Cascader/utils/formatDisplayValue.ts +4 -4
  453. package/src/components/form/Checkbox/Checkbox.styles.ts +83 -84
  454. package/src/components/form/Checkbox/Checkbox.tsx +2 -9
  455. package/src/components/form/Checkbox/CheckboxGroup.tsx +7 -7
  456. package/src/components/form/DatePicker/DatePicker.test.tsx +1 -1
  457. package/src/components/form/DatePicker/DatePicker.tsx +91 -75
  458. package/src/components/form/DatePicker/DatePicker.types.ts +4 -1
  459. package/src/components/form/Form/Form.tsx +66 -504
  460. package/src/components/form/Form/Form.types.ts +16 -1
  461. package/src/components/form/Form/useFormLogic.ts +497 -0
  462. package/src/components/form/Input/Input.styles.ts +8 -1
  463. package/src/components/form/Input/Input.tsx +55 -291
  464. package/src/components/form/Input/Input.types.ts +13 -1
  465. package/src/components/form/Input/useInputLogic.test.ts +82 -0
  466. package/src/components/form/Input/useInputLogic.ts +260 -0
  467. package/src/components/form/InputNumber/InputNumber.styles.ts +76 -25
  468. package/src/components/form/InputNumber/InputNumber.tsx +53 -21
  469. package/src/components/form/InputNumber/InputNumber.types.ts +21 -3
  470. package/src/components/form/InputNumber/components/InputNumberClearButton.tsx +3 -11
  471. package/src/components/form/InputNumber/components/InputNumberControls.tsx +3 -12
  472. package/src/components/form/InputNumber/hooks/index.ts +1 -1
  473. package/src/components/form/InputNumber/hooks/useInputNumberState.ts +7 -9
  474. package/src/components/form/InputNumber/hooks/useInputNumberValidation.ts +18 -17
  475. package/src/components/form/InputNumber/index.ts +7 -7
  476. package/src/components/form/Radio/Radio.styles.ts +1 -8
  477. package/src/components/form/Radio/Radio.tsx +3 -9
  478. package/src/components/form/Radio/Radio.types.ts +5 -1
  479. package/src/components/form/Select/Select.styles.ts +5 -1
  480. package/src/components/form/Select/Select.tsx +15 -15
  481. package/src/components/form/Select/Select.types.ts +2 -1
  482. package/src/components/form/Slider/Slider.styles.ts +13 -13
  483. package/src/components/form/Slider/Slider.tsx +19 -33
  484. package/src/components/form/Slider/Slider.types.ts +14 -12
  485. package/src/components/form/Slider/index.tsx +2 -9
  486. package/src/components/form/Switch/Switch.styles.ts +1 -7
  487. package/src/components/form/Switch/Switch.tsx +7 -13
  488. package/src/components/form/Textarea/Textarea.styles.ts +4 -4
  489. package/src/components/form/Textarea/Textarea.tsx +7 -1
  490. package/src/components/form/Textarea/Textarea.types.ts +4 -1
  491. package/src/components/form/TimePicker/TimePicker.styles.ts +8 -12
  492. package/src/components/form/TimePicker/TimePicker.tsx +122 -100
  493. package/src/components/form/TimePicker/TimePicker.types.ts +2 -2
  494. package/src/components/form/TimePicker/index.ts +1 -1
  495. package/src/components/form/Transfer/Transfer.styles.ts +3 -15
  496. package/src/components/form/Transfer/Transfer.tsx +146 -134
  497. package/src/components/form/Transfer/Transfer.types.ts +34 -26
  498. package/src/components/form/Transfer/components/TransferItem.tsx +55 -62
  499. package/src/components/form/Transfer/components/TransferList.tsx +212 -199
  500. package/src/components/form/Transfer/components/TransferOperations.tsx +52 -55
  501. package/src/components/form/Transfer/components/TransferPagination.tsx +115 -111
  502. package/src/components/form/Transfer/components/TransferSearch.tsx +52 -55
  503. package/src/components/form/Transfer/hooks/useTransferData.ts +91 -81
  504. package/src/components/form/Transfer/hooks/useTransferState.ts +22 -16
  505. package/src/components/form/Transfer/index.ts +2 -8
  506. package/src/components/form/Upload/Upload.styles.ts +21 -21
  507. package/src/components/form/Upload/Upload.tsx +189 -142
  508. package/src/components/form/Upload/Upload.types.ts +31 -31
  509. package/src/components/form/Upload/index.tsx +1 -1
  510. package/src/components/form/index.tsx +60 -29
  511. package/src/components/index.tsx +0 -1
  512. package/src/components/layout/Affix/Affix.styles.ts +16 -11
  513. package/src/components/layout/Affix/Affix.tsx +67 -75
  514. package/src/components/layout/Affix/Affix.types.ts +18 -18
  515. package/src/components/layout/Affix/index.tsx +1 -1
  516. package/src/components/layout/Col/Col.styles.ts +17 -17
  517. package/src/components/layout/Col/Col.test.tsx +7 -5
  518. package/src/components/layout/Col/Col.tsx +3 -21
  519. package/src/components/layout/Col/Col.types.ts +1 -1
  520. package/src/components/layout/Container/Container.styles.ts +3 -1
  521. package/src/components/layout/Container/Container.tsx +2 -11
  522. package/src/components/layout/Grid/Grid.tsx +3 -53
  523. package/src/components/layout/Layout/Content.tsx +24 -32
  524. package/src/components/layout/Layout/Footer.tsx +24 -32
  525. package/src/components/layout/Layout/Header.tsx +24 -32
  526. package/src/components/layout/Layout/Layout.styles.ts +17 -17
  527. package/src/components/layout/Layout/Layout.tsx +14 -25
  528. package/src/components/layout/Layout/Layout.types.ts +29 -29
  529. package/src/components/layout/Layout/Sider.tsx +44 -56
  530. package/src/components/layout/Layout/index.tsx +16 -2
  531. package/src/components/layout/Row/Row.tsx +15 -43
  532. package/src/components/layout/Space/Space.tsx +3 -11
  533. package/src/components/layout/Space/Space.types.ts +1 -1
  534. package/src/components/layout/index.tsx +29 -19
  535. package/src/components/navigation/Menu/Menu.constants.ts +69 -0
  536. package/src/components/navigation/Menu/Menu.stories.tsx +107 -0
  537. package/src/components/navigation/Menu/Menu.styles.ts +25 -37
  538. package/src/components/navigation/Menu/Menu.tsx +8 -11
  539. package/src/components/navigation/Menu/Menu.types.ts +2 -2
  540. package/src/components/navigation/Menu/Menu.utils.ts +17 -17
  541. package/src/components/navigation/Menu/MenuItem.tsx +9 -11
  542. package/src/components/navigation/Menu/SubMenu.tsx +8 -6
  543. package/src/components/navigation/Menu/index.tsx +4 -69
  544. package/src/components/navigation/NavBar/NavBar.styles.ts +1 -1
  545. package/src/components/navigation/NavBar/NavBar.tsx +7 -10
  546. package/src/components/navigation/NavBar/NavBar.types.ts +3 -3
  547. package/src/components/navigation/NavBar/index.tsx +1 -1
  548. package/src/components/navigation/Pagination/Pagination.test.tsx +2 -3
  549. package/src/components/navigation/Pagination/Pagination.tsx +3 -3
  550. package/src/components/navigation/Pagination/Pagination.types.ts +3 -2
  551. package/src/components/navigation/Pagination/index.ts +9 -3
  552. package/src/components/navigation/Steps/Step.tsx +24 -44
  553. package/src/components/navigation/Steps/Steps.styles.ts +28 -13
  554. package/src/components/navigation/Steps/Steps.test.tsx +2 -0
  555. package/src/components/navigation/Steps/Steps.tsx +88 -89
  556. package/src/components/navigation/Steps/Steps.types.ts +30 -30
  557. package/src/components/navigation/Steps/index.tsx +1 -1
  558. package/src/components/navigation/Tabs/Tabs.test.tsx +3 -2
  559. package/src/components/navigation/Tabs/Tabs.types.ts +4 -3
  560. package/src/components/navigation/index.tsx +21 -16
  561. package/src/constants/index.ts +1 -1
  562. package/src/hooks/index.ts +52 -102
  563. package/src/hooks/types.ts +4 -5
  564. package/src/hooks/useAsync.ts +46 -47
  565. package/src/hooks/useClickOutside.ts +52 -0
  566. package/src/hooks/useCounter.ts +87 -0
  567. package/src/hooks/useDebounce.ts +150 -0
  568. package/src/hooks/useDeepCompareEffect.ts +88 -0
  569. package/src/hooks/useEventListener.ts +77 -0
  570. package/src/hooks/useMediaQuery.ts +75 -0
  571. package/src/hooks/useMutation.ts +233 -0
  572. package/src/hooks/usePerformance.ts +1 -64
  573. package/src/hooks/usePlatform.ts +3 -1
  574. package/src/hooks/usePrevious.ts +25 -0
  575. package/src/hooks/useRequest.ts +12 -7
  576. package/src/hooks/useStateManagement.ts +1 -1
  577. package/src/hooks/useStorage.ts +169 -0
  578. package/src/hooks/useStyle.ts +8 -2
  579. package/src/hooks/useToggle.ts +54 -0
  580. package/src/index.ts +34 -9
  581. package/src/theme/ThemeProvider.tsx +3 -7
  582. package/src/theme/ThemeProvider.types.ts +1 -1
  583. package/src/theme/defaults.ts +1 -1
  584. package/src/theme/design-system.ts +2 -2
  585. package/src/theme/design-tokens.ts +85 -99
  586. package/src/theme/generated/dark-theme.scss +1 -1
  587. package/src/theme/generated/tokens.scss +82 -18
  588. package/src/theme/index.ts +8 -29
  589. package/src/theme/responsive.tsx +36 -34
  590. package/src/theme/styles.ts +1 -1
  591. package/src/theme/useThemeUtils.ts +43 -43
  592. package/src/theme/utils.ts +32 -32
  593. package/src/theme/variables.ts +70 -51
  594. package/src/types/accessibility.ts +36 -37
  595. package/src/types/button.ts +25 -27
  596. package/src/types/component-props.ts +6 -1
  597. package/src/types/glob.d.ts +4 -0
  598. package/src/types/index.ts +2 -2
  599. package/src/types/standardized-components.ts +9 -3
  600. package/src/types/utils.ts +13 -23
  601. package/src/utils/__tests__/responsiveUtils.test.ts +5 -4
  602. package/src/utils/abort-controller.ts +48 -0
  603. package/src/utils/cache.ts +2 -6
  604. package/src/utils/createNamespace.ts +4 -4
  605. package/src/utils/environment.ts +26 -6
  606. package/src/utils/error-handler.ts +2 -2
  607. package/src/utils/errorLogger.ts +16 -20
  608. package/src/utils/formatUtils.ts +38 -70
  609. package/src/utils/http/error-codes.ts +314 -0
  610. package/src/utils/http/http-client.test.ts +63 -0
  611. package/src/utils/{network → http}/http-client.ts +45 -35
  612. package/src/utils/http/request-cache.ts +127 -0
  613. package/src/utils/http/request.ts +954 -0
  614. package/src/utils/http/taro-adapter.test.ts +74 -0
  615. package/src/utils/http/taro-adapter.ts +24 -0
  616. package/src/utils/http/types.ts +414 -0
  617. package/src/utils/http/web-adapter.ts +33 -0
  618. package/src/utils/index.ts +5 -8
  619. package/src/utils/inputValidator.ts +17 -14
  620. package/src/utils/performance/performance.ts +60 -71
  621. package/src/utils/responsiveUtils.ts +7 -16
  622. package/src/utils/rtl-support.ts +29 -19
  623. package/src/utils/security/api-security.ts +47 -39
  624. package/src/utils/securityHeaders.ts +61 -67
  625. package/src/utils/typeHelpers.ts +10 -10
  626. package/src/utils/types/dataProcessing.ts +93 -92
  627. package/src/utils/types/typeHelpers.ts +31 -21
  628. package/src/utils/xssProtection.ts +96 -48
  629. package/dist/js/index-6NJ3A1Dn.js.map +0 -1
  630. package/dist/js/index-DffLRSro.js.map +0 -1
  631. package/src/components/form/Input/Input.enhanced.tsx +0 -732
  632. package/src/components/navigation/Menu/__tests__/Menu.test.tsx +0 -687
  633. package/src/components/navigation/Tree/Tree.styles.ts +0 -553
  634. package/src/components/navigation/Tree/Tree.test.basic.tsx +0 -7
  635. package/src/components/navigation/Tree/Tree.test.functional.tsx +0 -496
  636. package/src/components/navigation/Tree/Tree.test.import.check.tsx +0 -6
  637. package/src/components/navigation/Tree/Tree.test.import.tsx +0 -6
  638. package/src/components/navigation/Tree/Tree.test.minimal.tsx +0 -5
  639. package/src/components/navigation/Tree/Tree.test.simple.tsx +0 -30
  640. package/src/components/navigation/Tree/Tree.test.tsx +0 -908
  641. package/src/components/navigation/Tree/Tree.test.working.tsx +0 -673
  642. package/src/components/navigation/Tree/Tree.tsx +0 -600
  643. package/src/components/navigation/Tree/Tree.types.ts +0 -909
  644. package/src/components/navigation/Tree/Tree.utils.ts +0 -452
  645. package/src/components/navigation/Tree/index.ts +0 -33
  646. package/src/components/navigation/Tree/index.tsx +0 -23
  647. package/src/utils/network/http-client.test.ts +0 -18
@@ -1,16 +1,9 @@
1
- import React, { forwardRef, useState, useCallback, createContext } from 'react';
1
+ import React, { forwardRef, createContext } from 'react';
2
2
  import { Form as TaroForm } from '@tarojs/components';
3
3
  import type { ITouchEvent } from '@tarojs/components';
4
4
  import { formStyles } from './Form.styles';
5
- import type {
6
- FormProps,
7
- FormRef,
8
- FormInstance,
9
- FormContext,
10
- FormValues,
11
- FormErrors,
12
- FormFieldInfo,
13
- } from './Form.types';
5
+ import type { FormProps, FormRef, FormContext, FormErrors } from './Form.types';
6
+ import { useFormLogic } from './useFormLogic';
14
7
 
15
8
  // 创建表单上下文
16
9
  export const FormContextProvider = createContext<FormContext | null>(null);
@@ -20,480 +13,30 @@ export type { FormContext } from './Form.types';
20
13
 
21
14
  /** 表单组件 */
22
15
  export const FormComponent = forwardRef<FormRef, FormProps>((props, ref) => {
23
- const {
24
- initialValues = {},
25
- layout = 'horizontal',
26
- labelAlign = 'right',
27
- size = 'md',
28
- labelWidth = 120,
29
- labelSuffix,
30
- colon = true,
31
- requiredMark = true,
32
- rules = {},
33
- validateTrigger = 'onBlur',
34
- immediate = false,
35
- onSubmit,
36
- onReset,
37
- onValuesChange,
38
- onFieldsChange,
39
- onFinishFailed,
40
- className,
41
- style,
42
- accessible = true,
43
- accessibilityLabel,
44
- accessibilityRole = 'form',
45
- disabled = false,
46
- readonly = false,
47
- showValidateMessage = true,
48
- scrollToFirstError = true,
49
- preserve = true,
50
- children,
51
- ...restProps
52
- } = props;
16
+ const { layout = 'horizontal', size = 'md', className, style, children, ...restProps } = props;
53
17
 
54
18
  // Filter out React DOM event handlers that are incompatible with TaroForm
55
19
  const filteredProps = Object.fromEntries(
56
- Object.entries(restProps).filter(([key]) => !key.startsWith('on') || key.includes('Click') || key.includes('Touch'))
57
- );
58
-
59
-
60
- const [formInstance, setFormInstance] = useState<FormInstance>({
61
- values: { ...initialValues },
62
- errors: {},
63
- touched: {},
64
- validating: {},
65
- fields: {},
66
- rules: { ...rules },
67
- status: 'normal',
68
- disabled,
69
- readonly,
70
- });
71
-
72
- // 更新表单实例
73
- const updateFormInstance = useCallback((updates: Partial<FormInstance>) => {
74
- setFormInstance((prev): FormInstance => ({ ...prev, ...updates }));
75
- }, []);
76
-
77
- // 注册字段
78
- const registerField = useCallback((name: string, info: Partial<FormFieldInfo>) => {
79
- setFormInstance((prev): FormInstance => ({
80
- ...prev,
81
- fields: {
82
- ...prev.fields,
83
- [name]: {
84
- name,
85
- value: prev.values[name] ?? info.value ?? '',
86
- errors: [],
87
- touched: false,
88
- validating: false,
89
- rules: info.rules || [],
90
- ...info,
91
- },
92
- },
93
- }));
94
- }, []);
95
-
96
- // 注销字段
97
- const unregisterField = useCallback(
98
- (name: string) => {
99
- setFormInstance((prev): FormInstance => {
100
- const newFields: Record<string, FormFieldInfo> = { ...prev.fields };
101
- delete newFields[name];
102
-
103
- if (!preserve) {
104
- const newValues: FormValues = { ...prev.values };
105
- delete newValues[name];
106
-
107
- return {
108
- ...prev,
109
- fields: newFields,
110
- values: newValues,
111
- };
112
- }
113
-
114
- return { ...prev, fields: newFields };
115
- });
116
- },
117
- [preserve],
118
- );
119
-
120
- // 更新字段
121
- const updateField = useCallback((name: string, info: Partial<FormFieldInfo>) => {
122
- setFormInstance((prev): FormInstance => ({
123
- ...prev,
124
- fields: {
125
- ...prev.fields,
126
- [name]: {
127
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
128
- ...info,
129
- },
130
- },
131
- }));
132
- }, []);
133
-
134
- // 获取字段
135
- const getField = useCallback(
136
- (name: string): FormFieldInfo | null => {
137
- return formInstance.fields[name] || null;
138
- },
139
- [formInstance.fields],
140
- );
141
-
142
- // 设置字段值
143
- const setFieldValue = useCallback(
144
- (name: string, value: any) => {
145
- setFormInstance((prev): FormInstance => {
146
- const newValues: FormValues = { ...prev.values, [name]: value };
147
- const newFields: Record<string, FormFieldInfo> = {
148
- ...prev.fields,
149
- [name]: {
150
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
151
- value,
152
- },
153
- };
154
-
155
- // 触发值变化事件
156
- if (onValuesChange) {
157
- onValuesChange({ [name]: value }, newValues);
158
- }
159
-
160
- // 触发字段变化事件
161
- if (onFieldsChange) {
162
- const changedField = newFields[name] as FormFieldInfo;
163
- onFieldsChange([changedField], Object.values(newFields));
164
- }
165
-
166
- return {
167
- ...prev,
168
- values: newValues,
169
- fields: newFields,
170
- };
171
- });
172
- },
173
- [onValuesChange, onFieldsChange],
174
- );
175
-
176
- // 获取字段值
177
- const getFieldValue = useCallback(
178
- (name: string): any => {
179
- return formInstance.values[name];
180
- },
181
- [formInstance.values],
182
- );
183
-
184
- // 设置字段错误
185
- const setFieldError = useCallback((name: string, error: string | string[]) => {
186
- setFormInstance((prev): FormInstance => ({
187
- ...prev,
188
- errors: {
189
- ...prev.errors,
190
- [name]: Array.isArray(error) ? error : [error],
191
- },
192
- fields: {
193
- ...prev.fields,
194
- [name]: {
195
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
196
- errors: Array.isArray(error) ? error : [error],
197
- },
198
- },
199
- }));
200
- }, []);
201
-
202
- // 获取字段错误
203
- const getFieldError = useCallback(
204
- (name: string): string[] => {
205
- const errors = formInstance.errors[name];
206
- return Array.isArray(errors) ? errors : (errors ? [errors] : []);
207
- },
208
- [formInstance.errors],
209
- );
210
-
211
- // 设置字段 touched 状态
212
- const setFieldTouched = useCallback((name: string, touched: boolean) => {
213
- setFormInstance((prev): FormInstance => ({
214
- ...prev,
215
- touched: {
216
- ...prev.touched,
217
- [name]: touched,
218
- },
219
- fields: {
220
- ...prev.fields,
221
- [name]: {
222
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
223
- touched,
224
- },
225
- },
226
- }));
227
- }, []);
228
-
229
- // 设置字段 validating 状态
230
- const setFieldValidating = useCallback((name: string, validating: boolean) => {
231
- setFormInstance((prev): FormInstance => ({
232
- ...prev,
233
- validating: {
234
- ...prev.validating,
235
- [name]: validating,
236
- },
237
- fields: {
238
- ...prev.fields,
239
- [name]: {
240
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
241
- validating,
242
- },
243
- },
244
- }));
245
- }, []);
246
-
247
- // 验证单个字段
248
- const validateField = useCallback(
249
- async (name: string): Promise<{ valid: boolean; errors: string[]; value: any }> => {
250
- const field = formInstance.fields[name];
251
- if (!field) {
252
- return { valid: true, errors: [], value: undefined };
253
- }
254
-
255
- setFieldValidating(name, true);
256
- const errors: string[] = [];
257
-
258
- try {
259
- // 验证必填
260
- if (field.rules.some((rule) => rule.required)) {
261
- if (field.value === undefined || field.value === null || field.value === '') {
262
- const requiredRule = field.rules.find((rule) => rule.required);
263
- errors.push(requiredRule?.message || '此字段为必填项');
264
- }
265
- }
266
-
267
- // 验证长度
268
- if (typeof field.value === 'string') {
269
- field.rules.forEach((rule) => {
270
- if (rule.min !== undefined && field.value.length < rule.min) {
271
- errors.push(rule.message || `最少需要${rule.min}个字符`);
272
- }
273
- if (rule.max !== undefined && field.value.length > rule.max) {
274
- errors.push(rule.message || `最多允许${rule.max}个字符`);
275
- }
276
- });
277
- }
278
-
279
- // 验证数值范围
280
- if (typeof field.value === 'number') {
281
- field.rules.forEach((rule) => {
282
- if (rule.minValue !== undefined && field.value < rule.minValue) {
283
- errors.push(rule.message || `最小值为${rule.minValue}`);
284
- }
285
- if (rule.maxValue !== undefined && field.value > rule.maxValue) {
286
- errors.push(rule.message || `最大值为${rule.maxValue}`);
287
- }
288
- });
289
- }
290
-
291
- // 验证正则表达式
292
- field.rules.forEach((rule) => {
293
- if (rule.pattern && typeof field.value === 'string' && !rule.pattern.test(field.value)) {
294
- errors.push(rule.message || '输入格式不正确');
295
- }
296
- });
297
-
298
- // 验证枚举值
299
- field.rules.forEach((rule) => {
300
- if (rule.enum && !rule.enum.includes(field.value)) {
301
- errors.push(rule.message || '输入值不在允许范围内');
302
- }
303
- });
304
-
305
- // 自定义验证函数
306
- for (const rule of field.rules) {
307
- if (rule.validator) {
308
- try {
309
- const result = rule.validator(field.value, formInstance.values);
310
- if (typeof result === 'string') {
311
- errors.push(result);
312
- } else if (!result) {
313
- errors.push(rule.message || '验证失败');
314
- }
315
- } catch (error) {
316
- errors.push(rule.message || '验证失败');
317
- }
318
- }
319
- }
320
-
321
- // 异步验证函数
322
- for (const rule of field.rules) {
323
- if (rule.asyncValidator) {
324
- try {
325
- const result = await rule.asyncValidator(field.value, formInstance.values);
326
- if (typeof result === 'string') {
327
- errors.push(result);
328
- } else if (!result) {
329
- errors.push(rule.message || '验证失败');
330
- }
331
- } catch (error) {
332
- errors.push(rule.message || '验证失败');
333
- }
334
- }
335
- }
336
-
337
- setFieldError(name, errors);
338
- return { valid: errors.length === 0, errors, value: field.value };
339
- } finally {
340
- setFieldValidating(name, false);
341
- }
342
- },
343
- [formInstance, setFieldError, setFieldValidating],
20
+ Object.entries(restProps).filter(
21
+ ([key]) => !key.startsWith('on') || key.includes('Click') || key.includes('Touch'),
22
+ ),
344
23
  );
345
24
 
346
- // 重置字段
347
- const resetField = useCallback((name: string) => {
348
- setFormInstance((prev): FormInstance => {
349
- const field = prev.fields[name];
350
- if (!field) return prev;
351
-
352
- const defaultValue = field.rules.find((rule) => rule.defaultValue !== undefined)?.defaultValue;
353
- const newValues: FormValues = { ...prev.values, [name]: defaultValue };
354
- const newFields: Record<string, FormFieldInfo> = {
355
- ...prev.fields,
356
- [name]: {
357
- ...field,
358
- value: defaultValue,
359
- errors: [],
360
- touched: false,
361
- validating: false,
362
- },
363
- };
364
-
365
- return {
366
- ...prev,
367
- values: newValues,
368
- fields: newFields,
369
- errors: { ...prev.errors, [name]: [] },
370
- touched: { ...prev.touched, [name]: false },
371
- validating: { ...prev.validating, [name]: false },
372
- };
373
- });
374
- }, []);
375
-
376
- // 创建表单上下文
377
- const formContext: FormContext = {
378
- form: formInstance,
379
- config: {
380
- layout,
381
- labelAlign,
382
- size,
383
- labelWidth,
384
- labelSuffix,
385
- colon,
386
- requiredMark,
387
- validateTrigger,
388
- showValidateMessage,
389
- disabled,
390
- readonly,
391
- },
392
- styleConfig: formStyles['getStyleConfig'](),
393
- registerField,
394
- unregisterField,
395
- updateField,
396
- getField,
25
+ const {
26
+ formInstance,
27
+ formContext,
28
+ handleSubmit,
29
+ handleReset,
30
+ updateFormInstance,
397
31
  setFieldValue,
398
- getFieldValue,
399
32
  setFieldError,
400
- getFieldError,
401
33
  setFieldTouched,
402
34
  setFieldValidating,
403
35
  validateField,
404
36
  resetField,
405
- };
406
-
407
- // 处理表单提交
408
- const handleSubmit = useCallback(
409
- async (event: any) => {
410
- event.preventDefault?.();
411
-
412
- // 验证所有字段
413
- const validationResults = await Promise.all(Object.keys(formInstance.fields).map((name) => validateField(name)));
414
-
415
- const hasErrors = validationResults.some((result) => !result.valid);
416
-
417
- if (hasErrors) {
418
- const errors: FormErrors = {};
419
- validationResults.forEach((result, index) => {
420
- const fieldName = Object.keys(formInstance.fields)[index];
421
- if (fieldName && !result.valid) {
422
- errors[fieldName] = result.errors;
423
- }
424
- });
425
-
426
- onFinishFailed?.(errors, formInstance.values);
427
- return;
428
- }
429
-
430
- // 提交表单
431
- try {
432
- // Create a synthetic event for compatibility
433
- const syntheticEvent = {
434
- preventDefault: () => {},
435
- stopPropagation: () => {},
436
- ...event
437
- } as ITouchEvent;
438
-
439
- await onSubmit?.(formInstance.values, syntheticEvent);
440
- } catch (error) {
441
- console.error('Form submission error:', error);
442
- }
443
- },
444
- [formInstance, validateField, onSubmit, onFinishFailed],
445
- );
446
-
447
- // 处理表单重置
448
- const handleReset = useCallback(
449
- (event: any) => {
450
- setFormInstance((prev): FormInstance => {
451
- const newValues: FormValues = {};
452
- const newFields: Record<string, FormFieldInfo> = {};
453
- const newErrors: FormErrors = {};
454
- const newTouched: Record<string, boolean> = {};
455
- const newValidating: Record<string, boolean> = {};
456
-
457
- Object.keys(prev.fields).forEach((name) => {
458
- const field = prev.fields[name];
459
- if (field) {
460
- const defaultValue = field.rules.find((rule) => rule.defaultValue !== undefined)?.defaultValue;
461
- newValues[name] = defaultValue;
462
- newFields[name] = {
463
- name: field.name,
464
- value: defaultValue,
465
- errors: [],
466
- touched: false,
467
- validating: false,
468
- rules: field.rules,
469
- };
470
- newErrors[name] = [];
471
- newTouched[name] = false;
472
- newValidating[name] = false;
473
- }
474
- });
475
-
476
- return {
477
- ...prev,
478
- values: newValues,
479
- fields: newFields,
480
- errors: newErrors,
481
- touched: newTouched,
482
- validating: newValidating,
483
- };
484
- });
485
-
486
- // Create a synthetic event for compatibility
487
- const syntheticEvent = {
488
- preventDefault: () => {},
489
- stopPropagation: () => {},
490
- ...event
491
- } as ITouchEvent;
492
-
493
- onReset?.(formInstance.values, syntheticEvent);
494
- },
495
- [formInstance.values, onReset],
496
- );
37
+ updateField,
38
+ getFieldError,
39
+ } = useFormLogic(props);
497
40
 
498
41
  // 暴露给外部的引用方法
499
42
  React.useImperativeHandle(
@@ -501,10 +44,9 @@ export const FormComponent = forwardRef<FormRef, FormProps>((props, ref) => {
501
44
  () => ({
502
45
  getValues: () => formInstance.values,
503
46
  setValues: (values) => {
504
- setFormInstance((prev): FormInstance => ({
505
- ...prev,
506
- values: { ...prev.values, ...values },
507
- }));
47
+ updateFormInstance({
48
+ values: { ...formInstance.values, ...values },
49
+ });
508
50
  },
509
51
  getFieldValue: (name) => formInstance.values[name],
510
52
  setFieldValue: (name, value) => setFieldValue(name, value),
@@ -531,11 +73,11 @@ export const FormComponent = forwardRef<FormRef, FormProps>((props, ref) => {
531
73
  }
532
74
  });
533
75
 
534
- onFinishFailed?.(errors, formInstance.values);
76
+ props.onFinishFailed?.(errors, formInstance.values);
535
77
  throw errors;
536
78
  }
537
79
 
538
- await onSubmit?.(formInstance.values, {} as ITouchEvent);
80
+ await props.onSubmit?.(formInstance.values, {} as ITouchEvent);
539
81
  },
540
82
  validate: async (fields) => {
541
83
  const fieldNames = fields || Object.keys(formInstance.fields);
@@ -583,17 +125,13 @@ export const FormComponent = forwardRef<FormRef, FormProps>((props, ref) => {
583
125
  if (fields) {
584
126
  fields.forEach((name) => setFieldError(name, []));
585
127
  } else {
586
- setFormInstance((prev): FormInstance => ({
587
- ...prev,
588
- errors: {},
589
- }));
128
+ updateFormInstance({ errors: {} });
590
129
  }
591
130
  },
592
131
  setErrors: (errors) => {
593
- setFormInstance((prev): FormInstance => ({
594
- ...prev,
595
- errors: { ...prev.errors, ...errors },
596
- }));
132
+ updateFormInstance({
133
+ errors: { ...formInstance.errors, ...errors },
134
+ });
597
135
  },
598
136
  getFieldError: (name) => getFieldError(name),
599
137
  getErrors: () => formInstance.errors,
@@ -617,46 +155,70 @@ export const FormComponent = forwardRef<FormRef, FormProps>((props, ref) => {
617
155
  });
618
156
  },
619
157
  addFieldRules: (name, newRules) => {
620
- setFormInstance((prev): FormInstance => ({
621
- ...prev,
158
+ updateFormInstance({
622
159
  rules: {
623
- ...prev.rules,
624
- [name]: [...(prev.rules[name] || []), ...newRules],
160
+ ...formInstance.rules,
161
+ [name]: [...(formInstance.rules[name] || []), ...newRules],
625
162
  },
626
163
  fields: {
627
- ...prev.fields,
164
+ ...formInstance.fields,
628
165
  [name]: {
629
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
630
- rules: [...(prev.fields[name]?.rules || []), ...newRules],
166
+ ...(formInstance.fields[name] || {
167
+ name,
168
+ value: '',
169
+ errors: [],
170
+ touched: false,
171
+ validating: false,
172
+ rules: [],
173
+ }),
174
+ rules: [...(formInstance.fields[name]?.rules || []), ...newRules],
631
175
  },
632
176
  },
633
- }));
177
+ });
634
178
  },
635
179
  removeFieldRules: (name) => {
636
- setFormInstance((prev): FormInstance => ({
637
- ...prev,
638
- rules: { ...prev.rules, [name]: [] },
180
+ updateFormInstance({
181
+ rules: { ...formInstance.rules, [name]: [] },
639
182
  fields: {
640
- ...prev.fields,
183
+ ...formInstance.fields,
641
184
  [name]: {
642
- ...(prev.fields[name] || { name, value: '', errors: [], touched: false, validating: false, rules: [] }),
185
+ ...(formInstance.fields[name] || {
186
+ name,
187
+ value: '',
188
+ errors: [],
189
+ touched: false,
190
+ validating: false,
191
+ rules: [],
192
+ }),
643
193
  rules: [],
644
194
  },
645
195
  },
646
- }));
196
+ });
647
197
  },
648
198
  getFieldRules: (name) => formInstance.rules[name] || [],
649
199
  setStatus: (status) => updateFormInstance({ status }),
650
200
  getStatus: () => formInstance.status,
651
201
  setDisabled: (disabled) => updateFormInstance({ disabled }),
652
202
  setReadonly: (readonly) => updateFormInstance({ readonly }),
653
- scrollToField: (name) => {
203
+ scrollToField: (_name) => {
654
204
  // 在实际实现中,这里会滚动到指定字段
655
- console.log('Scroll to field:', name);
656
205
  },
657
206
  getFormInstance: () => formInstance,
658
207
  }),
659
- [formInstance, validateField, setFieldValue, updateField, updateFormInstance, onFinishFailed, onSubmit],
208
+ [
209
+ formInstance,
210
+ validateField,
211
+ setFieldValue,
212
+ updateField,
213
+ updateFormInstance,
214
+ props.onFinishFailed,
215
+ props.onSubmit,
216
+ setFieldError,
217
+ getFieldError,
218
+ setFieldTouched,
219
+ setFieldValidating,
220
+ resetField,
221
+ ],
660
222
  );
661
223
 
662
224
  // 生成表单样式
@@ -85,7 +85,22 @@ export interface FormFieldInfo {
85
85
  export type FormNativeProps = FormHTMLAttributes<HTMLFormElement>;
86
86
 
87
87
  /** 表单组件属性接口 */
88
- export interface FormProps extends Omit<FormNativeProps, 'onSubmit' | 'onReset' | 'dangerouslySetInnerHTML' | 'onTouchStart' | 'onTouchMove' | 'onTouchEnd' | 'onTouchCancel' | 'onClick' | 'onMouseDown' | 'onMouseUp' | 'onMouseOver' | 'onMouseOut'> {
88
+ export interface FormProps
89
+ extends Omit<
90
+ FormNativeProps,
91
+ | 'onSubmit'
92
+ | 'onReset'
93
+ | 'dangerouslySetInnerHTML'
94
+ | 'onTouchStart'
95
+ | 'onTouchMove'
96
+ | 'onTouchEnd'
97
+ | 'onTouchCancel'
98
+ | 'onClick'
99
+ | 'onMouseDown'
100
+ | 'onMouseUp'
101
+ | 'onMouseOver'
102
+ | 'onMouseOut'
103
+ > {
89
104
  /** 表单初始值 */
90
105
  initialValues?: FormValues;
91
106
  /** 表单布局 */