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,4 +1,5 @@
1
1
  import React, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';
2
+ import { chooseImage } from '@tarojs/taro';
2
3
  import { View } from '@tarojs/components';
3
4
  import { Button } from '../../basic/Button';
4
5
  import { Text } from '../../basic/Text';
@@ -40,7 +41,6 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
40
41
  } = props;
41
42
 
42
43
  const containerRef = useRef(null);
43
- const fileInputRef = useRef<HTMLInputElement>(null);
44
44
  const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList);
45
45
  const [uploading, setUploading] = useState(false);
46
46
  const [internalDisabled, setInternalDisabled] = useState(disabled);
@@ -68,67 +68,76 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
68
68
 
69
69
  // 验证文件
70
70
  const validateFile = useCallback(
71
- (file: File): { valid: boolean; error?: string } => {
72
- if (accept && !file.type.match(accept.replace('*', '.*'))) {
73
- return { valid: false, error: `File type ${file.type} is not supported` };
71
+ (file: any): { valid: boolean; error?: string } => {
72
+ const filename = file.name || file.path.split('/').pop() || '';
73
+ const fileSize = file.size || 0;
74
+
75
+ if (accept) {
76
+ const ext = filename.split('.').pop()?.toLowerCase();
77
+ if (ext) {
78
+ const allowedExts = accept
79
+ .replace(/\*\/\*|\*/g, '')
80
+ .split(',')
81
+ .map((e) => e.trim().replace('.', ''));
82
+ if (allowedExts.length > 0 && !allowedExts.includes(ext)) {
83
+ return { valid: false, error: `File type .${ext} is not supported` };
84
+ }
85
+ }
74
86
  }
75
-
76
- if (maxSize && file.size > maxSize) {
77
- return { valid: false, error: `File size ${file.size} exceeds maximum size ${maxSize}` };
87
+
88
+ if (maxSize && fileSize > maxSize) {
89
+ return { valid: false, error: `File size ${fileSize} exceeds maximum size ${maxSize}` };
78
90
  }
79
-
91
+
80
92
  return { valid: true };
81
93
  },
82
94
  [accept, maxSize],
83
95
  );
84
96
 
85
- // 处理文件选择
86
- const handleFileSelect = useCallback(
87
- (files: FileList | null) => {
88
- if (!files || internalDisabled) return;
89
-
90
- const fileArray = Array.from(files);
91
- const validFiles = fileArray.filter(file => {
92
- const validation = validateFile(file);
93
- if (!validation.valid) {
94
- onError?.(new Error(validation.error!), file);
95
- }
96
- return validation.valid;
97
- });
97
+ // 移除文件
98
+ const handleRemove = useCallback(
99
+ (file: UploadFile) => {
100
+ const newFileList = fileList.filter((f) => f.uid !== file.uid);
101
+ handleFileChange(newFileList);
102
+ onRemove?.(file);
103
+ },
104
+ [fileList, handleFileChange, onRemove],
105
+ );
98
106
 
99
- const limitedFiles = maxCount ? validFiles.slice(0, maxCount - fileList.length) : validFiles;
100
-
101
- limitedFiles.forEach(file => {
102
- uploadFile(file);
103
- });
107
+ // 预览文件
108
+ const handlePreview = useCallback(
109
+ (file: UploadFile) => {
110
+ onPreview?.(file);
104
111
  },
105
- [internalDisabled, validateFile, maxCount, fileList.length, onError],
112
+ [onPreview],
106
113
  );
107
114
 
108
115
  // 上传文件
109
116
  const uploadFile = useCallback(
110
- async (file: File) => {
117
+ async (file: any, tempFilePath: string) => {
111
118
  if (internalDisabled) return;
112
119
 
113
120
  try {
114
121
  // 上传前验证
115
122
  if (beforeUpload) {
116
- const result = await beforeUpload(file);
123
+ // 由于 Taro 没有原生 File 对象,这里模拟一个类似的对象
124
+ const mockFile = {
125
+ ...file,
126
+ type: `image/${file.path.split('.').pop()}`,
127
+ };
128
+ const result = await beforeUpload(mockFile as any);
117
129
  if (result === false) return;
118
- if (result instanceof File) {
119
- file = result;
120
- }
121
130
  }
122
131
 
123
132
  const uidString = String(Date.now() + Math.random());
124
133
  const newFile: UploadFile = {
125
134
  uid: uidString,
126
- name: file.name,
135
+ name: file.path.split('/').pop() || 'unknown_file',
127
136
  size: file.size,
128
- type: file.type,
137
+ type: `image/${file.path.split('.').pop()}`,
129
138
  status: 'uploading',
130
139
  percent: 0,
131
- originFileObj: file,
140
+ url: tempFilePath,
132
141
  };
133
142
 
134
143
  const newFileList = [...fileList, newFile];
@@ -137,100 +146,161 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
137
146
 
138
147
  // 上传逻辑
139
148
  if (customRequest) {
149
+ // 自定义上传,提供模拟的 File 对象
150
+ const mockFile = {
151
+ ...file,
152
+ type: `image/${file.path.split('.').pop()}`,
153
+ };
140
154
  await customRequest({
141
- file,
142
- filename: file.name,
155
+ file: mockFile as any,
156
+ filename: mockFile.name,
143
157
  data: {},
144
158
  headers,
145
159
  withCredentials,
146
160
  action: action || '',
147
161
  onProgress: (percent: number) => {
148
- const updatedFileList: UploadFile[] = fileList.map(f =>
149
- f.uid === uidString ? { ...f, percent, status: 'uploading' as const } : f
162
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
163
+ f.uid === uidString ? { ...f, percent, status: 'uploading' as const } : f,
150
164
  );
151
165
  handleFileChange(updatedFileList);
152
- onProgress?.(percent, file);
166
+ onProgress?.(percent, mockFile as any);
153
167
  },
154
168
  onSuccess: (response: any) => {
155
- const updatedFileList: UploadFile[] = fileList.map(f =>
156
- f.uid === uidString ? { ...f, status: 'done' as const, response } : f
169
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
170
+ f.uid === uidString ? { ...f, status: 'done' as const, response } : f,
157
171
  );
158
172
  handleFileChange(updatedFileList);
159
- onSuccess?.(response, file);
173
+ onSuccess?.(response, mockFile as any);
160
174
  setUploading(false);
161
175
  },
162
176
  onError: (error: Error) => {
163
- const updatedFileList: UploadFile[] = fileList.map(f =>
164
- f.uid === uidString ? { ...f, status: 'error' as const, error } : f
177
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
178
+ f.uid === uidString ? { ...f, status: 'error' as const, error } : f,
165
179
  );
166
180
  handleFileChange(updatedFileList);
167
- onError?.(error, file);
181
+ onError?.(error, mockFile as any);
168
182
  setUploading(false);
169
183
  },
170
184
  });
185
+ } else if (action) {
186
+ // 使用 Taro API 上传文件
187
+ import('@tarojs/taro').then(({ uploadFile: taroUploadFile }) => {
188
+ taroUploadFile({
189
+ url: action,
190
+ filePath: tempFilePath,
191
+ name: 'file',
192
+ header: headers,
193
+ formData: {},
194
+ success: (res: any) => {
195
+ const response = res.data;
196
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
197
+ f.uid === uidString ? { ...f, status: 'done' as const, response } : f,
198
+ );
199
+ handleFileChange(updatedFileList);
200
+ onSuccess?.(response, file as any);
201
+ setUploading(false);
202
+ },
203
+ fail: (err: any) => {
204
+ const error = new Error(err.errMsg);
205
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
206
+ f.uid === uidString ? { ...f, status: 'error' as const, error } : f,
207
+ );
208
+ handleFileChange(updatedFileList);
209
+ onError?.(error, file as any);
210
+ setUploading(false);
211
+ },
212
+ });
213
+ });
171
214
  } else {
172
- // 模拟上传
215
+ // 模拟上传(用于演示)
173
216
  for (let percent = 0; percent <= 100; percent += 10) {
174
- const updatedFileList: UploadFile[] = fileList.map(f =>
175
- f.uid === uidString ? { ...f, percent, status: 'uploading' as const } : f
217
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
218
+ f.uid === uidString ? { ...f, percent, status: 'uploading' as const } : f,
176
219
  );
177
220
  handleFileChange(updatedFileList);
178
- onProgress?.(percent, file);
179
- await new Promise(resolve => setTimeout(resolve, 100));
221
+ onProgress?.(percent, file as any);
222
+ await new Promise((resolve) => setTimeout(resolve, 100));
180
223
  }
181
224
 
182
- const updatedFileList: UploadFile[] = fileList.map(f =>
183
- f.uid === uidString ? { ...f, status: 'done' as const, response: { success: true } } : f
225
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
226
+ f.uid === uidString ? { ...f, status: 'done' as const, response: { success: true } } : f,
184
227
  );
185
228
  handleFileChange(updatedFileList);
186
- onSuccess?.({ success: true }, file);
229
+ onSuccess?.({ success: true }, file as any);
187
230
  setUploading(false);
188
231
  }
189
232
  } catch (error) {
190
233
  // Find the uploading file (the most recent one) and mark it as error
191
- const uploadingFile = fileList.find(f => f.status === 'uploading');
234
+ const uploadingFile = fileList.find((f) => f.status === 'uploading');
192
235
  if (uploadingFile) {
193
236
  const errorObj = error instanceof Error ? error : new Error(String(error));
194
- const updatedFileList: UploadFile[] = fileList.map(f =>
195
- f.uid === uploadingFile.uid ? { ...f, status: 'error' as const, error: errorObj } : f
237
+ const updatedFileList: UploadFile[] = fileList.map((f) =>
238
+ f.uid === uploadingFile.uid ? { ...f, status: 'error' as const, error: errorObj } : f,
196
239
  );
197
240
  handleFileChange(updatedFileList);
198
241
  }
199
- onError?.(error as Error, file);
242
+ onError?.(error as Error, file as any);
200
243
  setUploading(false);
201
244
  }
202
245
  },
203
- [internalDisabled, beforeUpload, customRequest, action, headers, withCredentials, fileList, handleFileChange, onProgress, onSuccess, onError],
246
+ [
247
+ internalDisabled,
248
+ beforeUpload,
249
+ customRequest,
250
+ action,
251
+ headers,
252
+ withCredentials,
253
+ fileList,
254
+ handleFileChange,
255
+ onProgress,
256
+ onSuccess,
257
+ onError,
258
+ ],
204
259
  );
205
260
 
206
- // 移除文件
207
- const handleRemove = useCallback(
208
- (file: UploadFile) => {
209
- const newFileList = fileList.filter(f => f.uid !== file.uid);
210
- handleFileChange(newFileList);
211
- onRemove?.(file);
212
- },
213
- [fileList, handleFileChange, onRemove],
214
- );
261
+ // 处理文件选择
262
+ const handleFileSelect = useCallback(async () => {
263
+ if (internalDisabled) return;
264
+
265
+ try {
266
+ // 使用 Taro API 选择图片
267
+ const { tempFilePaths, tempFiles } = await chooseImage({
268
+ count: maxCount ? Math.max(0, maxCount - fileList.length) : 9,
269
+ sizeType: ['original', 'compressed'],
270
+ sourceType: ['album', 'camera'],
271
+ });
215
272
 
216
- // 预览文件
217
- const handlePreview = useCallback(
218
- (file: UploadFile) => {
219
- onPreview?.(file);
220
- },
221
- [onPreview],
222
- );
273
+ // 过滤有效的文件
274
+ const validFiles = tempFiles.filter((file) => {
275
+ const validation = validateFile(file);
276
+ if (!validation.valid) {
277
+ onError?.(new Error(validation.error!), file as any);
278
+ }
279
+ return validation.valid;
280
+ });
281
+
282
+ // 上传有效文件
283
+ for (const file of validFiles) {
284
+ const index = validFiles.indexOf(file);
285
+ if (tempFilePaths[index]) {
286
+ await uploadFile(file, tempFilePaths[index]);
287
+ }
288
+ }
289
+ } catch (error) {
290
+ // 处理取消选择等情况
291
+ if ((error as any).errMsg !== 'chooseImage:fail cancel') {
292
+ onError?.(error as Error, {} as any);
293
+ }
294
+ }
295
+ }, [internalDisabled, validateFile, maxCount, fileList.length, onError, uploadFile, fileList]);
223
296
 
224
-
225
297
  // 处理点击事件
226
298
  const handleClick = useCallback(
227
299
  (_event: ITouchEvent) => {
228
300
  if (internalDisabled) return;
229
- if (fileInputRef.current) {
230
- fileInputRef.current.click();
231
- }
301
+ handleFileSelect();
232
302
  },
233
- [internalDisabled],
303
+ [internalDisabled, handleFileSelect],
234
304
  );
235
305
 
236
306
  // 暴露给外部的引用方法
@@ -242,12 +312,17 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
242
312
  clearFileList: () => {
243
313
  handleFileChange([]);
244
314
  },
245
- upload: (file: File) => {
246
- uploadFile(file);
315
+ upload: (file: any, tempFilePath?: string) => {
316
+ if (tempFilePath) {
317
+ uploadFile(file, tempFilePath);
318
+ } else {
319
+ // 如果只提供了文件路径,直接上传
320
+ uploadFile({ path: file, size: 0 }, file);
321
+ }
247
322
  },
248
323
  abort: (file: UploadFile) => {
249
- const newFileList: UploadFile[] = fileList.map(f =>
250
- f.uid === file.uid ? { ...f, status: 'error' as const, error: new Error('Upload aborted') } : f
324
+ const newFileList: UploadFile[] = fileList.map((f) =>
325
+ f.uid === file.uid ? { ...f, status: 'error' as const, error: new Error('Upload aborted') } : f,
251
326
  );
252
327
  handleFileChange(newFileList);
253
328
  },
@@ -293,7 +368,7 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
293
368
  // 生成文件项样式
294
369
  const fileItemStyle = {
295
370
  display: 'flex',
296
- justifyContent: 'space-between',
371
+ justifyContent: 'space-between' as const,
297
372
  alignItems: 'center',
298
373
  padding: '12px',
299
374
  borderBottom: '1px solid #e5e7eb',
@@ -324,10 +399,11 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
324
399
 
325
400
  // 无障碍状态
326
401
  const finalAccessibilityState = {
327
- disabled: internalDisabled, busy: uploading, ...accessibilityState,
402
+ disabled: internalDisabled,
403
+ busy: uploading,
404
+ ...accessibilityState,
328
405
  };
329
406
 
330
-
331
407
  // 渲染上传按钮
332
408
  const renderUploadButton = useCallback(() => {
333
409
  if (children) {
@@ -337,14 +413,12 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
337
413
  return (
338
414
  <Button
339
415
  type="primary"
340
- size="small"
341
- disabled={internalDisabled || !!maxCount && fileList.length >= maxCount}
416
+ size="sm"
417
+ disabled={internalDisabled || (!!maxCount && fileList.length >= maxCount)}
342
418
  loading={uploading}
343
419
  style={buttonStyle}
344
420
  >
345
- <Text style={{ color: '#ffffff', fontSize: 12 }}>
346
- {multiple ? '选择文件' : '上传文件'}
347
- </Text>
421
+ <Text style={{ color: '#ffffff', fontSize: 12 }}>{multiple ? '选择文件' : '上传文件'}</Text>
348
422
  </Button>
349
423
  );
350
424
  }, [children, internalDisabled, maxCount, fileList.length, uploading, multiple, buttonStyle]);
@@ -355,41 +429,21 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
355
429
 
356
430
  return (
357
431
  <View style={fileListStyle}>
358
- {fileList.map(file => (
432
+ {fileList.map((file) => (
359
433
  <View key={file.uid} style={fileItemStyle}>
360
434
  <View style={fileInfoStyle}>
361
- <Text style={{ fontSize: 14, color: '#374151', fontWeight: 500 }}>
362
- {file.name}
363
- </Text>
364
- <Text style={{ fontSize: 12, color: '#6b7280' }}>
365
- {(file.size / 1024).toFixed(2)} KB
366
- </Text>
367
- {file.status === 'uploading' && (
368
- <Text style={{ fontSize: 12, color: '#3b82f6' }}>
369
- {file.percent}%
370
- </Text>
371
- )}
372
- {file.status === 'error' && (
373
- <Text style={{ fontSize: 12, color: '#ef4444' }}>
374
- 上传失败
375
- </Text>
376
- )}
435
+ <Text style={{ fontSize: 14, color: '#374151', fontWeight: 500 }}>{file.name}</Text>
436
+ <Text style={{ fontSize: 12, color: '#6b7280' }}>{(file.size / 1024).toFixed(2)} KB</Text>
437
+ {file.status === 'uploading' && <Text style={{ fontSize: 12, color: '#3b82f6' }}>{file.percent}%</Text>}
438
+ {file.status === 'error' && <Text style={{ fontSize: 12, color: '#ef4444' }}>上传失败</Text>}
377
439
  </View>
378
440
  <View style={fileActionsStyle}>
379
441
  {file.status === 'done' && onPreview && (
380
- <Button
381
- size="small"
382
- onClick={() => handlePreview(file)}
383
- style={{ ...buttonStyle, color: '#3b82f6' }}
384
- >
442
+ <Button size="sm" onClick={() => handlePreview(file)} style={{ ...buttonStyle, color: '#3b82f6' }}>
385
443
  <Text style={{ fontSize: 12 }}>预览</Text>
386
444
  </Button>
387
445
  )}
388
- <Button
389
- size="small"
390
- onClick={() => handleRemove(file)}
391
- style={{ ...buttonStyle, color: '#ef4444' }}
392
- >
446
+ <Button size="sm" onClick={() => handleRemove(file)} style={{ ...buttonStyle, color: '#ef4444' }}>
393
447
  <Text style={{ fontSize: 12 }}>删除</Text>
394
448
  </Button>
395
449
  </View>
@@ -397,7 +451,16 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
397
451
  ))}
398
452
  </View>
399
453
  );
400
- }, [showUploadList, fileList, handlePreview, handleRemove, fileItemStyle, fileInfoStyle, fileActionsStyle, buttonStyle]);
454
+ }, [
455
+ showUploadList,
456
+ fileList,
457
+ handlePreview,
458
+ handleRemove,
459
+ fileItemStyle,
460
+ fileInfoStyle,
461
+ fileActionsStyle,
462
+ buttonStyle,
463
+ ]);
401
464
 
402
465
  return (
403
466
  <View
@@ -410,34 +473,18 @@ export const UploadComponent = forwardRef<UploadRef, UploadProps>((props, ref) =
410
473
  {...restProps}
411
474
  >
412
475
  {drag ? (
413
- <View
414
- style={dragAreaStyle}
415
- >
476
+ <View style={dragAreaStyle}>
416
477
  <View style={{ marginBottom: '12px' }}>
417
- <Text style={{ fontSize: 14, color: '#6b7280', marginBottom: '8px' }}>
418
- 拖拽文件到此处或
419
- </Text>
420
- {renderUploadButton()}
478
+ <Text style={{ fontSize: 14, color: '#6b7280', marginBottom: '8px' }}>拖拽文件到此处或</Text>
479
+ <View onClick={handleClick}>{renderUploadButton()}</View>
421
480
  </View>
422
481
  </View>
423
482
  ) : (
424
483
  <View style={{ marginBottom: '16px' }}>
425
- <input
426
- ref={fileInputRef}
427
- type="file"
428
- accept={accept}
429
- multiple={multiple}
430
- disabled={Boolean(internalDisabled || Boolean(maxCount && fileList.length >= maxCount))}
431
- onChange={(e) => handleFileSelect(e.target.files)}
432
- style={{ display: 'none' }}
433
- id="upload-input"
434
- />
435
- <View onClick={handleClick}>
436
- {renderUploadButton()}
437
- </View>
484
+ <View onClick={handleClick}>{renderUploadButton()}</View>
438
485
  </View>
439
486
  )}
440
-
487
+
441
488
  {renderFileList()}
442
489
  </View>
443
490
  );
@@ -448,4 +495,4 @@ UploadComponent.displayName = 'Upload';
448
495
 
449
496
  /** 导出上传组件 */
450
497
  export const Upload = UploadComponent;
451
- export default Upload;
498
+ export default Upload;
@@ -47,7 +47,7 @@ export interface UploadProps {
47
47
  /** 是否携带cookie */
48
48
  withCredentials?: boolean;
49
49
  /** 上传前的钩子 */
50
- beforeUpload?: (_file: File) => Promise<boolean | File> | boolean | File;
50
+ beforeUpload?: (_file: any) => Promise<boolean | any> | boolean | any;
51
51
  /** 自定义上传方法 */
52
52
  customRequest?: (_options: UploadRequestOptions) => Promise<void>;
53
53
  /** 文件状态改变的回调 */
@@ -57,11 +57,11 @@ export interface UploadProps {
57
57
  /** 预览文件的回调 */
58
58
  onPreview?: (_file: UploadFile) => void;
59
59
  /** 上传成功的回调 */
60
- onSuccess?: (_response: any, _file: File) => void;
60
+ onSuccess?: (_response: any, _file: any) => void;
61
61
  /** 上传失败的回调 */
62
- onError?: (_error: Error, _file: File) => void;
62
+ onError?: (_error: Error, _file: any) => void;
63
63
  /** 上传进度的回调 */
64
- onProgress?: (_percent: number, _file: File) => void;
64
+ onProgress?: (_percent: number, _file: any) => void;
65
65
  /** 是否显示文件列表 */
66
66
  showUploadList?: boolean;
67
67
  /** 列表样式 */
@@ -91,7 +91,7 @@ export interface UploadProps {
91
91
 
92
92
  export interface UploadRequestOptions {
93
93
  /** 文件对象 */
94
- file: File;
94
+ file: any;
95
95
  /** 文件名 */
96
96
  filename: string;
97
97
  /** 附加数据 */
@@ -116,7 +116,7 @@ export interface UploadRef {
116
116
  /** 清空文件列表 */
117
117
  clearFileList: () => void;
118
118
  /** 上传文件 */
119
- upload: (file: File) => void;
119
+ upload: (file: any, tempFilePath?: string) => void;
120
120
  /** 中止上传 */
121
121
  abort: (file: UploadFile) => void;
122
122
  }
@@ -136,20 +136,20 @@ export interface UploadLocale {
136
136
  maxCountError: string;
137
137
  }
138
138
 
139
- export interface UploadUtils {
139
+ export interface UploadUtilsType {
140
140
  /** 格式化文件大小 */
141
141
  formatFileSize: (bytes: number) => string;
142
142
  /** 获取文件扩展名 */
143
143
  getFileExtension: (filename: string) => string;
144
144
  /** 检查文件类型 */
145
- checkFileType: (file: File, accept: string) => boolean;
145
+ checkFileType: (file: any, accept: string) => boolean;
146
146
  /** 检查文件大小 */
147
- checkFileSize: (file: File, maxSize: number) => boolean;
147
+ checkFileSize: (file: any, maxSize: number) => boolean;
148
148
  /** 生成文件预览URL */
149
- generatePreviewUrl: (file: File) => Promise<string>;
149
+ generatePreviewUrl: (file: any) => Promise<string>;
150
150
  }
151
151
 
152
- export const UploadUtils: UploadUtils = {
152
+ export const UploadUtils: UploadUtilsType = {
153
153
  formatFileSize: (bytes: number) => {
154
154
  if (bytes === 0) return '0 Bytes';
155
155
 
@@ -161,40 +161,40 @@ export const UploadUtils: UploadUtils = {
161
161
  },
162
162
 
163
163
  getFileExtension: (filename: string) => {
164
- return filename.slice((filename.lastIndexOf('.') - 1 >>> 0) + 2);
164
+ return filename.slice(((filename.lastIndexOf('.') - 1) >>> 0) + 2);
165
165
  },
166
166
 
167
- checkFileType: (file: File, accept: string) => {
168
- const acceptTypes = accept.split(',').map(type => type.trim());
169
- return acceptTypes.some(type => {
167
+ checkFileType: (file: any, accept: string) => {
168
+ const acceptTypes = accept.split(',').map((type) => type.trim());
169
+ const filename = file.name || file.path.split('/').pop() || '';
170
+ const fileType = file.type || `image/${filename.split('.').pop()}`;
171
+
172
+ return acceptTypes.some((type) => {
170
173
  if (type.startsWith('.')) {
171
- return file.name.toLowerCase().endsWith(type.toLowerCase());
174
+ return filename.toLowerCase().endsWith(type.toLowerCase());
172
175
  }
173
176
  if (type.includes('/*')) {
174
177
  const mainType = type.split('/')[0];
175
- return file.type.startsWith(mainType || '');
178
+ return fileType.startsWith(mainType || '');
176
179
  }
177
- return file.type === type;
180
+ return fileType === type;
178
181
  });
179
182
  },
180
183
 
181
- checkFileSize: (file: File, maxSize: number) => {
184
+ checkFileSize: (file: any, maxSize: number) => {
182
185
  return file.size <= maxSize;
183
186
  },
184
187
 
185
- generatePreviewUrl: (file: File) => {
188
+ generatePreviewUrl: (file: any) => {
189
+ // 在 Taro 环境中,直接使用临时文件路径作为预览 URL
186
190
  return new Promise((resolve, reject) => {
187
- if (!file.type.startsWith('image/')) {
188
- reject(new Error('File is not an image'));
189
- return;
191
+ if (file.tempFilePath) {
192
+ resolve(file.tempFilePath);
193
+ } else if (file.path) {
194
+ resolve(file.path);
195
+ } else {
196
+ reject(new Error('Cannot generate preview URL'));
190
197
  }
191
-
192
- const reader = new FileReader();
193
- reader.onload = (e) => {
194
- resolve(e.target?.result as string);
195
- };
196
- reader.onerror = reject;
197
- reader.readAsDataURL(file);
198
198
  });
199
199
  },
200
- };
200
+ };
@@ -9,4 +9,4 @@ export type {
9
9
  UploadLocale,
10
10
  UploadUtils,
11
11
  } from './Upload.types';
12
- export { uploadStyles } from './Upload.styles';
12
+ export { uploadStyles } from './Upload.styles';