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.
- package/README.md +21 -0
- package/dist/app.config.d.ts +38 -0
- package/dist/app.d.ts +6 -0
- package/dist/components/basic/Button/Button.d.ts +6 -0
- package/dist/components/basic/Button/Button.styles.d.ts +2 -0
- package/dist/components/basic/Button/Button.types.d.ts +74 -0
- package/dist/components/basic/Button/index.d.ts +4 -0
- package/dist/components/basic/Divider/Divider.d.ts +6 -0
- package/dist/components/basic/Divider/Divider.styles.d.ts +87 -0
- package/dist/components/basic/Divider/Divider.types.d.ts +242 -0
- package/dist/components/basic/Divider/index.d.ts +6 -0
- package/dist/components/basic/Icon/Icon.d.ts +5 -0
- package/dist/components/basic/Icon/Icon.data.d.ts +29 -0
- package/dist/components/basic/Icon/Icon.styles.d.ts +61 -0
- package/dist/components/basic/Icon/Icon.types.d.ts +199 -0
- package/dist/components/basic/Icon/IconManager.d.ts +120 -0
- package/dist/components/basic/Icon/index.d.ts +6 -0
- package/dist/components/basic/Text/Text.d.ts +7 -0
- package/dist/components/basic/Text/Text.styles.d.ts +67 -0
- package/dist/components/basic/Text/Text.types.d.ts +274 -0
- package/dist/components/basic/Text/index.d.ts +5 -0
- package/dist/components/basic/Typography/Typography.d.ts +8 -0
- package/dist/components/basic/Typography/Typography.styles.d.ts +83 -0
- package/dist/components/basic/Typography/Typography.types.d.ts +245 -0
- package/dist/components/basic/Typography/index.d.ts +3 -0
- package/dist/components/basic/Video/Video.d.ts +7 -0
- package/dist/components/basic/Video/Video.styles.d.ts +212 -0
- package/dist/components/basic/Video/Video.types.d.ts +447 -0
- package/dist/components/basic/Video/index.d.ts +10 -0
- package/dist/components/basic/index.d.ts +217 -0
- package/dist/components/common/ErrorBoundary.d.ts +19 -0
- package/dist/components/common/LazyComponent.d.ts +78 -0
- package/dist/components/common/ResponsiveContainer.d.ts +23 -0
- package/dist/components/common/ResponsiveGrid.d.ts +44 -0
- package/dist/components/common/SecurityProvider.d.ts +15 -0
- package/dist/components/common/ThemeProvider.d.ts +17 -0
- package/dist/components/common/VirtualList.d.ts +89 -0
- package/dist/components/common/index.d.ts +17 -0
- package/dist/components/display/Avatar/Avatar.d.ts +3 -0
- package/dist/components/display/Avatar/Avatar.styles.d.ts +2 -0
- package/dist/components/display/Avatar/Avatar.types.d.ts +37 -0
- package/dist/components/display/Avatar/index.d.ts +3 -0
- package/dist/components/display/Badge/Badge.d.ts +3 -0
- package/dist/components/display/Badge/Badge.types.d.ts +27 -0
- package/dist/components/display/Badge/index.d.ts +2 -0
- package/dist/components/display/Calendar/Calendar.d.ts +5 -0
- package/dist/components/display/Calendar/Calendar.styles.d.ts +2 -0
- package/dist/components/display/Calendar/Calendar.types.d.ts +87 -0
- package/dist/components/display/Calendar/index.d.ts +3 -0
- package/dist/components/display/Card/Card.d.ts +3 -0
- package/dist/components/display/Card/Card.styles.d.ts +1 -0
- package/dist/components/display/Card/Card.types.d.ts +52 -0
- package/dist/components/display/Card/index.d.ts +3 -0
- package/dist/components/display/Carousel/Carousel.d.ts +5 -0
- package/dist/components/display/Carousel/Carousel.styles.d.ts +2 -0
- package/dist/components/display/Carousel/Carousel.types.d.ts +55 -0
- package/dist/components/display/Carousel/index.d.ts +3 -0
- package/dist/components/display/List/List.d.ts +4 -0
- package/dist/components/display/List/List.styles.d.ts +1 -0
- package/dist/components/display/List/List.types.d.ts +64 -0
- package/dist/components/display/List/index.d.ts +3 -0
- package/dist/components/display/Rate/Rate.d.ts +6 -0
- package/dist/components/display/Rate/Rate.styles.d.ts +100 -0
- package/dist/components/display/Rate/Rate.types.d.ts +105 -0
- package/dist/components/display/Rate/index.d.ts +17 -0
- package/dist/components/display/Table/Table.d.ts +7 -0
- package/dist/components/display/Table/Table.styles.d.ts +84 -0
- package/dist/components/display/Table/Table.types.d.ts +251 -0
- package/dist/components/display/Table/index.d.ts +4 -0
- package/dist/components/display/Tag/Tag.d.ts +5 -0
- package/dist/components/display/Tag/Tag.styles.d.ts +2 -0
- package/dist/components/display/Tag/Tag.types.d.ts +47 -0
- package/dist/components/display/Tag/index.d.ts +3 -0
- package/dist/components/display/Timeline/Timeline.d.ts +16 -0
- package/dist/components/display/Timeline/Timeline.styles.d.ts +2 -0
- package/dist/components/display/Timeline/Timeline.types.d.ts +53 -0
- package/dist/components/display/Timeline/index.d.ts +3 -0
- package/dist/components/display/index.d.ts +67 -0
- package/dist/components/feedback/Loading/Loading.d.ts +4 -0
- package/dist/components/feedback/Loading/Loading.styles.d.ts +2 -0
- package/dist/components/feedback/Loading/Loading.types.d.ts +29 -0
- package/dist/components/feedback/Loading/index.d.ts +4 -0
- package/dist/components/feedback/Message/Message.d.ts +4 -0
- package/dist/components/feedback/Message/Message.styles.d.ts +34 -0
- package/dist/components/feedback/Message/Message.types.d.ts +33 -0
- package/dist/components/feedback/Message/index.d.ts +4 -0
- package/dist/components/feedback/Modal/Modal.d.ts +8 -0
- package/dist/components/feedback/Modal/Modal.styles.d.ts +18 -0
- package/dist/components/feedback/Modal/Modal.types.d.ts +143 -0
- package/dist/components/feedback/Modal/index.d.ts +3 -0
- package/dist/components/feedback/Notification/Notification.d.ts +4 -0
- package/dist/components/feedback/Notification/Notification.styles.d.ts +88 -0
- package/dist/components/feedback/Notification/Notification.types.d.ts +279 -0
- package/dist/components/feedback/Notification/NotificationManager.d.ts +4 -0
- package/dist/components/feedback/Notification/index.d.ts +25 -0
- package/dist/components/feedback/Progress/Progress.d.ts +4 -0
- package/dist/components/feedback/Progress/Progress.styles.d.ts +261 -0
- package/dist/components/feedback/Progress/Progress.test.simple.d.ts +2 -0
- package/dist/components/feedback/Progress/Progress.types.d.ts +147 -0
- package/dist/components/feedback/Progress/index.d.ts +3 -0
- package/dist/components/feedback/Progress/utils/animation.d.ts +55 -0
- package/dist/components/feedback/Progress/utils/index.d.ts +2 -0
- package/dist/components/feedback/Progress/utils/progress-calculator.d.ts +75 -0
- package/dist/components/feedback/Result/Result.d.ts +7 -0
- package/dist/components/feedback/Result/Result.styles.d.ts +2 -0
- package/dist/components/feedback/Result/Result.types.d.ts +66 -0
- package/dist/components/feedback/Result/index.d.ts +3 -0
- package/dist/components/feedback/Toast/Toast.d.ts +7 -0
- package/dist/components/feedback/Toast/Toast.styles.d.ts +14 -0
- package/dist/components/feedback/Toast/Toast.types.d.ts +81 -0
- package/dist/components/feedback/Toast/index.d.ts +3 -0
- package/dist/components/feedback/Tooltip/Tooltip.d.ts +4 -0
- package/dist/components/feedback/Tooltip/Tooltip.examples.d.ts +6 -0
- package/dist/components/feedback/Tooltip/Tooltip.styles.d.ts +78 -0
- package/dist/components/feedback/Tooltip/Tooltip.types.d.ts +130 -0
- package/dist/components/feedback/Tooltip/index.d.ts +3 -0
- package/dist/components/feedback/index.d.ts +71 -0
- package/dist/components/form/Cascader/Cascader.d.ts +7 -0
- package/dist/components/form/Cascader/Cascader.styles.d.ts +107 -0
- package/dist/components/form/Cascader/Cascader.types.d.ts +418 -0
- package/dist/components/form/Cascader/hooks/index.d.ts +3 -0
- package/dist/components/form/Cascader/hooks/useCascaderFieldNames.d.ts +12 -0
- package/dist/components/form/Cascader/hooks/useCascaderOptions.d.ts +15 -0
- package/dist/components/form/Cascader/hooks/useCascaderState.d.ts +23 -0
- package/dist/components/form/Cascader/index.d.ts +6 -0
- package/dist/components/form/Cascader/utils/formatDisplayValue.d.ts +9 -0
- package/dist/components/form/Cascader/utils/index.d.ts +1 -0
- package/dist/components/form/Checkbox/Checkbox.d.ts +6 -0
- package/dist/components/form/Checkbox/Checkbox.styles.d.ts +111 -0
- package/dist/components/form/Checkbox/Checkbox.types.d.ts +473 -0
- package/dist/components/form/Checkbox/CheckboxGroup.d.ts +6 -0
- package/dist/components/form/Checkbox/index.d.ts +8 -0
- package/dist/components/form/DatePicker/DatePicker.d.ts +6 -0
- package/dist/components/form/DatePicker/DatePicker.styles.d.ts +99 -0
- package/dist/components/form/DatePicker/DatePicker.types.d.ts +236 -0
- package/dist/components/form/DatePicker/index.d.ts +3 -0
- package/dist/components/form/Form/Form.d.ts +8 -0
- package/dist/components/form/Form/Form.styles.d.ts +84 -0
- package/dist/components/form/Form/Form.types.d.ts +416 -0
- package/dist/components/form/Form/index.d.ts +9 -0
- package/dist/components/form/Form/useFormLogic.d.ts +22 -0
- package/dist/components/form/Input/Input.d.ts +6 -0
- package/dist/components/form/Input/Input.styles.d.ts +61 -0
- package/dist/components/form/Input/Input.types.d.ts +294 -0
- package/dist/components/form/Input/index.d.ts +8 -0
- package/dist/components/form/Input/useInputLogic.d.ts +35 -0
- package/dist/components/form/InputNumber/InputNumber.d.ts +6 -0
- package/dist/components/form/InputNumber/InputNumber.styles.d.ts +120 -0
- package/dist/components/form/InputNumber/InputNumber.types.d.ts +303 -0
- package/dist/components/form/InputNumber/components/InputNumberClearButton.d.ts +10 -0
- package/dist/components/form/InputNumber/components/InputNumberControls.d.ts +11 -0
- package/dist/components/form/InputNumber/components/index.d.ts +2 -0
- package/dist/components/form/InputNumber/hooks/index.d.ts +4 -0
- package/dist/components/form/InputNumber/hooks/useInputNumberState.d.ts +38 -0
- package/dist/components/form/InputNumber/hooks/useInputNumberValidation.d.ts +12 -0
- package/dist/components/form/InputNumber/index.d.ts +5 -0
- package/dist/components/form/Radio/Radio.d.ts +6 -0
- package/dist/components/form/Radio/Radio.styles.d.ts +80 -0
- package/dist/components/form/Radio/Radio.types.d.ts +415 -0
- package/dist/components/form/Radio/index.d.ts +8 -0
- package/dist/components/form/Select/Select.d.ts +6 -0
- package/dist/components/form/Select/Select.styles.d.ts +71 -0
- package/dist/components/form/Select/Select.types.d.ts +418 -0
- package/dist/components/form/Select/index.d.ts +8 -0
- package/dist/components/form/Slider/Slider.d.ts +7 -0
- package/dist/components/form/Slider/Slider.styles.d.ts +2 -0
- package/dist/components/form/Slider/Slider.types.d.ts +85 -0
- package/dist/components/form/Slider/index.d.ts +3 -0
- package/dist/components/form/Switch/Switch.d.ts +10 -0
- package/dist/components/form/Switch/Switch.styles.d.ts +154 -0
- package/dist/components/form/Switch/Switch.types.d.ts +351 -0
- package/dist/components/form/Switch/index.d.ts +7 -0
- package/dist/components/form/Textarea/Textarea.d.ts +6 -0
- package/dist/components/form/Textarea/Textarea.styles.d.ts +66 -0
- package/dist/components/form/Textarea/Textarea.types.d.ts +348 -0
- package/dist/components/form/Textarea/index.d.ts +7 -0
- package/dist/components/form/TimePicker/TimePicker.d.ts +6 -0
- package/dist/components/form/TimePicker/TimePicker.styles.d.ts +104 -0
- package/dist/components/form/TimePicker/TimePicker.types.d.ts +385 -0
- package/dist/components/form/TimePicker/index.d.ts +4 -0
- package/dist/components/form/Transfer/Transfer.d.ts +7 -0
- package/dist/components/form/Transfer/Transfer.styles.d.ts +106 -0
- package/dist/components/form/Transfer/Transfer.types.d.ts +384 -0
- package/dist/components/form/Transfer/components/TransferItem.d.ts +23 -0
- package/dist/components/form/Transfer/components/TransferList.d.ts +55 -0
- package/dist/components/form/Transfer/components/TransferOperations.d.ts +21 -0
- package/dist/components/form/Transfer/components/TransferPagination.d.ts +19 -0
- package/dist/components/form/Transfer/components/TransferSearch.d.ts +21 -0
- package/dist/components/form/Transfer/components/index.d.ts +6 -0
- package/dist/components/form/Transfer/hooks/index.d.ts +3 -0
- package/dist/components/form/Transfer/hooks/useTransferData.d.ts +41 -0
- package/dist/components/form/Transfer/hooks/useTransferState.d.ts +21 -0
- package/dist/components/form/Transfer/index.d.ts +9 -0
- package/dist/components/form/Upload/Upload.d.ts +7 -0
- package/dist/components/form/Upload/Upload.styles.d.ts +2 -0
- package/dist/components/form/Upload/Upload.types.d.ts +143 -0
- package/dist/components/form/Upload/index.d.ts +3 -0
- package/dist/components/form/index.d.ts +126 -0
- package/dist/components/index.d.ts +122 -0
- package/dist/components/layout/Affix/Affix.d.ts +4 -0
- package/dist/components/layout/Affix/Affix.styles.d.ts +1669 -0
- package/dist/components/layout/Affix/Affix.types.d.ts +25 -0
- package/dist/components/layout/Affix/index.d.ts +3 -0
- package/dist/components/layout/Col/Col.d.ts +6 -0
- package/dist/components/layout/Col/Col.styles.d.ts +52 -0
- package/dist/components/layout/Col/Col.types.d.ts +54 -0
- package/dist/components/layout/Col/index.d.ts +3 -0
- package/dist/components/layout/Container/Container.d.ts +6 -0
- package/dist/components/layout/Container/Container.styles.d.ts +41 -0
- package/dist/components/layout/Container/Container.types.d.ts +59 -0
- package/dist/components/layout/Container/index.d.ts +3 -0
- package/dist/components/layout/Grid/Grid.d.ts +6 -0
- package/dist/components/layout/Grid/Grid.styles.d.ts +60 -0
- package/dist/components/layout/Grid/Grid.types.d.ts +68 -0
- package/dist/components/layout/Grid/index.d.ts +3 -0
- package/dist/components/layout/Layout/Content.d.ts +4 -0
- package/dist/components/layout/Layout/Footer.d.ts +4 -0
- package/dist/components/layout/Layout/Header.d.ts +4 -0
- package/dist/components/layout/Layout/Layout.d.ts +4 -0
- package/dist/components/layout/Layout/Layout.styles.d.ts +3366 -0
- package/dist/components/layout/Layout/Layout.types.d.ts +48 -0
- package/dist/components/layout/Layout/Sider.d.ts +4 -0
- package/dist/components/layout/Layout/index.d.ts +8 -0
- package/dist/components/layout/Row/Row.d.ts +6 -0
- package/dist/components/layout/Row/Row.styles.d.ts +55 -0
- package/dist/components/layout/Row/Row.types.d.ts +51 -0
- package/dist/components/layout/Row/index.d.ts +3 -0
- package/dist/components/layout/Space/Space.d.ts +6 -0
- package/dist/components/layout/Space/Space.styles.d.ts +69 -0
- package/dist/components/layout/Space/Space.types.d.ts +84 -0
- package/dist/components/layout/Space/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts +39 -0
- package/dist/components/navigation/Menu/Menu.constants.d.ts +59 -0
- package/dist/components/navigation/Menu/Menu.d.ts +10 -0
- package/dist/components/navigation/Menu/Menu.stories.d.ts +157 -0
- package/dist/components/navigation/Menu/Menu.styles.d.ts +143 -0
- package/dist/components/navigation/Menu/Menu.types.d.ts +210 -0
- package/dist/components/navigation/Menu/Menu.utils.d.ts +54 -0
- package/dist/components/navigation/Menu/MenuItem.d.ts +32 -0
- package/dist/components/navigation/Menu/SubMenu.d.ts +41 -0
- package/dist/components/navigation/Menu/index.d.ts +54 -0
- package/dist/components/navigation/NavBar/NavBar.d.ts +7 -0
- package/dist/components/navigation/NavBar/NavBar.styles.d.ts +114 -0
- package/dist/components/navigation/NavBar/NavBar.types.d.ts +50 -0
- package/dist/components/navigation/NavBar/index.d.ts +3 -0
- package/dist/components/navigation/Pagination/Pagination.d.ts +6 -0
- package/dist/components/navigation/Pagination/Pagination.styles.d.ts +55 -0
- package/dist/components/navigation/Pagination/Pagination.types.d.ts +77 -0
- package/dist/components/navigation/Pagination/index.d.ts +15 -0
- package/dist/components/navigation/Steps/Step.d.ts +4 -0
- package/dist/components/navigation/Steps/Steps.d.ts +4 -0
- package/dist/components/navigation/Steps/Steps.styles.d.ts +6716 -0
- package/dist/components/navigation/Steps/Steps.types.d.ts +41 -0
- package/dist/components/navigation/Steps/index.d.ts +3 -0
- package/dist/components/navigation/Tabs/Tabs.d.ts +6 -0
- package/dist/components/navigation/Tabs/Tabs.styles.d.ts +60 -0
- package/dist/components/navigation/Tabs/Tabs.types.d.ts +107 -0
- package/dist/components/navigation/Tabs/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts +35 -0
- package/dist/constants/index.d.ts +624 -0
- package/dist/hooks/index.d.ts +28 -0
- package/dist/hooks/types.d.ts +7 -0
- package/dist/hooks/useAsync.d.ts +17 -0
- package/dist/hooks/useClickOutside.d.ts +19 -0
- package/dist/hooks/useCounter.d.ts +36 -0
- package/dist/hooks/useDebounce.d.ts +31 -0
- package/dist/hooks/useDeepCompareEffect.d.ts +22 -0
- package/dist/hooks/useEventHandling.d.ts +81 -0
- package/dist/hooks/useEventListener.d.ts +19 -0
- package/dist/hooks/useLifecycle.d.ts +66 -0
- package/dist/hooks/useMediaQuery.d.ts +22 -0
- package/dist/hooks/useMutation.d.ts +47 -0
- package/dist/hooks/usePerformance.d.ts +73 -0
- package/dist/hooks/usePerformanceMonitor.d.ts +66 -0
- package/dist/hooks/usePlatform.d.ts +20 -0
- package/dist/hooks/usePrevious.d.ts +14 -0
- package/dist/hooks/useRequest.d.ts +32 -0
- package/dist/hooks/useStateManagement.d.ts +62 -0
- package/dist/hooks/useStorage.d.ts +27 -0
- package/dist/hooks/useStyle.d.ts +127 -0
- package/dist/hooks/useTheme.d.ts +58 -0
- package/dist/hooks/useToggle.d.ts +28 -0
- package/dist/hooks/useVirtualScroll.d.ts +42 -0
- package/dist/index.d.ts +271 -0
- package/dist/js/{index-DffLRSro.js → index-CDFsvu80.js} +15369 -10741
- package/dist/js/index-CDFsvu80.js.map +1 -0
- package/dist/js/index-DFdcksbe.js.map +1 -1
- package/dist/js/index-DXRIkWX1.js.map +1 -1
- package/dist/js/{index-6NJ3A1Dn.js → index-JffnTUrv.js} +15430 -10801
- package/dist/js/index-JffnTUrv.js.map +1 -0
- package/dist/platform/index.d.ts +172 -0
- package/dist/providers/AppProvider.d.ts +34 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/theme/ThemeProvider.d.ts +34 -0
- package/dist/theme/ThemeProvider.types.d.ts +21 -0
- package/dist/theme/animations.d.ts +96 -0
- package/dist/theme/defaults.d.ts +6 -0
- package/dist/theme/design-system.d.ts +400 -0
- package/dist/theme/design-tokens.d.ts +459 -0
- package/dist/theme/index.d.ts +187 -0
- package/dist/theme/responsive.d.ts +63 -0
- package/dist/theme/styles.d.ts +65 -0
- package/dist/theme/tokens/colors.d.ts +72 -0
- package/dist/theme/tokens/effects.d.ts +122 -0
- package/dist/theme/tokens/index.d.ts +94 -0
- package/dist/theme/tokens/spacing.d.ts +65 -0
- package/dist/theme/tokens/typography.d.ts +73 -0
- package/dist/theme/types.d.ts +153 -0
- package/dist/theme/useThemeUtils.d.ts +21 -0
- package/dist/theme/utils.d.ts +255 -0
- package/dist/theme/variables.d.ts +170 -0
- package/dist/types/accessibility.d.ts +46 -0
- package/dist/types/button.d.ts +285 -0
- package/dist/types/component-props.d.ts +109 -0
- package/dist/types/index.d.ts +343 -0
- package/dist/types/standardized-components.d.ts +263 -0
- package/dist/types/utils.d.ts +190 -0
- package/dist/utils/abort-controller.d.ts +19 -0
- package/dist/utils/cache.d.ts +28 -0
- package/dist/utils/createNamespace.d.ts +9 -0
- package/dist/utils/environment.d.ts +26 -0
- package/dist/utils/error-handler.d.ts +37 -0
- package/dist/utils/errorLogger.d.ts +72 -0
- package/dist/utils/formatUtils.d.ts +93 -0
- package/dist/utils/http/error-codes.d.ts +131 -0
- package/dist/utils/http/http-client.d.ts +53 -0
- package/dist/utils/http/request-cache.d.ts +65 -0
- package/dist/utils/http/request.d.ts +280 -0
- package/dist/utils/http/taro-adapter.d.ts +4 -0
- package/dist/utils/http/types.d.ts +351 -0
- package/dist/utils/http/web-adapter.d.ts +4 -0
- package/dist/utils/index.d.ts +46 -0
- package/dist/utils/inputValidator.d.ts +74 -0
- package/dist/utils/performance/performance.d.ts +167 -0
- package/dist/utils/responsiveUtils.d.ts +148 -0
- package/dist/utils/rtl-support.d.ts +78 -0
- package/dist/utils/security/api-security.d.ts +82 -0
- package/dist/utils/security/xss-protection.d.ts +20 -0
- package/dist/utils/securityHeaders.d.ts +74 -0
- package/dist/utils/typeHelpers.d.ts +1 -0
- package/dist/utils/types/dataProcessing.d.ts +111 -0
- package/dist/utils/types/typeHelpers.d.ts +50 -0
- package/dist/utils/xssProtection.d.ts +90 -0
- package/package.json +14 -10
- package/src/components/basic/Button/Button.tsx +53 -13
- package/src/components/basic/Button/Button.types.ts +45 -9
- package/src/components/basic/Divider/Divider.tsx +60 -29
- package/src/components/basic/Icon/Icon.data.ts +474 -0
- package/src/components/basic/Icon/Icon.test.tsx +2 -2
- package/src/components/basic/Icon/Icon.tsx +48 -35
- package/src/components/basic/Icon/IconManager.ts +229 -0
- package/src/components/basic/Text/Text.styles.ts +3 -3
- package/src/components/basic/Text/Text.types.ts +14 -4
- package/src/components/basic/Typography/Typography.styles.ts +10 -9
- package/src/components/basic/Typography/Typography.tsx +15 -13
- package/src/components/basic/Typography/Typography.types.ts +41 -41
- package/src/components/basic/Typography/index.tsx +1 -1
- package/src/components/basic/Video/Video.styles.ts +777 -0
- package/src/components/basic/Video/Video.test.tsx +490 -0
- package/src/components/basic/Video/Video.tsx +1468 -0
- package/src/components/basic/Video/Video.types.ts +500 -0
- package/src/components/basic/Video/index.tsx +26 -0
- package/src/components/basic/index.tsx +13 -15
- package/src/components/common/ErrorBoundary.tsx +1 -1
- package/src/components/common/LazyComponent.tsx +9 -8
- package/src/components/common/SecurityProvider.tsx +2 -14
- package/src/components/common/ThemeProvider.tsx +43 -56
- package/src/components/common/VirtualList.tsx +187 -205
- package/src/components/common/index.tsx +25 -0
- package/src/components/display/Avatar/Avatar.styles.ts +1 -1
- package/src/components/display/Avatar/Avatar.tsx +6 -19
- package/src/components/display/Avatar/Avatar.types.ts +1 -1
- package/src/components/display/Avatar/index.ts +1 -1
- package/src/components/display/Badge/Badge.tsx +3 -16
- package/src/components/display/Badge/Badge.types.ts +1 -1
- package/src/components/display/Badge/index.ts +1 -1
- package/src/components/display/Calendar/Calendar.styles.ts +36 -36
- package/src/components/display/Calendar/Calendar.test.tsx +27 -15
- package/src/components/display/Calendar/Calendar.tsx +56 -35
- package/src/components/display/Calendar/Calendar.types.ts +1 -1
- package/src/components/display/Calendar/index.ts +1 -1
- package/src/components/display/Card/Card.styles.ts +2 -2
- package/src/components/display/Card/Card.test.tsx +6 -4
- package/src/components/display/Card/Card.tsx +1 -1
- package/src/components/display/Card/Card.types.ts +4 -4
- package/src/components/display/Card/index.ts +1 -1
- package/src/components/display/Carousel/Carousel.styles.ts +31 -31
- package/src/components/display/Carousel/Carousel.tsx +34 -39
- package/src/components/display/Carousel/Carousel.types.ts +1 -1
- package/src/components/display/Carousel/index.ts +1 -1
- package/src/components/display/List/List.styles.ts +3 -3
- package/src/components/display/List/List.tsx +0 -1
- package/src/components/display/List/index.ts +1 -1
- package/src/components/display/Rate/Rate.styles.ts +5 -17
- package/src/components/display/Rate/Rate.tsx +6 -14
- package/src/components/display/Rate/Rate.types.ts +4 -3
- package/src/components/display/Rate/index.ts +3 -11
- package/src/components/display/Table/Table.test.tsx +2 -0
- package/src/components/display/Table/Table.tsx +3 -7
- package/src/components/display/Table/Table.types.ts +3 -2
- package/src/components/display/Tag/Tag.styles.ts +31 -31
- package/src/components/display/Tag/Tag.tsx +9 -26
- package/src/components/display/Tag/Tag.types.ts +1 -1
- package/src/components/display/Tag/index.ts +1 -1
- package/src/components/display/Timeline/Timeline.styles.ts +32 -32
- package/src/components/display/Timeline/Timeline.tsx +23 -42
- package/src/components/display/Timeline/Timeline.types.ts +1 -1
- package/src/components/display/Timeline/index.ts +1 -1
- package/src/components/display/index.tsx +33 -29
- package/src/components/feedback/Loading/Loading.tsx +6 -1
- package/src/components/feedback/Loading/index.ts +2 -5
- package/src/components/feedback/Message/Message.styles.ts +3 -3
- package/src/components/feedback/Message/index.ts +2 -5
- package/src/components/feedback/Modal/Modal.styles.ts +1 -1
- package/src/components/feedback/Modal/Modal.tsx +9 -31
- package/src/components/feedback/Modal/Modal.types.ts +12 -2
- package/src/components/feedback/Notification/Notification.styles.ts +49 -39
- package/src/components/feedback/Notification/Notification.test.tsx +1 -1
- package/src/components/feedback/Notification/Notification.tsx +97 -120
- package/src/components/feedback/Notification/Notification.types.ts +11 -8
- package/src/components/feedback/Notification/NotificationManager.tsx +135 -106
- package/src/components/feedback/Notification/index.ts +10 -3
- package/src/components/feedback/Notification/index.tsx +16 -26
- package/src/components/feedback/Progress/Progress.styles.ts +23 -14
- package/src/components/feedback/Progress/Progress.tsx +93 -113
- package/src/components/feedback/Progress/Progress.types.ts +1 -1
- package/src/components/feedback/Progress/index.ts +1 -1
- package/src/components/feedback/Progress/utils/animation.ts +12 -23
- package/src/components/feedback/Progress/utils/index.ts +2 -2
- package/src/components/feedback/Progress/utils/progress-calculator.ts +14 -32
- package/src/components/feedback/Result/Result.styles.ts +29 -29
- package/src/components/feedback/Result/Result.tsx +8 -20
- package/src/components/feedback/Result/Result.types.ts +7 -7
- package/src/components/feedback/Result/index.tsx +1 -1
- package/src/components/feedback/Toast/Toast.styles.ts +1 -1
- package/src/components/feedback/Toast/Toast.tsx +25 -13
- package/src/components/feedback/Tooltip/Tooltip.examples.tsx +21 -44
- package/src/components/feedback/Tooltip/Tooltip.styles.ts +16 -22
- package/src/components/feedback/Tooltip/Tooltip.test.tsx +1 -1
- package/src/components/feedback/Tooltip/Tooltip.tsx +65 -46
- package/src/components/feedback/Tooltip/Tooltip.types.ts +14 -20
- package/src/components/feedback/Tooltip/index.ts +1 -1
- package/src/components/feedback/Tooltip/index.tsx +12 -24
- package/src/components/feedback/index.tsx +54 -42
- package/src/components/form/Cascader/Cascader.styles.ts +2 -2
- package/src/components/form/Cascader/Cascader.tsx +84 -88
- package/src/components/form/Cascader/Cascader.types.ts +49 -50
- package/src/components/form/Cascader/hooks/useCascaderFieldNames.ts +11 -8
- package/src/components/form/Cascader/hooks/useCascaderOptions.ts +73 -55
- package/src/components/form/Cascader/hooks/useCascaderState.ts +31 -25
- package/src/components/form/Cascader/index.ts +1 -1
- package/src/components/form/Cascader/utils/formatDisplayValue.ts +4 -4
- package/src/components/form/Checkbox/Checkbox.styles.ts +83 -84
- package/src/components/form/Checkbox/Checkbox.tsx +2 -9
- package/src/components/form/Checkbox/CheckboxGroup.tsx +7 -7
- package/src/components/form/DatePicker/DatePicker.test.tsx +1 -1
- package/src/components/form/DatePicker/DatePicker.tsx +91 -75
- package/src/components/form/DatePicker/DatePicker.types.ts +4 -1
- package/src/components/form/Form/Form.tsx +66 -504
- package/src/components/form/Form/Form.types.ts +16 -1
- package/src/components/form/Form/useFormLogic.ts +497 -0
- package/src/components/form/Input/Input.styles.ts +8 -1
- package/src/components/form/Input/Input.tsx +55 -291
- package/src/components/form/Input/Input.types.ts +13 -1
- package/src/components/form/Input/useInputLogic.test.ts +82 -0
- package/src/components/form/Input/useInputLogic.ts +260 -0
- package/src/components/form/InputNumber/InputNumber.styles.ts +76 -25
- package/src/components/form/InputNumber/InputNumber.tsx +53 -21
- package/src/components/form/InputNumber/InputNumber.types.ts +21 -3
- package/src/components/form/InputNumber/components/InputNumberClearButton.tsx +3 -11
- package/src/components/form/InputNumber/components/InputNumberControls.tsx +3 -12
- package/src/components/form/InputNumber/hooks/index.ts +1 -1
- package/src/components/form/InputNumber/hooks/useInputNumberState.ts +7 -9
- package/src/components/form/InputNumber/hooks/useInputNumberValidation.ts +18 -17
- package/src/components/form/InputNumber/index.ts +7 -7
- package/src/components/form/Radio/Radio.styles.ts +1 -8
- package/src/components/form/Radio/Radio.tsx +3 -9
- package/src/components/form/Radio/Radio.types.ts +5 -1
- package/src/components/form/Select/Select.styles.ts +5 -1
- package/src/components/form/Select/Select.tsx +15 -15
- package/src/components/form/Select/Select.types.ts +2 -1
- package/src/components/form/Slider/Slider.styles.ts +13 -13
- package/src/components/form/Slider/Slider.tsx +19 -33
- package/src/components/form/Slider/Slider.types.ts +14 -12
- package/src/components/form/Slider/index.tsx +2 -9
- package/src/components/form/Switch/Switch.styles.ts +1 -7
- package/src/components/form/Switch/Switch.tsx +7 -13
- package/src/components/form/Textarea/Textarea.styles.ts +4 -4
- package/src/components/form/Textarea/Textarea.tsx +7 -1
- package/src/components/form/Textarea/Textarea.types.ts +4 -1
- package/src/components/form/TimePicker/TimePicker.styles.ts +8 -12
- package/src/components/form/TimePicker/TimePicker.tsx +122 -100
- package/src/components/form/TimePicker/TimePicker.types.ts +2 -2
- package/src/components/form/TimePicker/index.ts +1 -1
- package/src/components/form/Transfer/Transfer.styles.ts +3 -15
- package/src/components/form/Transfer/Transfer.tsx +146 -134
- package/src/components/form/Transfer/Transfer.types.ts +34 -26
- package/src/components/form/Transfer/components/TransferItem.tsx +55 -62
- package/src/components/form/Transfer/components/TransferList.tsx +212 -199
- package/src/components/form/Transfer/components/TransferOperations.tsx +52 -55
- package/src/components/form/Transfer/components/TransferPagination.tsx +115 -111
- package/src/components/form/Transfer/components/TransferSearch.tsx +52 -55
- package/src/components/form/Transfer/hooks/useTransferData.ts +91 -81
- package/src/components/form/Transfer/hooks/useTransferState.ts +22 -16
- package/src/components/form/Transfer/index.ts +2 -8
- package/src/components/form/Upload/Upload.styles.ts +21 -21
- package/src/components/form/Upload/Upload.tsx +189 -142
- package/src/components/form/Upload/Upload.types.ts +31 -31
- package/src/components/form/Upload/index.tsx +1 -1
- package/src/components/form/index.tsx +60 -29
- package/src/components/index.tsx +0 -1
- package/src/components/layout/Affix/Affix.styles.ts +16 -11
- package/src/components/layout/Affix/Affix.tsx +67 -75
- package/src/components/layout/Affix/Affix.types.ts +18 -18
- package/src/components/layout/Affix/index.tsx +1 -1
- package/src/components/layout/Col/Col.styles.ts +17 -17
- package/src/components/layout/Col/Col.test.tsx +7 -5
- package/src/components/layout/Col/Col.tsx +3 -21
- package/src/components/layout/Col/Col.types.ts +1 -1
- package/src/components/layout/Container/Container.styles.ts +3 -1
- package/src/components/layout/Container/Container.tsx +2 -11
- package/src/components/layout/Grid/Grid.tsx +3 -53
- package/src/components/layout/Layout/Content.tsx +24 -32
- package/src/components/layout/Layout/Footer.tsx +24 -32
- package/src/components/layout/Layout/Header.tsx +24 -32
- package/src/components/layout/Layout/Layout.styles.ts +17 -17
- package/src/components/layout/Layout/Layout.tsx +14 -25
- package/src/components/layout/Layout/Layout.types.ts +29 -29
- package/src/components/layout/Layout/Sider.tsx +44 -56
- package/src/components/layout/Layout/index.tsx +16 -2
- package/src/components/layout/Row/Row.tsx +15 -43
- package/src/components/layout/Space/Space.tsx +3 -11
- package/src/components/layout/Space/Space.types.ts +1 -1
- package/src/components/layout/index.tsx +29 -19
- package/src/components/navigation/Menu/Menu.constants.ts +69 -0
- package/src/components/navigation/Menu/Menu.stories.tsx +107 -0
- package/src/components/navigation/Menu/Menu.styles.ts +25 -37
- package/src/components/navigation/Menu/Menu.tsx +8 -11
- package/src/components/navigation/Menu/Menu.types.ts +2 -2
- package/src/components/navigation/Menu/Menu.utils.ts +17 -17
- package/src/components/navigation/Menu/MenuItem.tsx +9 -11
- package/src/components/navigation/Menu/SubMenu.tsx +8 -6
- package/src/components/navigation/Menu/index.tsx +4 -69
- package/src/components/navigation/NavBar/NavBar.styles.ts +1 -1
- package/src/components/navigation/NavBar/NavBar.tsx +7 -10
- package/src/components/navigation/NavBar/NavBar.types.ts +3 -3
- package/src/components/navigation/NavBar/index.tsx +1 -1
- package/src/components/navigation/Pagination/Pagination.test.tsx +2 -3
- package/src/components/navigation/Pagination/Pagination.tsx +3 -3
- package/src/components/navigation/Pagination/Pagination.types.ts +3 -2
- package/src/components/navigation/Pagination/index.ts +9 -3
- package/src/components/navigation/Steps/Step.tsx +24 -44
- package/src/components/navigation/Steps/Steps.styles.ts +28 -13
- package/src/components/navigation/Steps/Steps.test.tsx +2 -0
- package/src/components/navigation/Steps/Steps.tsx +88 -89
- package/src/components/navigation/Steps/Steps.types.ts +30 -30
- package/src/components/navigation/Steps/index.tsx +1 -1
- package/src/components/navigation/Tabs/Tabs.test.tsx +3 -2
- package/src/components/navigation/Tabs/Tabs.types.ts +4 -3
- package/src/components/navigation/index.tsx +21 -16
- package/src/constants/index.ts +1 -1
- package/src/hooks/index.ts +52 -102
- package/src/hooks/types.ts +4 -5
- package/src/hooks/useAsync.ts +46 -47
- package/src/hooks/useClickOutside.ts +52 -0
- package/src/hooks/useCounter.ts +87 -0
- package/src/hooks/useDebounce.ts +150 -0
- package/src/hooks/useDeepCompareEffect.ts +88 -0
- package/src/hooks/useEventListener.ts +77 -0
- package/src/hooks/useMediaQuery.ts +75 -0
- package/src/hooks/useMutation.ts +233 -0
- package/src/hooks/usePerformance.ts +1 -64
- package/src/hooks/usePlatform.ts +3 -1
- package/src/hooks/usePrevious.ts +25 -0
- package/src/hooks/useRequest.ts +12 -7
- package/src/hooks/useStateManagement.ts +1 -1
- package/src/hooks/useStorage.ts +169 -0
- package/src/hooks/useStyle.ts +8 -2
- package/src/hooks/useToggle.ts +54 -0
- package/src/index.ts +34 -9
- package/src/theme/ThemeProvider.tsx +3 -7
- package/src/theme/ThemeProvider.types.ts +1 -1
- package/src/theme/defaults.ts +1 -1
- package/src/theme/design-system.ts +2 -2
- package/src/theme/design-tokens.ts +85 -99
- package/src/theme/generated/dark-theme.scss +1 -1
- package/src/theme/generated/tokens.scss +82 -18
- package/src/theme/index.ts +8 -29
- package/src/theme/responsive.tsx +36 -34
- package/src/theme/styles.ts +1 -1
- package/src/theme/useThemeUtils.ts +43 -43
- package/src/theme/utils.ts +32 -32
- package/src/theme/variables.ts +70 -51
- package/src/types/accessibility.ts +36 -37
- package/src/types/button.ts +25 -27
- package/src/types/component-props.ts +6 -1
- package/src/types/glob.d.ts +4 -0
- package/src/types/index.ts +2 -2
- package/src/types/standardized-components.ts +9 -3
- package/src/types/utils.ts +13 -23
- package/src/utils/__tests__/responsiveUtils.test.ts +5 -4
- package/src/utils/abort-controller.ts +48 -0
- package/src/utils/cache.ts +2 -6
- package/src/utils/createNamespace.ts +4 -4
- package/src/utils/environment.ts +26 -6
- package/src/utils/error-handler.ts +2 -2
- package/src/utils/errorLogger.ts +16 -20
- package/src/utils/formatUtils.ts +38 -70
- package/src/utils/http/error-codes.ts +314 -0
- package/src/utils/http/http-client.test.ts +63 -0
- package/src/utils/{network → http}/http-client.ts +45 -35
- package/src/utils/http/request-cache.ts +127 -0
- package/src/utils/http/request.ts +954 -0
- package/src/utils/http/taro-adapter.test.ts +74 -0
- package/src/utils/http/taro-adapter.ts +24 -0
- package/src/utils/http/types.ts +414 -0
- package/src/utils/http/web-adapter.ts +33 -0
- package/src/utils/index.ts +5 -8
- package/src/utils/inputValidator.ts +17 -14
- package/src/utils/performance/performance.ts +60 -71
- package/src/utils/responsiveUtils.ts +7 -16
- package/src/utils/rtl-support.ts +29 -19
- package/src/utils/security/api-security.ts +47 -39
- package/src/utils/securityHeaders.ts +61 -67
- package/src/utils/typeHelpers.ts +10 -10
- package/src/utils/types/dataProcessing.ts +93 -92
- package/src/utils/types/typeHelpers.ts +31 -21
- package/src/utils/xssProtection.ts +96 -48
- package/dist/js/index-6NJ3A1Dn.js.map +0 -1
- package/dist/js/index-DffLRSro.js.map +0 -1
- package/src/components/form/Input/Input.enhanced.tsx +0 -732
- package/src/components/navigation/Menu/__tests__/Menu.test.tsx +0 -687
- package/src/components/navigation/Tree/Tree.styles.ts +0 -553
- package/src/components/navigation/Tree/Tree.test.basic.tsx +0 -7
- package/src/components/navigation/Tree/Tree.test.functional.tsx +0 -496
- package/src/components/navigation/Tree/Tree.test.import.check.tsx +0 -6
- package/src/components/navigation/Tree/Tree.test.import.tsx +0 -6
- package/src/components/navigation/Tree/Tree.test.minimal.tsx +0 -5
- package/src/components/navigation/Tree/Tree.test.simple.tsx +0 -30
- package/src/components/navigation/Tree/Tree.test.tsx +0 -908
- package/src/components/navigation/Tree/Tree.test.working.tsx +0 -673
- package/src/components/navigation/Tree/Tree.tsx +0 -600
- package/src/components/navigation/Tree/Tree.types.ts +0 -909
- package/src/components/navigation/Tree/Tree.utils.ts +0 -452
- package/src/components/navigation/Tree/index.ts +0 -33
- package/src/components/navigation/Tree/index.tsx +0 -23
- package/src/utils/network/http-client.test.ts +0 -18
package/src/types/utils.ts
CHANGED
|
@@ -73,14 +73,10 @@ export type Truthy<T> = T extends false | 0 | '' | null | undefined ? never : T;
|
|
|
73
73
|
// ==================== 字符串工具类型 ====================
|
|
74
74
|
|
|
75
75
|
/** 首字母大写 */
|
|
76
|
-
export type Capitalize<S extends string> = S extends `${infer First}${infer Rest}`
|
|
77
|
-
? `${Uppercase<First>}${Rest}`
|
|
78
|
-
: S;
|
|
76
|
+
export type Capitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${Rest}` : S;
|
|
79
77
|
|
|
80
78
|
/** 首字母小写 */
|
|
81
|
-
export type Uncapitalize<S extends string> = S extends `${infer First}${infer Rest}`
|
|
82
|
-
? `${Lowercase<First>}${Rest}`
|
|
83
|
-
: S;
|
|
79
|
+
export type Uncapitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Lowercase<First>}${Rest}` : S;
|
|
84
80
|
|
|
85
81
|
/** 转换为连字符格式 */
|
|
86
82
|
export type KebabCase<S> = S extends `${infer First}${infer Rest}`
|
|
@@ -90,9 +86,7 @@ export type KebabCase<S> = S extends `${infer First}${infer Rest}`
|
|
|
90
86
|
: S;
|
|
91
87
|
|
|
92
88
|
/** 转换为驼峰格式 */
|
|
93
|
-
export type CamelCase<S> = S extends `${infer First}-${infer Rest}`
|
|
94
|
-
? `${First}${Capitalize<CamelCase<Rest>>}`
|
|
95
|
-
: S;
|
|
89
|
+
export type CamelCase<S> = S extends `${infer First}-${infer Rest}` ? `${First}${Capitalize<CamelCase<Rest>>}` : S;
|
|
96
90
|
|
|
97
91
|
// ==================== 对象工具类型 ====================
|
|
98
92
|
|
|
@@ -108,8 +102,8 @@ export type DeepMerge<T, U> = T extends object
|
|
|
108
102
|
? DeepMerge<T[K], U[K]>
|
|
109
103
|
: T[K]
|
|
110
104
|
: K extends keyof U
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
? U[K]
|
|
106
|
+
: never;
|
|
113
107
|
}
|
|
114
108
|
: T
|
|
115
109
|
: U;
|
|
@@ -202,9 +196,7 @@ export function isReactElement(value: unknown): value is React.ReactElement {
|
|
|
202
196
|
}
|
|
203
197
|
|
|
204
198
|
/** 类型守卫:检查是否为React组件 */
|
|
205
|
-
export function isReactComponent<T extends React.ComponentType<any>>(
|
|
206
|
-
value: unknown,
|
|
207
|
-
): value is T {
|
|
199
|
+
export function isReactComponent<T extends React.ComponentType<any>>(value: unknown): value is T {
|
|
208
200
|
return isFunction(value);
|
|
209
201
|
}
|
|
210
202
|
|
|
@@ -231,9 +223,7 @@ export function isNotEmpty<T>(value: T | null | undefined): value is T {
|
|
|
231
223
|
// ==================== 验证工具类型 ====================
|
|
232
224
|
|
|
233
225
|
/** 验证结果类型 */
|
|
234
|
-
export type ValidationResult<T> =
|
|
235
|
-
| { success: true; data: T }
|
|
236
|
-
| { success: false; error: string };
|
|
226
|
+
export type ValidationResult<T> = { success: true; data: T } | { success: false; error: string };
|
|
237
227
|
|
|
238
228
|
/** 验证函数类型 */
|
|
239
229
|
export type Validator<T> = (value: unknown) => ValidationResult<T>;
|
|
@@ -320,7 +310,7 @@ export function mergeStyles(...styles: (StyleObject | undefined)[]): StyleObject
|
|
|
320
310
|
// ==================== 异步工具类型 ====================
|
|
321
311
|
|
|
322
312
|
/** 异步状态类型 */
|
|
323
|
-
export type AsyncState<T> =
|
|
313
|
+
export type AsyncState<T> =
|
|
324
314
|
| { status: 'idle' }
|
|
325
315
|
| { status: 'loading' }
|
|
326
316
|
| { status: 'success'; data: T }
|
|
@@ -334,7 +324,7 @@ export type AsyncOperation<T> = Promise<T> & {
|
|
|
334
324
|
/** 创建可取消的Promise */
|
|
335
325
|
export function createCancellablePromise<T>(promise: Promise<T>): AsyncOperation<T> {
|
|
336
326
|
let cancelled = false;
|
|
337
|
-
|
|
327
|
+
|
|
338
328
|
const cancellablePromise = promise.then(
|
|
339
329
|
(data) => {
|
|
340
330
|
if (cancelled) {
|
|
@@ -347,13 +337,13 @@ export function createCancellablePromise<T>(promise: Promise<T>): AsyncOperation
|
|
|
347
337
|
throw new Error('Promise was cancelled');
|
|
348
338
|
}
|
|
349
339
|
throw error;
|
|
350
|
-
}
|
|
340
|
+
},
|
|
351
341
|
) as AsyncOperation<T>;
|
|
352
|
-
|
|
342
|
+
|
|
353
343
|
cancellablePromise.cancel = () => {
|
|
354
344
|
cancelled = true;
|
|
355
345
|
};
|
|
356
|
-
|
|
346
|
+
|
|
357
347
|
return cancellablePromise;
|
|
358
348
|
}
|
|
359
349
|
|
|
@@ -407,4 +397,4 @@ export type InferArgs<T> = T extends (...args: infer A) => any ? A : never;
|
|
|
407
397
|
/** 推断函数返回类型 */
|
|
408
398
|
export type InferReturn<T> = T extends (...args: any) => infer R ? R : never;
|
|
409
399
|
|
|
410
|
-
// ==================== 默认导出 ====================
|
|
400
|
+
// ==================== 默认导出 ====================
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
* responsiveUtils 单元测试
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { renderHook
|
|
5
|
+
import { renderHook } from '@testing-library/react';
|
|
6
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
6
7
|
import { useResponsive, getScreenSize, matchScreenSize, getResponsiveValue, generateResponsiveStyles } from '../responsiveUtils';
|
|
7
8
|
|
|
8
9
|
// 模拟Taro环境
|
|
9
|
-
|
|
10
|
-
getSystemInfoSync:
|
|
10
|
+
vi.mock('@tarojs/taro', () => ({
|
|
11
|
+
getSystemInfoSync: vi.fn(() => ({
|
|
11
12
|
windowWidth: 375,
|
|
12
13
|
windowHeight: 667,
|
|
13
14
|
statusBarHeight: 20,
|
|
14
15
|
safeArea: { top: 20, bottom: 0, left: 0, right: 375 }
|
|
15
16
|
})),
|
|
16
|
-
getMenuButtonBoundingClientRect:
|
|
17
|
+
getMenuButtonBoundingClientRect: vi.fn(() => ({
|
|
17
18
|
width: 87,
|
|
18
19
|
height: 32,
|
|
19
20
|
top: 26,
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AbortController 兼容层
|
|
3
|
+
* 为小程序等不支持原生 AbortController 的环境提供兼容实现
|
|
4
|
+
*/
|
|
5
|
+
import { PlatformDetector } from './index';
|
|
6
|
+
|
|
7
|
+
// 定义 AbortSignal 接口
|
|
8
|
+
interface AbortSignal {
|
|
9
|
+
aborted: boolean;
|
|
10
|
+
onabort?: () => void;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// 定义兼容的 AbortController 接口
|
|
14
|
+
export interface CompatibleAbortController {
|
|
15
|
+
signal: AbortSignal;
|
|
16
|
+
abort: () => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 创建兼容的 AbortController
|
|
21
|
+
* 在支持原生 AbortController 的环境中使用原生实现
|
|
22
|
+
* 在小程序等环境中使用模拟实现
|
|
23
|
+
*/
|
|
24
|
+
export function createAbortController(): CompatibleAbortController {
|
|
25
|
+
// 如果是小程序环境,使用模拟实现
|
|
26
|
+
if (PlatformDetector.isMiniProgram()) {
|
|
27
|
+
return {
|
|
28
|
+
signal: {
|
|
29
|
+
aborted: false,
|
|
30
|
+
},
|
|
31
|
+
abort: () => {
|
|
32
|
+
// 小程序环境下,AbortController 的信号主要用于取消请求
|
|
33
|
+
// 但小程序的 Taro.request 不支持 AbortController,所以这里只做简单标记
|
|
34
|
+
// 实际的请求取消需要在适配器中特殊处理
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 在 H5 和 React Native 环境中使用原生 AbortController
|
|
40
|
+
return new AbortController() as unknown as CompatibleAbortController;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 判断是否支持原生 AbortController
|
|
45
|
+
*/
|
|
46
|
+
export function isAbortControllerSupported(): boolean {
|
|
47
|
+
return typeof AbortController !== 'undefined' && PlatformDetector.isH5();
|
|
48
|
+
}
|
package/src/utils/cache.ts
CHANGED
|
@@ -19,11 +19,7 @@ class DataCache {
|
|
|
19
19
|
/**
|
|
20
20
|
* 获取缓存数据或执行获取函数
|
|
21
21
|
*/
|
|
22
|
-
async fetch<T>(
|
|
23
|
-
key: string,
|
|
24
|
-
fetcher: () => Promise<T>,
|
|
25
|
-
options: CacheOptions = {}
|
|
26
|
-
): Promise<T> {
|
|
22
|
+
async fetch<T>(key: string, fetcher: () => Promise<T>, options: CacheOptions = {}): Promise<T> {
|
|
27
23
|
const { ttl = 5 * 60 * 1000, retries = 0 } = options;
|
|
28
24
|
|
|
29
25
|
// 检查缓存
|
|
@@ -50,7 +46,7 @@ class DataCache {
|
|
|
50
46
|
lastError = error as Error;
|
|
51
47
|
if (i < retries) {
|
|
52
48
|
// 等待后重试
|
|
53
|
-
await new Promise(resolve => setTimeout(resolve, 1000 * (i + 1)));
|
|
49
|
+
await new Promise((resolve) => setTimeout(resolve, 1000 * (i + 1)));
|
|
54
50
|
}
|
|
55
51
|
}
|
|
56
52
|
}
|
|
@@ -7,13 +7,13 @@ export const createNamespace = (namespace: string) => {
|
|
|
7
7
|
const bem = (name?: string, modifiers: string[] = []) => {
|
|
8
8
|
const base = namespace;
|
|
9
9
|
if (!name) return base;
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
const block = `${base}__${name}`;
|
|
12
12
|
if (modifiers.length === 0) return block;
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
return modifiers
|
|
15
15
|
.filter(Boolean)
|
|
16
|
-
.map(mod => `${block}--${mod}`)
|
|
16
|
+
.map((mod) => `${block}--${mod}`)
|
|
17
17
|
.join(' ');
|
|
18
18
|
};
|
|
19
19
|
|
|
@@ -21,4 +21,4 @@ export const createNamespace = (namespace: string) => {
|
|
|
21
21
|
bem,
|
|
22
22
|
namespace,
|
|
23
23
|
};
|
|
24
|
-
};
|
|
24
|
+
};
|
package/src/utils/environment.ts
CHANGED
|
@@ -11,7 +11,11 @@ export const isBrowserEnvironment = (): boolean => {
|
|
|
11
11
|
* Detect whether Taro runtime is available (mini-program / native bridge).
|
|
12
12
|
*/
|
|
13
13
|
export const isTaroEnvironment = (): boolean => {
|
|
14
|
-
return
|
|
14
|
+
return (
|
|
15
|
+
typeof process !== 'undefined' &&
|
|
16
|
+
typeof process.env !== 'undefined' &&
|
|
17
|
+
typeof process.env['TARO_ENV'] !== 'undefined'
|
|
18
|
+
);
|
|
15
19
|
};
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -25,11 +29,15 @@ export const resolvePlatform = (): Platform | 'unknown' => {
|
|
|
25
29
|
};
|
|
26
30
|
|
|
27
31
|
/**
|
|
28
|
-
* Safe local storage wrapper guarding non-browser runtimes.
|
|
32
|
+
* Safe local storage wrapper guarding non-browser runtimes and incomplete localStorage implementations.
|
|
29
33
|
*/
|
|
30
34
|
export const safeLocalStorage = {
|
|
31
35
|
getItem(key: string): string | null {
|
|
32
|
-
if (
|
|
36
|
+
if (
|
|
37
|
+
!isBrowserEnvironment() ||
|
|
38
|
+
typeof window.localStorage === 'undefined' ||
|
|
39
|
+
typeof window.localStorage.getItem !== 'function'
|
|
40
|
+
) {
|
|
33
41
|
return null;
|
|
34
42
|
}
|
|
35
43
|
|
|
@@ -42,7 +50,11 @@ export const safeLocalStorage = {
|
|
|
42
50
|
},
|
|
43
51
|
|
|
44
52
|
setItem(key: string, value: string): void {
|
|
45
|
-
if (
|
|
53
|
+
if (
|
|
54
|
+
!isBrowserEnvironment() ||
|
|
55
|
+
typeof window.localStorage === 'undefined' ||
|
|
56
|
+
typeof window.localStorage.setItem !== 'function'
|
|
57
|
+
) {
|
|
46
58
|
return;
|
|
47
59
|
}
|
|
48
60
|
|
|
@@ -54,7 +66,11 @@ export const safeLocalStorage = {
|
|
|
54
66
|
},
|
|
55
67
|
|
|
56
68
|
removeItem(key: string): void {
|
|
57
|
-
if (
|
|
69
|
+
if (
|
|
70
|
+
!isBrowserEnvironment() ||
|
|
71
|
+
typeof window.localStorage === 'undefined' ||
|
|
72
|
+
typeof window.localStorage.removeItem !== 'function'
|
|
73
|
+
) {
|
|
58
74
|
return;
|
|
59
75
|
}
|
|
60
76
|
|
|
@@ -66,7 +82,11 @@ export const safeLocalStorage = {
|
|
|
66
82
|
},
|
|
67
83
|
|
|
68
84
|
clear(): void {
|
|
69
|
-
if (
|
|
85
|
+
if (
|
|
86
|
+
!isBrowserEnvironment() ||
|
|
87
|
+
typeof window.localStorage === 'undefined' ||
|
|
88
|
+
typeof window.localStorage.clear !== 'function'
|
|
89
|
+
) {
|
|
70
90
|
return;
|
|
71
91
|
}
|
|
72
92
|
|
|
@@ -27,7 +27,7 @@ export interface AppError extends Error {
|
|
|
27
27
|
class ErrorHandler {
|
|
28
28
|
private static instance: ErrorHandler;
|
|
29
29
|
|
|
30
|
-
private constructor() {
|
|
30
|
+
private constructor() {}
|
|
31
31
|
|
|
32
32
|
static getInstance(): ErrorHandler {
|
|
33
33
|
if (!ErrorHandler.instance) {
|
|
@@ -41,7 +41,7 @@ class ErrorHandler {
|
|
|
41
41
|
type: ErrorType = ErrorType.UNKNOWN,
|
|
42
42
|
severity: ErrorSeverity = ErrorSeverity.MEDIUM,
|
|
43
43
|
code?: string,
|
|
44
|
-
details?: unknown
|
|
44
|
+
details?: unknown,
|
|
45
45
|
): AppError {
|
|
46
46
|
const error = new Error(message) as AppError;
|
|
47
47
|
error.type = type;
|
package/src/utils/errorLogger.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* 提供统一的错误记录和上报功能
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { safeLocalStorage } from './environment';
|
|
7
|
+
|
|
6
8
|
interface ErrorLog {
|
|
7
9
|
timestamp: string;
|
|
8
10
|
message: string;
|
|
@@ -33,7 +35,7 @@ class ErrorLogger {
|
|
|
33
35
|
type,
|
|
34
36
|
userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined,
|
|
35
37
|
url: typeof window !== 'undefined' ? window.location.href : undefined,
|
|
36
|
-
userId: this.getUserId()
|
|
38
|
+
userId: this.getUserId(),
|
|
37
39
|
};
|
|
38
40
|
|
|
39
41
|
this.addLog(errorLog);
|
|
@@ -52,7 +54,7 @@ class ErrorLogger {
|
|
|
52
54
|
type,
|
|
53
55
|
userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : undefined,
|
|
54
56
|
url: typeof window !== 'undefined' ? window.location.href : undefined,
|
|
55
|
-
userId: this.getUserId()
|
|
57
|
+
userId: this.getUserId(),
|
|
56
58
|
};
|
|
57
59
|
|
|
58
60
|
this.addLog(errorLog);
|
|
@@ -83,12 +85,10 @@ class ErrorLogger {
|
|
|
83
85
|
* 保存日志到本地存储
|
|
84
86
|
*/
|
|
85
87
|
private saveToLocalStorage(): void {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
console.warn('Failed to save error logs to localStorage:', e);
|
|
91
|
-
}
|
|
88
|
+
try {
|
|
89
|
+
safeLocalStorage.setItem('taro-uno-error-logs', JSON.stringify(this.logs));
|
|
90
|
+
} catch (e) {
|
|
91
|
+
console.warn('Failed to save error logs to localStorage:', e);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
@@ -96,15 +96,13 @@ class ErrorLogger {
|
|
|
96
96
|
* 从本地存储加载日志
|
|
97
97
|
*/
|
|
98
98
|
private loadFromLocalStorage(): void {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.logs = JSON.parse(savedLogs);
|
|
104
|
-
}
|
|
105
|
-
} catch (e) {
|
|
106
|
-
console.warn('Failed to load error logs from localStorage:', e);
|
|
99
|
+
try {
|
|
100
|
+
const savedLogs = safeLocalStorage.getItem('taro-uno-error-logs');
|
|
101
|
+
if (savedLogs) {
|
|
102
|
+
this.logs = JSON.parse(savedLogs);
|
|
107
103
|
}
|
|
104
|
+
} catch (e) {
|
|
105
|
+
console.warn('Failed to load error logs from localStorage:', e);
|
|
108
106
|
}
|
|
109
107
|
}
|
|
110
108
|
|
|
@@ -154,9 +152,7 @@ class ErrorLogger {
|
|
|
154
152
|
*/
|
|
155
153
|
clearLogs(): void {
|
|
156
154
|
this.logs = [];
|
|
157
|
-
|
|
158
|
-
localStorage.removeItem('taro-uno-error-logs');
|
|
159
|
-
}
|
|
155
|
+
safeLocalStorage.removeItem('taro-uno-error-logs');
|
|
160
156
|
}
|
|
161
157
|
|
|
162
158
|
/**
|
|
@@ -194,4 +190,4 @@ if (typeof window !== 'undefined') {
|
|
|
194
190
|
errorLogger.init();
|
|
195
191
|
}
|
|
196
192
|
|
|
197
|
-
export default errorLogger;
|
|
193
|
+
export default errorLogger;
|
package/src/utils/formatUtils.ts
CHANGED
|
@@ -14,10 +14,7 @@ interface DateFormatOptions {
|
|
|
14
14
|
/** 日期时间格式化工具类 */
|
|
15
15
|
export class DateTimeFormatUtils {
|
|
16
16
|
/** 格式化日期 */
|
|
17
|
-
static formatDate(
|
|
18
|
-
date: Date | string | number,
|
|
19
|
-
options: DateFormatOptions = {}
|
|
20
|
-
): string {
|
|
17
|
+
static formatDate(date: Date | string | number, options: DateFormatOptions = {}): string {
|
|
21
18
|
const { format = 'YYYY-MM-DD' } = options;
|
|
22
19
|
const d = new Date(date);
|
|
23
20
|
|
|
@@ -36,19 +33,19 @@ export class DateTimeFormatUtils {
|
|
|
36
33
|
|
|
37
34
|
// 支持的格式化标记
|
|
38
35
|
const replacements: Record<string, string> = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
36
|
+
YYYY: String(year),
|
|
37
|
+
YY: String(year).slice(-2),
|
|
38
|
+
MM: month,
|
|
39
|
+
M: String(d.getMonth() + 1),
|
|
40
|
+
DD: day,
|
|
41
|
+
D: String(d.getDate()),
|
|
42
|
+
HH: hours,
|
|
43
|
+
H: String(d.getHours()),
|
|
44
|
+
mm: minutes,
|
|
45
|
+
m: String(d.getMinutes()),
|
|
46
|
+
ss: seconds,
|
|
47
|
+
s: String(d.getSeconds()),
|
|
48
|
+
SSS: milliseconds,
|
|
52
49
|
};
|
|
53
50
|
|
|
54
51
|
// 应用格式化
|
|
@@ -108,12 +105,12 @@ export class DateTimeFormatUtils {
|
|
|
108
105
|
|
|
109
106
|
const startTime = this.formatDate(startDate, { format: 'HH:mm' });
|
|
110
107
|
const endTime = this.formatDate(endDate, { format: 'HH:mm' });
|
|
111
|
-
|
|
108
|
+
|
|
112
109
|
// 如果在同一天
|
|
113
110
|
if (startDate.toDateString() === endDate.toDateString()) {
|
|
114
111
|
return `${startTime} - ${endTime}`;
|
|
115
112
|
}
|
|
116
|
-
|
|
113
|
+
|
|
117
114
|
// 如果不在同一天
|
|
118
115
|
return `${this.formatDate(startDate, { format: 'MM-DD HH:mm' })} - ${this.formatDate(endDate, { format: 'MM-DD HH:mm' })}`;
|
|
119
116
|
}
|
|
@@ -121,10 +118,11 @@ export class DateTimeFormatUtils {
|
|
|
121
118
|
/** 获取星期几 */
|
|
122
119
|
static getWeekday(date: Date | string | number, locale = 'zh-CN'): string {
|
|
123
120
|
const d = new Date(date);
|
|
124
|
-
const weekdays =
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
const weekdays =
|
|
122
|
+
locale === 'zh-CN'
|
|
123
|
+
? ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
|
|
124
|
+
: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
125
|
+
|
|
128
126
|
return weekdays[d.getDay()] || '';
|
|
129
127
|
}
|
|
130
128
|
|
|
@@ -167,10 +165,7 @@ interface NumberFormatOptions {
|
|
|
167
165
|
/** 数字格式化工具类 */
|
|
168
166
|
export class NumberFormatUtils {
|
|
169
167
|
/** 格式化数字 */
|
|
170
|
-
static formatNumber(
|
|
171
|
-
num: number,
|
|
172
|
-
options: NumberFormatOptions = {}
|
|
173
|
-
): string {
|
|
168
|
+
static formatNumber(num: number, options: NumberFormatOptions = {}): string {
|
|
174
169
|
const {
|
|
175
170
|
locale = 'zh-CN',
|
|
176
171
|
style = 'decimal',
|
|
@@ -192,11 +187,7 @@ export class NumberFormatUtils {
|
|
|
192
187
|
}
|
|
193
188
|
|
|
194
189
|
/** 格式化货币 */
|
|
195
|
-
static formatCurrency(
|
|
196
|
-
amount: number,
|
|
197
|
-
currency: string = 'CNY',
|
|
198
|
-
locale = 'zh-CN'
|
|
199
|
-
): string {
|
|
190
|
+
static formatCurrency(amount: number, currency: string = 'CNY', locale = 'zh-CN'): string {
|
|
200
191
|
return this.formatNumber(amount, {
|
|
201
192
|
style: 'currency',
|
|
202
193
|
currency,
|
|
@@ -205,11 +196,7 @@ export class NumberFormatUtils {
|
|
|
205
196
|
}
|
|
206
197
|
|
|
207
198
|
/** 格式化百分比 */
|
|
208
|
-
static formatPercent(
|
|
209
|
-
value: number,
|
|
210
|
-
decimals: number = 2,
|
|
211
|
-
locale = 'zh-CN'
|
|
212
|
-
): string {
|
|
199
|
+
static formatPercent(value: number, decimals: number = 2, locale = 'zh-CN'): string {
|
|
213
200
|
return this.formatNumber(value, {
|
|
214
201
|
style: 'percent',
|
|
215
202
|
minimumFractionDigits: decimals,
|
|
@@ -219,11 +206,7 @@ export class NumberFormatUtils {
|
|
|
219
206
|
}
|
|
220
207
|
|
|
221
208
|
/** 格式化文件大小 */
|
|
222
|
-
static formatFileSize(
|
|
223
|
-
bytes: number,
|
|
224
|
-
decimals: number = 2,
|
|
225
|
-
locale = 'zh-CN'
|
|
226
|
-
): string {
|
|
209
|
+
static formatFileSize(bytes: number, decimals: number = 2, locale = 'zh-CN'): string {
|
|
227
210
|
if (bytes === 0) return '0 B';
|
|
228
211
|
|
|
229
212
|
const k = 1024;
|
|
@@ -235,11 +218,7 @@ export class NumberFormatUtils {
|
|
|
235
218
|
}
|
|
236
219
|
|
|
237
220
|
/** 格式化数字缩写 */
|
|
238
|
-
static formatNumberAbbreviation(
|
|
239
|
-
num: number,
|
|
240
|
-
decimals: number = 1,
|
|
241
|
-
locale = 'zh-CN'
|
|
242
|
-
): string {
|
|
221
|
+
static formatNumberAbbreviation(num: number, decimals: number = 1, locale = 'zh-CN'): string {
|
|
243
222
|
if (num < 1000) {
|
|
244
223
|
return this.formatNumber(num, { locale });
|
|
245
224
|
}
|
|
@@ -329,7 +308,7 @@ export class StringFormatUtils {
|
|
|
329
308
|
|
|
330
309
|
/** 驼峰命名转下划线命名 */
|
|
331
310
|
static camelToSnake(str: string): string {
|
|
332
|
-
return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
|
|
311
|
+
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
333
312
|
}
|
|
334
313
|
|
|
335
314
|
/** 下划线命名转驼峰命名 */
|
|
@@ -344,7 +323,7 @@ export class StringFormatUtils {
|
|
|
344
323
|
|
|
345
324
|
/** 驼峰命名转中划线命名 */
|
|
346
325
|
static camelToKebab(str: string): string {
|
|
347
|
-
return str.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);
|
|
326
|
+
return str.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
|
|
348
327
|
}
|
|
349
328
|
|
|
350
329
|
/** 格式化手机号 */
|
|
@@ -381,13 +360,9 @@ export class StringFormatUtils {
|
|
|
381
360
|
}
|
|
382
361
|
|
|
383
362
|
/** 高亮关键词 */
|
|
384
|
-
static highlightKeywords(
|
|
385
|
-
text: string,
|
|
386
|
-
keywords: string[],
|
|
387
|
-
highlightClass = 'highlight'
|
|
388
|
-
): string {
|
|
363
|
+
static highlightKeywords(text: string, keywords: string[], highlightClass = 'highlight'): string {
|
|
389
364
|
let result = text;
|
|
390
|
-
keywords.forEach(keyword => {
|
|
365
|
+
keywords.forEach((keyword) => {
|
|
391
366
|
const regex = new RegExp(`(${keyword})`, 'gi');
|
|
392
367
|
result = result.replace(regex, `<span class="${highlightClass}">$1</span>`);
|
|
393
368
|
});
|
|
@@ -415,25 +390,18 @@ export class StringFormatUtils {
|
|
|
415
390
|
|
|
416
391
|
/** 生成UUID */
|
|
417
392
|
static generateUUID(): string {
|
|
418
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
|
419
|
-
const r = Math.random() * 16 | 0;
|
|
420
|
-
const v = c === 'x' ? r : (r & 0x3 | 0x8
|
|
393
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
394
|
+
const r = (Math.random() * 16) | 0;
|
|
395
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
421
396
|
return v.toString(16);
|
|
422
397
|
});
|
|
423
398
|
}
|
|
424
399
|
|
|
425
400
|
/** 格式化模板字符串 */
|
|
426
|
-
static template(
|
|
427
|
-
template
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
): string {
|
|
431
|
-
return template.replace(
|
|
432
|
-
new RegExp(`${delimiter}(\\w+)${delimiter}`, 'g'),
|
|
433
|
-
(_, key) => {
|
|
434
|
-
return data[key] !== undefined ? String(data[key]) : '';
|
|
435
|
-
}
|
|
436
|
-
);
|
|
401
|
+
static template(template: string, data: Record<string, any>, delimiter = '{%}'): string {
|
|
402
|
+
return template.replace(new RegExp(`${delimiter}(\\w+)${delimiter}`, 'g'), (_, key) => {
|
|
403
|
+
return data[key] !== undefined ? String(data[key]) : '';
|
|
404
|
+
});
|
|
437
405
|
}
|
|
438
406
|
}
|
|
439
407
|
|
|
@@ -441,4 +409,4 @@ export class StringFormatUtils {
|
|
|
441
409
|
|
|
442
410
|
export const dateTimeFormat = DateTimeFormatUtils;
|
|
443
411
|
export const numberFormat = NumberFormatUtils;
|
|
444
|
-
export const stringFormat = StringFormatUtils;
|
|
412
|
+
export const stringFormat = StringFormatUtils;
|