@hsu-react/ui 1.0.0 → 2.0.1
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 +15 -6
- package/es/components/Button/index.d.ts +49 -8
- package/es/components/Button/index.js +68 -25
- package/es/components/Button/index.module.scss +38 -0
- package/es/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
- package/es/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
- package/es/components/ChainGraph/index.js +3 -1
- package/es/components/ChainGraph/index.module.scss +2 -2
- package/es/components/Chart/Group/index.module.scss +1 -1
- package/es/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
- package/es/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
- package/es/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
- package/es/components/Chat/ChatHistory/index.module.scss +3 -3
- package/es/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
- package/es/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
- package/es/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
- package/es/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
- package/es/components/Chat/ChatInput/_components/UploadButton/index.js +1 -1
- package/es/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
- package/es/components/Chat/ChatInput/_utils/index.js +1 -1
- package/es/components/Chat/ChatInput/index.module.scss +12 -11
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.js +1 -1
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.js +3 -1
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
- package/es/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
- package/es/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
- package/es/components/Chat/ChatList/_components/User/index.module.scss +21 -10
- package/es/components/Chat/ChatList/index.js +35 -30
- package/es/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
- package/es/components/Checkbox/index.module.scss +23 -28
- package/es/components/CodeMirror/index.module.scss +6 -6
- package/es/components/Copy/index.d.ts +8 -2
- package/es/components/Copy/index.js +45 -22
- package/es/components/Copy/index.module.scss +5 -5
- package/es/components/DatePicker/RangePicker/index.js +5 -1
- package/es/components/DatePicker/RangePicker/index.module.scss +10 -1
- package/es/components/DatePicker/StepPicker/index.module.scss +6 -4
- package/es/components/DatePicker/index.js +14 -3
- package/es/components/DatePicker/index.module.scss +2 -2
- package/es/components/Descriptions/index.d.ts +6 -2
- package/es/components/Descriptions/index.js +15 -8
- package/es/components/Editor/index.module.scss +7 -7
- package/es/components/FileCol/index.js +3 -3
- package/es/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
- package/es/components/FilePreview/_components/PdfPreview/index.js +9 -2
- package/es/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
- package/es/components/FilePreview/index.module.scss +4 -4
- package/es/components/Form/DrawerForm/index.js +10 -18
- package/es/components/Form/ImportForm/index.js +15 -16
- package/es/components/Form/ModalForm/index.d.ts +1 -1
- package/es/components/Form/ModalForm/index.js +14 -16
- package/es/components/Form/index.d.ts +12 -0
- package/es/components/Form/index.js +7 -1
- package/es/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
- package/es/components/FormItem/FormRadio/index.module.scss +11 -13
- package/es/components/FormItem/FormSegmented/index.module.scss +1 -1
- package/es/components/FormItem/FormSlider/index.module.scss +1 -1
- package/es/components/FormItem/FormUpload/FormImage/index.js +1 -1
- package/es/components/FormItem/FormUpload/index.js +2 -1
- package/es/components/FormItem/FormUpload/index.module.scss +17 -17
- package/es/components/FormItem/ItemContainer/index.js +4 -4
- package/es/components/FormItem/ItemContainer/index.module.scss +33 -7
- package/es/components/Input/Number/index.js +41 -55
- package/es/components/Input/Number/index.module.scss +27 -54
- package/es/components/Input/Range/index.module.scss +16 -5
- package/es/components/Input/TextArea/index.module.scss +13 -13
- package/es/components/Input/index.d.ts +3 -1
- package/es/components/Input/index.js +2 -0
- package/es/components/Input/index.module.scss +1 -1
- package/es/components/Markdown/Editor/index.module.scss +4 -4
- package/es/components/Markdown/Views/MermaidBlock.js +15 -1
- package/es/components/Markdown/Views/blocks.module.scss +13 -13
- package/es/components/Markdown/Views/index.module.scss +3 -3
- package/es/components/Modal/index.d.ts +12 -2
- package/es/components/Modal/index.js +31 -11
- package/es/components/Modal/index.module.scss +11 -1
- package/es/components/Operate/index.js +3 -1
- package/es/components/Operate/index.module.scss +1 -1
- package/es/components/Pagination/index.module.scss +19 -18
- package/es/components/Panel/DefaultPanel/index.module.scss +3 -3
- package/es/components/Panel/IframePanel/index.js +3 -1
- package/es/components/Panel/IframePanel/index.module.scss +2 -2
- package/es/components/Panel/ListPanel/ListModalPanel/index.d.ts +2 -2
- package/es/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
- package/es/components/Panel/ListPanel/_components/ColumnMgt/index.js +9 -17
- package/es/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
- package/es/components/Panel/ListPanel/_components/ToolBar/index.js +1 -1
- package/es/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
- package/es/components/Panel/ListPanel/index.d.ts +2 -2
- package/es/components/Panel/ListPanel/index.module.scss +9 -9
- package/es/components/Search/SearchAdvanced/index.d.ts +3 -3
- package/es/components/Search/SearchCard/index.module.scss +15 -15
- package/es/components/Search/SearchCollapsible/index.d.ts +3 -3
- package/es/components/Search/SearchWithFilter/index.d.ts +3 -3
- package/es/components/Search/SearchWithMore/index.d.ts +3 -3
- package/es/components/Search/_components/ButtonGroup/index.d.ts +4 -4
- package/es/components/Search/_components/ButtonGroup/index.js +2 -2
- package/es/components/Search/_components/FilterDropdown/index.js +3 -1
- package/es/components/Search/_hooks/useSearchCommon.d.ts +3 -3
- package/es/components/Search/_types/index.d.ts +3 -3
- package/es/components/Search/index.d.ts +3 -3
- package/es/components/Search/index.module.scss +33 -5
- package/es/components/SecondConf/index.js +16 -6
- package/es/components/SecondConf/index.module.scss +3 -3
- package/es/components/Select/AutoCompleteSelect/index.js +17 -7
- package/es/components/Select/AutoCompleteSelect/index.module.scss +73 -132
- package/es/components/Select/IconSelect/index.js +67 -60
- package/es/components/Select/IconSelect/index.module.scss +4 -3
- package/es/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.d.ts +1 -1
- package/es/components/Select/TreeSelect/index.js +18 -7
- package/es/components/Select/TreeSelect/index.module.scss +19 -44
- package/es/components/Select/index.d.ts +17 -2
- package/es/components/Select/index.js +22 -4
- package/es/components/Select/index.module.scss +71 -131
- package/es/components/Slider/index.module.scss +1 -1
- package/es/components/Switch/index.module.scss +1 -1
- package/es/components/TabBar/index.module.scss +11 -11
- package/es/components/Table/_components/Drag/index.js +4 -1
- package/es/components/Table/_hooks/useTableColumns.js +1 -1
- package/es/components/Table/_utils/tableUtils.d.ts +1 -1
- package/es/components/Table/_utils/tableUtils.js +4 -3
- package/es/components/Table/index.d.ts +18 -2
- package/es/components/Table/index.js +9 -0
- package/es/components/Table/index.module.scss +14 -14
- package/es/components/Tags/_components/EllipsisTag/index.js +1 -1
- package/es/components/TextEllipsis/index.js +12 -8
- package/es/components/Tree/index.d.ts +8 -2
- package/es/components/Tree/index.js +2 -0
- package/es/components/Tree/index.module.scss +6 -6
- package/es/components/Upload/_components/UploadedItem/index.js +3 -3
- package/es/components/Upload/_components/UploadingItem/index.js +3 -3
- package/es/components/Upload/_utils/normalUpload.d.ts +1 -1
- package/es/components/Upload/_utils/validateFile.js +49 -2
- package/es/components/Upload/index.d.ts +8 -2
- package/es/components/Upload/index.js +11 -4
- package/es/config-provider/index.d.ts +34 -2
- package/es/config-provider/index.js +59 -5
- package/es/feedback/index.d.ts +20 -0
- package/es/feedback/index.js +130 -0
- package/es/hooks/index.d.ts +5 -0
- package/es/hooks/index.js +4 -1
- package/es/hooks/useBreakpoint.d.ts +24 -0
- package/es/hooks/useBreakpoint.js +57 -0
- package/es/hooks/useIsDark.d.ts +9 -0
- package/es/hooks/useIsDark.js +64 -0
- package/es/hooks/usePointerType.d.ts +22 -0
- package/es/hooks/usePointerType.js +62 -0
- package/es/index.d.ts +4 -4
- package/es/index.js +19 -5
- package/es/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.d.ts +10 -0
- package/es/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.js +19 -0
- package/es/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.d.ts +11 -0
- package/es/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.js +26 -0
- package/es/layout/Breadcrumb/_hooks/useBreadcrumbPath.d.ts +5 -0
- package/es/layout/Breadcrumb/_hooks/useBreadcrumbPath.js +104 -0
- package/es/layout/Breadcrumb/_utils/formatMenu.d.ts +9 -0
- package/es/layout/Breadcrumb/_utils/formatMenu.js +28 -0
- package/es/layout/Breadcrumb/_utils/formatRoutes.d.ts +9 -0
- package/es/layout/Breadcrumb/_utils/formatRoutes.js +76 -0
- package/es/layout/Breadcrumb/_utils/pathMatch.d.ts +8 -0
- package/es/layout/Breadcrumb/_utils/pathMatch.js +45 -0
- package/es/layout/Breadcrumb/index.d.ts +19 -0
- package/es/layout/Breadcrumb/index.js +96 -0
- package/es/layout/Breadcrumb/index.module.scss +15 -0
- package/es/layout/Header/index.d.ts +39 -0
- package/es/layout/Header/index.js +166 -0
- package/es/layout/Header/index.module.scss +215 -0
- package/es/layout/I18n/I18nStore.d.ts +29 -0
- package/es/layout/I18n/I18nStore.js +94 -0
- package/es/layout/I18n/index.d.ts +14 -0
- package/es/layout/I18n/index.js +33 -0
- package/es/layout/I18n/locales/en-US.d.ts +2 -0
- package/es/layout/I18n/locales/en-US.js +15 -0
- package/es/layout/I18n/locales/zh-CN.d.ts +2 -0
- package/es/layout/I18n/locales/zh-CN.js +15 -0
- package/es/layout/Menu/_components/SecondaryHeader/index.d.ts +22 -0
- package/es/layout/Menu/_components/SecondaryHeader/index.js +48 -0
- package/es/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
- package/es/layout/Menu/_hooks/useMenuPath.d.ts +17 -0
- package/es/layout/Menu/_hooks/useMenuPath.js +91 -0
- package/es/layout/Menu/_hooks/useOnlyLvOneMenu.d.ts +13 -0
- package/es/layout/Menu/_hooks/useOnlyLvOneMenu.js +25 -0
- package/es/layout/Menu/_utils/formatMenu.d.ts +10 -0
- package/es/layout/Menu/_utils/formatMenu.js +55 -0
- package/es/layout/Menu/_utils/pathMatch.d.ts +8 -0
- package/es/layout/Menu/_utils/pathMatch.js +42 -0
- package/es/layout/Menu/_utils/setActiveIcon.d.ts +7 -0
- package/es/layout/Menu/_utils/setActiveIcon.js +20 -0
- package/es/layout/Menu/index.d.ts +34 -0
- package/es/layout/Menu/index.js +195 -0
- package/es/layout/Menu/index.module.scss +50 -0
- package/es/layout/NavTabBar/_components/SortableTab/index.d.ts +9 -0
- package/es/layout/NavTabBar/_components/SortableTab/index.js +34 -0
- package/es/layout/NavTabBar/_components/TabContextMenu/index.d.ts +20 -0
- package/es/layout/NavTabBar/_components/TabContextMenu/index.js +124 -0
- package/es/layout/NavTabBar/_components/TabDragOverlay/index.d.ts +20 -0
- package/es/layout/NavTabBar/_components/TabDragOverlay/index.js +50 -0
- package/es/layout/NavTabBar/_components/TabLabel/index.d.ts +22 -0
- package/es/layout/NavTabBar/_components/TabLabel/index.js +61 -0
- package/es/layout/NavTabBar/_hooks/useDropTabKey.d.ts +5 -0
- package/es/layout/NavTabBar/_hooks/useDropTabKey.js +25 -0
- package/es/layout/NavTabBar/_hooks/useTabContextMenu.d.ts +8 -0
- package/es/layout/NavTabBar/_hooks/useTabContextMenu.js +31 -0
- package/es/layout/NavTabBar/_hooks/useTabPath.d.ts +16 -0
- package/es/layout/NavTabBar/_hooks/useTabPath.js +131 -0
- package/es/layout/NavTabBar/_hooks/useTabTitle.d.ts +5 -0
- package/es/layout/NavTabBar/_hooks/useTabTitle.js +29 -0
- package/es/layout/NavTabBar/_utils/formatNavTabBar.d.ts +9 -0
- package/es/layout/NavTabBar/_utils/formatNavTabBar.js +48 -0
- package/es/layout/NavTabBar/_utils/pathMatch.d.ts +8 -0
- package/es/layout/NavTabBar/_utils/pathMatch.js +33 -0
- package/es/layout/NavTabBar/_utils/tabActions.d.ts +21 -0
- package/es/layout/NavTabBar/_utils/tabActions.js +114 -0
- package/es/layout/NavTabBar/index.d.ts +21 -0
- package/es/layout/NavTabBar/index.js +224 -0
- package/es/layout/NavTabBar/index.module.scss +179 -0
- package/es/layout/Theme/ThemeStore.d.ts +18 -0
- package/es/layout/Theme/ThemeStore.js +80 -0
- package/es/layout/Theme/index.d.ts +30 -0
- package/es/layout/Theme/index.js +89 -0
- package/es/layout/Theme/index.module.scss +6 -0
- package/es/layout/_hooks/useDropTab.d.ts +6 -0
- package/es/layout/_hooks/useDropTab.js +13 -0
- package/es/layout/_hooks/useReload.d.ts +6 -0
- package/es/layout/_hooks/useReload.js +10 -0
- package/es/layout/_hooks/useSetTabTitle.d.ts +6 -0
- package/es/layout/_hooks/useSetTabTitle.js +10 -0
- package/es/layout/_utils/storage.d.ts +6 -0
- package/es/layout/_utils/storage.js +32 -0
- package/es/layout/index.d.ts +54 -0
- package/es/layout/index.js +58 -0
- package/es/layout/types.d.ts +51 -0
- package/es/layout/types.js +1 -0
- package/es/request/index.js +15 -1
- package/es/styles/_responsive.scss +53 -0
- package/es/styles/antd-overload.scss +77 -21
- package/es/styles/tokens.d.ts +113 -13
- package/es/styles/tokens.js +176 -28
- package/es/styles/tokens.json +82 -0
- package/es/styles/tokens.scss +99 -52
- package/es/types/antd.d.ts +35 -0
- package/es/types/antd.js +1 -0
- package/es/utils/semantic.d.ts +31 -0
- package/es/utils/semantic.js +37 -0
- package/lib/components/Button/index.d.ts +49 -8
- package/lib/components/Button/index.js +62 -20
- package/lib/components/Button/index.module.scss +38 -0
- package/lib/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
- package/lib/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
- package/lib/components/ChainGraph/index.js +3 -1
- package/lib/components/ChainGraph/index.module.scss +2 -2
- package/lib/components/Chart/Group/index.module.scss +1 -1
- package/lib/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
- package/lib/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
- package/lib/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
- package/lib/components/Chat/ChatHistory/index.module.scss +3 -3
- package/lib/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
- package/lib/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
- package/lib/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
- package/lib/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
- package/lib/components/Chat/ChatInput/_components/UploadButton/index.js +1 -1
- package/lib/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
- package/lib/components/Chat/ChatInput/_utils/index.js +6 -6
- package/lib/components/Chat/ChatInput/index.module.scss +12 -11
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.js +2 -2
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.js +3 -1
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
- package/lib/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
- package/lib/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
- package/lib/components/Chat/ChatList/_components/User/index.module.scss +21 -10
- package/lib/components/Chat/ChatList/index.js +33 -27
- package/lib/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
- package/lib/components/Checkbox/index.module.scss +23 -28
- package/lib/components/CodeMirror/index.module.scss +6 -6
- package/lib/components/Copy/index.d.ts +8 -2
- package/lib/components/Copy/index.js +38 -23
- package/lib/components/Copy/index.module.scss +5 -5
- package/lib/components/DatePicker/RangePicker/index.js +5 -1
- package/lib/components/DatePicker/RangePicker/index.module.scss +10 -1
- package/lib/components/DatePicker/StepPicker/index.module.scss +6 -4
- package/lib/components/DatePicker/index.js +14 -3
- package/lib/components/DatePicker/index.module.scss +2 -2
- package/lib/components/Descriptions/index.d.ts +6 -2
- package/lib/components/Descriptions/index.js +14 -12
- package/lib/components/Editor/index.module.scss +7 -7
- package/lib/components/FileCol/index.js +3 -3
- package/lib/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
- package/lib/components/FilePreview/_components/PdfPreview/index.js +9 -2
- package/lib/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
- package/lib/components/FilePreview/index.module.scss +4 -4
- package/lib/components/Form/DrawerForm/index.js +10 -17
- package/lib/components/Form/ImportForm/index.js +13 -18
- package/lib/components/Form/ModalForm/index.d.ts +1 -1
- package/lib/components/Form/ModalForm/index.js +11 -17
- package/lib/components/Form/index.d.ts +12 -0
- package/lib/components/Form/index.js +7 -1
- package/lib/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
- package/lib/components/FormItem/FormRadio/index.module.scss +11 -13
- package/lib/components/FormItem/FormSegmented/index.module.scss +1 -1
- package/lib/components/FormItem/FormSlider/index.module.scss +1 -1
- package/lib/components/FormItem/FormUpload/FormImage/index.js +3 -3
- package/lib/components/FormItem/FormUpload/index.js +3 -2
- package/lib/components/FormItem/FormUpload/index.module.scss +17 -17
- package/lib/components/FormItem/ItemContainer/index.js +4 -4
- package/lib/components/FormItem/ItemContainer/index.module.scss +33 -7
- package/lib/components/Input/Number/index.js +38 -54
- package/lib/components/Input/Number/index.module.scss +27 -54
- package/lib/components/Input/Range/index.module.scss +16 -5
- package/lib/components/Input/TextArea/index.module.scss +13 -13
- package/lib/components/Input/index.d.ts +3 -1
- package/lib/components/Input/index.js +2 -0
- package/lib/components/Input/index.module.scss +1 -1
- package/lib/components/Markdown/Editor/index.module.scss +4 -4
- package/lib/components/Markdown/Views/MermaidBlock.js +15 -1
- package/lib/components/Markdown/Views/blocks.module.scss +13 -13
- package/lib/components/Markdown/Views/index.module.scss +3 -3
- package/lib/components/Modal/index.d.ts +12 -2
- package/lib/components/Modal/index.js +30 -10
- package/lib/components/Modal/index.module.scss +11 -1
- package/lib/components/Operate/index.js +3 -1
- package/lib/components/Operate/index.module.scss +1 -1
- package/lib/components/Pagination/index.module.scss +19 -18
- package/lib/components/Panel/DefaultPanel/index.module.scss +3 -3
- package/lib/components/Panel/IframePanel/index.js +3 -1
- package/lib/components/Panel/IframePanel/index.module.scss +2 -2
- package/lib/components/Panel/ListPanel/ListModalPanel/index.d.ts +2 -2
- package/lib/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
- package/lib/components/Panel/ListPanel/_components/ColumnMgt/index.js +9 -20
- package/lib/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
- package/lib/components/Panel/ListPanel/_components/ToolBar/index.js +1 -1
- package/lib/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
- package/lib/components/Panel/ListPanel/index.d.ts +2 -2
- package/lib/components/Panel/ListPanel/index.module.scss +9 -9
- package/lib/components/Search/SearchAdvanced/index.d.ts +3 -3
- package/lib/components/Search/SearchCard/index.module.scss +15 -15
- package/lib/components/Search/SearchCollapsible/index.d.ts +3 -3
- package/lib/components/Search/SearchWithFilter/index.d.ts +3 -3
- package/lib/components/Search/SearchWithMore/index.d.ts +3 -3
- package/lib/components/Search/_components/ButtonGroup/index.d.ts +4 -4
- package/lib/components/Search/_components/ButtonGroup/index.js +2 -2
- package/lib/components/Search/_components/FilterDropdown/index.js +3 -1
- package/lib/components/Search/_hooks/useSearchCommon.d.ts +3 -3
- package/lib/components/Search/_types/index.d.ts +3 -3
- package/lib/components/Search/index.d.ts +3 -3
- package/lib/components/Search/index.module.scss +33 -5
- package/lib/components/SecondConf/index.js +14 -6
- package/lib/components/SecondConf/index.module.scss +3 -3
- package/lib/components/Select/AutoCompleteSelect/index.js +15 -5
- package/lib/components/Select/AutoCompleteSelect/index.module.scss +73 -132
- package/lib/components/Select/IconSelect/index.js +64 -57
- package/lib/components/Select/IconSelect/index.module.scss +4 -3
- package/lib/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.d.ts +1 -1
- package/lib/components/Select/TreeSelect/index.js +18 -7
- package/lib/components/Select/TreeSelect/index.module.scss +19 -44
- package/lib/components/Select/index.d.ts +17 -2
- package/lib/components/Select/index.js +22 -4
- package/lib/components/Select/index.module.scss +71 -131
- package/lib/components/Slider/index.module.scss +1 -1
- package/lib/components/Switch/index.module.scss +1 -1
- package/lib/components/TabBar/index.module.scss +11 -11
- package/lib/components/Table/_components/Drag/index.js +6 -2
- package/lib/components/Table/_hooks/useTableColumns.js +1 -1
- package/lib/components/Table/_utils/tableUtils.d.ts +1 -1
- package/lib/components/Table/_utils/tableUtils.js +4 -3
- package/lib/components/Table/index.d.ts +18 -2
- package/lib/components/Table/index.js +9 -0
- package/lib/components/Table/index.module.scss +14 -14
- package/lib/components/Tags/_components/EllipsisTag/index.js +1 -1
- package/lib/components/TextEllipsis/index.js +6 -4
- package/lib/components/Tree/index.d.ts +8 -2
- package/lib/components/Tree/index.js +2 -0
- package/lib/components/Tree/index.module.scss +6 -6
- package/lib/components/Upload/_components/UploadedItem/index.js +3 -3
- package/lib/components/Upload/_components/UploadingItem/index.js +3 -3
- package/lib/components/Upload/_utils/normalUpload.d.ts +1 -1
- package/lib/components/Upload/_utils/validateFile.js +47 -2
- package/lib/components/Upload/index.d.ts +8 -2
- package/lib/components/Upload/index.js +11 -4
- package/lib/config-provider/index.d.ts +34 -2
- package/lib/config-provider/index.js +55 -4
- package/lib/feedback/index.d.ts +20 -0
- package/lib/feedback/index.js +115 -0
- package/lib/hooks/index.d.ts +5 -0
- package/lib/hooks/index.js +21 -0
- package/lib/hooks/useBreakpoint.d.ts +24 -0
- package/lib/hooks/useBreakpoint.js +49 -0
- package/lib/hooks/useIsDark.d.ts +9 -0
- package/lib/hooks/useIsDark.js +54 -0
- package/lib/hooks/usePointerType.d.ts +22 -0
- package/lib/hooks/usePointerType.js +55 -0
- package/lib/index.d.ts +4 -4
- package/lib/index.js +78 -19
- package/lib/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.d.ts +10 -0
- package/lib/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.js +26 -0
- package/lib/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.d.ts +11 -0
- package/lib/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.js +32 -0
- package/lib/layout/Breadcrumb/_hooks/useBreadcrumbPath.d.ts +5 -0
- package/lib/layout/Breadcrumb/_hooks/useBreadcrumbPath.js +89 -0
- package/lib/layout/Breadcrumb/_utils/formatMenu.d.ts +9 -0
- package/lib/layout/Breadcrumb/_utils/formatMenu.js +31 -0
- package/lib/layout/Breadcrumb/_utils/formatRoutes.d.ts +9 -0
- package/lib/layout/Breadcrumb/_utils/formatRoutes.js +67 -0
- package/lib/layout/Breadcrumb/_utils/pathMatch.d.ts +8 -0
- package/lib/layout/Breadcrumb/_utils/pathMatch.js +47 -0
- package/lib/layout/Breadcrumb/index.d.ts +19 -0
- package/lib/layout/Breadcrumb/index.js +96 -0
- package/lib/layout/Breadcrumb/index.module.scss +15 -0
- package/lib/layout/Header/index.d.ts +39 -0
- package/lib/layout/Header/index.js +172 -0
- package/lib/layout/Header/index.module.scss +215 -0
- package/lib/layout/I18n/I18nStore.d.ts +29 -0
- package/lib/layout/I18n/I18nStore.js +82 -0
- package/lib/layout/I18n/index.d.ts +14 -0
- package/lib/layout/I18n/index.js +45 -0
- package/lib/layout/I18n/locales/en-US.d.ts +2 -0
- package/lib/layout/I18n/locales/en-US.js +21 -0
- package/lib/layout/I18n/locales/zh-CN.d.ts +2 -0
- package/lib/layout/I18n/locales/zh-CN.js +21 -0
- package/lib/layout/Menu/_components/SecondaryHeader/index.d.ts +22 -0
- package/lib/layout/Menu/_components/SecondaryHeader/index.js +49 -0
- package/lib/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
- package/lib/layout/Menu/_hooks/useMenuPath.d.ts +17 -0
- package/lib/layout/Menu/_hooks/useMenuPath.js +75 -0
- package/lib/layout/Menu/_hooks/useOnlyLvOneMenu.d.ts +13 -0
- package/lib/layout/Menu/_hooks/useOnlyLvOneMenu.js +31 -0
- package/lib/layout/Menu/_utils/formatMenu.d.ts +10 -0
- package/lib/layout/Menu/_utils/formatMenu.js +55 -0
- package/lib/layout/Menu/_utils/pathMatch.d.ts +8 -0
- package/lib/layout/Menu/_utils/pathMatch.js +44 -0
- package/lib/layout/Menu/_utils/setActiveIcon.d.ts +7 -0
- package/lib/layout/Menu/_utils/setActiveIcon.js +27 -0
- package/lib/layout/Menu/index.d.ts +34 -0
- package/lib/layout/Menu/index.js +158 -0
- package/lib/layout/Menu/index.module.scss +50 -0
- package/lib/layout/NavTabBar/_components/SortableTab/index.d.ts +9 -0
- package/lib/layout/NavTabBar/_components/SortableTab/index.js +39 -0
- package/lib/layout/NavTabBar/_components/TabContextMenu/index.d.ts +20 -0
- package/lib/layout/NavTabBar/_components/TabContextMenu/index.js +129 -0
- package/lib/layout/NavTabBar/_components/TabDragOverlay/index.d.ts +20 -0
- package/lib/layout/NavTabBar/_components/TabDragOverlay/index.js +54 -0
- package/lib/layout/NavTabBar/_components/TabLabel/index.d.ts +22 -0
- package/lib/layout/NavTabBar/_components/TabLabel/index.js +68 -0
- package/lib/layout/NavTabBar/_hooks/useDropTabKey.d.ts +5 -0
- package/lib/layout/NavTabBar/_hooks/useDropTabKey.js +32 -0
- package/lib/layout/NavTabBar/_hooks/useTabContextMenu.d.ts +8 -0
- package/lib/layout/NavTabBar/_hooks/useTabContextMenu.js +28 -0
- package/lib/layout/NavTabBar/_hooks/useTabPath.d.ts +16 -0
- package/lib/layout/NavTabBar/_hooks/useTabPath.js +107 -0
- package/lib/layout/NavTabBar/_hooks/useTabTitle.d.ts +5 -0
- package/lib/layout/NavTabBar/_hooks/useTabTitle.js +32 -0
- package/lib/layout/NavTabBar/_utils/formatNavTabBar.d.ts +9 -0
- package/lib/layout/NavTabBar/_utils/formatNavTabBar.js +49 -0
- package/lib/layout/NavTabBar/_utils/pathMatch.d.ts +8 -0
- package/lib/layout/NavTabBar/_utils/pathMatch.js +37 -0
- package/lib/layout/NavTabBar/_utils/tabActions.d.ts +21 -0
- package/lib/layout/NavTabBar/_utils/tabActions.js +93 -0
- package/lib/layout/NavTabBar/index.d.ts +21 -0
- package/lib/layout/NavTabBar/index.js +206 -0
- package/lib/layout/NavTabBar/index.module.scss +179 -0
- package/lib/layout/Theme/ThemeStore.d.ts +18 -0
- package/lib/layout/Theme/ThemeStore.js +63 -0
- package/lib/layout/Theme/index.d.ts +30 -0
- package/lib/layout/Theme/index.js +100 -0
- package/lib/layout/Theme/index.module.scss +6 -0
- package/lib/layout/_hooks/useDropTab.d.ts +6 -0
- package/lib/layout/_hooks/useDropTab.js +21 -0
- package/lib/layout/_hooks/useReload.d.ts +6 -0
- package/lib/layout/_hooks/useReload.js +18 -0
- package/lib/layout/_hooks/useSetTabTitle.d.ts +6 -0
- package/lib/layout/_hooks/useSetTabTitle.js +18 -0
- package/lib/layout/_utils/storage.d.ts +6 -0
- package/lib/layout/_utils/storage.js +39 -0
- package/lib/layout/index.d.ts +54 -0
- package/lib/layout/index.js +102 -0
- package/lib/layout/types.d.ts +51 -0
- package/lib/layout/types.js +5 -0
- package/lib/request/index.js +5 -1
- package/lib/styles/_responsive.scss +53 -0
- package/lib/styles/antd-overload.scss +77 -21
- package/lib/styles/tokens.d.ts +113 -13
- package/lib/styles/tokens.js +157 -30
- package/lib/styles/tokens.json +82 -0
- package/lib/styles/tokens.scss +99 -52
- package/lib/types/antd.d.ts +35 -0
- package/lib/types/antd.js +5 -0
- package/lib/utils/semantic.d.ts +31 -0
- package/lib/utils/semantic.js +40 -0
- package/package.json +28 -22
- package/src/components/Button/index.md +54 -10
- package/src/components/Button/index.module.scss +38 -0
- package/src/components/Button/index.tsx +107 -51
- package/src/components/ChainGraph/_components/ExpandButtons/index.module.scss +5 -3
- package/src/components/ChainGraph/_components/SearchSelect/index.module.scss +3 -2
- package/src/components/ChainGraph/index.module.scss +2 -2
- package/src/components/ChainGraph/index.tsx +1 -1
- package/src/components/Chart/Group/index.module.scss +1 -1
- package/src/components/Chat/ChatHistory/_components/HistoryGroup/index.module.scss +1 -1
- package/src/components/Chat/ChatHistory/_components/HistoryItem/index.module.scss +13 -13
- package/src/components/Chat/ChatHistory/_components/NewChatButton/index.module.scss +6 -6
- package/src/components/Chat/ChatHistory/index.module.scss +3 -3
- package/src/components/Chat/ChatInput/_components/AgentToggleButton/index.module.scss +9 -9
- package/src/components/Chat/ChatInput/_components/FileList/index.module.scss +3 -3
- package/src/components/Chat/ChatInput/_components/SendButton/index.module.scss +3 -3
- package/src/components/Chat/ChatInput/_components/StopButton/index.module.scss +2 -2
- package/src/components/Chat/ChatInput/_components/UploadButton/index.module.scss +3 -3
- package/src/components/Chat/ChatInput/_components/UploadButton/index.tsx +1 -1
- package/src/components/Chat/ChatInput/_utils/index.ts +1 -1
- package/src/components/Chat/ChatInput/index.module.scss +12 -11
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.module.scss +6 -6
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/Copy/index.tsx +1 -1
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.module.scss +6 -6
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/LikeDislike/index.tsx +1 -1
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/_components/QuoteList/index.module.scss +8 -8
- package/src/components/Chat/ChatList/_components/Assistant/AssistantItem/index.module.scss +7 -7
- package/src/components/Chat/ChatList/_components/Assistant/index.module.scss +3 -3
- package/src/components/Chat/ChatList/_components/User/index.module.scss +21 -10
- package/src/components/Chat/ChatList/index.tsx +5 -2
- package/src/components/Checkbox/CheckboxGroup/index.module.scss +10 -13
- package/src/components/Checkbox/index.module.scss +23 -28
- package/src/components/CodeMirror/index.module.scss +6 -6
- package/src/components/Copy/index.module.scss +5 -5
- package/src/components/Copy/index.tsx +41 -25
- package/src/components/DatePicker/RangePicker/index.module.scss +10 -1
- package/src/components/DatePicker/RangePicker/index.tsx +5 -3
- package/src/components/DatePicker/StepPicker/index.module.scss +6 -4
- package/src/components/DatePicker/index.module.scss +2 -2
- package/src/components/DatePicker/index.tsx +11 -3
- package/src/components/Descriptions/index.md +8 -0
- package/src/components/Descriptions/index.tsx +21 -14
- package/src/components/Editor/index.module.scss +7 -7
- package/src/components/FileCol/index.tsx +4 -2
- package/src/components/FilePreview/_components/BasePreview/index.module.scss +3 -3
- package/src/components/FilePreview/_components/PdfPreview/index.module.scss +7 -7
- package/src/components/FilePreview/_components/PdfPreview/index.tsx +8 -2
- package/src/components/FilePreview/index.module.scss +4 -4
- package/src/components/Form/DrawerForm/index.tsx +10 -11
- package/src/components/Form/ImportForm/index.tsx +11 -12
- package/src/components/Form/ModalForm/index.tsx +10 -12
- package/src/components/Form/index.md +18 -0
- package/src/components/Form/index.tsx +18 -0
- package/src/components/FormItem/FormInput/FormPasswordStrength/index.module.scss +3 -3
- package/src/components/FormItem/FormRadio/index.module.scss +11 -13
- package/src/components/FormItem/FormSegmented/index.module.scss +1 -1
- package/src/components/FormItem/FormSlider/index.module.scss +1 -1
- package/src/components/FormItem/FormUpload/FormImage/index.tsx +2 -1
- package/src/components/FormItem/FormUpload/index.module.scss +17 -17
- package/src/components/FormItem/FormUpload/index.tsx +2 -1
- package/src/components/FormItem/ItemContainer/index.module.scss +33 -7
- package/src/components/FormItem/ItemContainer/index.tsx +3 -3
- package/src/components/Input/Number/index.module.scss +27 -54
- package/src/components/Input/Number/index.tsx +49 -65
- package/src/components/Input/Range/index.module.scss +16 -5
- package/src/components/Input/TextArea/index.module.scss +13 -13
- package/src/components/Input/index.md +14 -0
- package/src/components/Input/index.module.scss +1 -1
- package/src/components/Input/index.tsx +4 -0
- package/src/components/Markdown/Editor/index.module.scss +4 -4
- package/src/components/Markdown/Views/MermaidBlock.tsx +15 -1
- package/src/components/Markdown/Views/blocks.module.scss +13 -13
- package/src/components/Markdown/Views/index.module.scss +3 -3
- package/src/components/Markdown/index.md +22 -0
- package/src/components/Modal/index.md +22 -1
- package/src/components/Modal/index.module.scss +11 -1
- package/src/components/Modal/index.tsx +46 -13
- package/src/components/Operate/index.module.scss +1 -1
- package/src/components/Operate/index.tsx +1 -1
- package/src/components/Pagination/index.md +107 -0
- package/src/components/Pagination/index.module.scss +19 -18
- package/src/components/Pagination/index.tsx +2 -2
- package/src/components/Panel/DefaultPanel/index.module.scss +3 -3
- package/src/components/Panel/IframePanel/index.module.scss +2 -2
- package/src/components/Panel/IframePanel/index.tsx +5 -1
- package/src/components/Panel/ListPanel/ListModalPanel/index.module.scss +2 -2
- package/src/components/Panel/ListPanel/ListModalPanel/index.tsx +2 -2
- package/src/components/Panel/ListPanel/_components/ColumnMgt/index.module.scss +3 -3
- package/src/components/Panel/ListPanel/_components/ColumnMgt/index.tsx +7 -11
- package/src/components/Panel/ListPanel/_components/ToolBar/index.module.scss +14 -1
- package/src/components/Panel/ListPanel/_components/ToolBar/index.tsx +2 -2
- package/src/components/Panel/ListPanel/index.module.scss +9 -9
- package/src/components/Panel/ListPanel/index.tsx +2 -2
- package/src/components/Panel/index.md +1 -1
- package/src/components/Search/SearchAdvanced/index.tsx +3 -3
- package/src/components/Search/SearchCard/index.module.scss +15 -15
- package/src/components/Search/SearchCollapsible/index.tsx +3 -3
- package/src/components/Search/SearchWithFilter/index.tsx +3 -3
- package/src/components/Search/SearchWithMore/index.tsx +3 -3
- package/src/components/Search/_components/ButtonGroup/index.tsx +9 -11
- package/src/components/Search/_components/FilterDropdown/index.tsx +1 -1
- package/src/components/Search/_hooks/useSearchCommon.ts +4 -4
- package/src/components/Search/_types/index.ts +3 -3
- package/src/components/Search/index.md +2 -2
- package/src/components/Search/index.module.scss +33 -5
- package/src/components/Search/index.tsx +3 -3
- package/src/components/SecondConf/index.md +1 -1
- package/src/components/SecondConf/index.module.scss +3 -3
- package/src/components/SecondConf/index.tsx +11 -7
- package/src/components/Select/AutoCompleteSelect/index.module.scss +73 -132
- package/src/components/Select/AutoCompleteSelect/index.tsx +13 -7
- package/src/components/Select/IconSelect/index.module.scss +4 -3
- package/src/components/Select/IconSelect/index.tsx +7 -9
- package/src/components/Select/TreeSelect/_utils/getExpandedKeysByLevel.ts +4 -1
- package/src/components/Select/TreeSelect/index.module.scss +19 -44
- package/src/components/Select/TreeSelect/index.tsx +16 -8
- package/src/components/Select/index.md +12 -0
- package/src/components/Select/index.module.scss +71 -131
- package/src/components/Select/index.tsx +38 -10
- package/src/components/Slider/index.module.scss +1 -1
- package/src/components/Switch/index.module.scss +1 -1
- package/src/components/TabBar/index.module.scss +11 -11
- package/src/components/Table/_components/Drag/index.tsx +3 -2
- package/src/components/Table/_hooks/useTableColumns.tsx +1 -1
- package/src/components/Table/_utils/tableUtils.ts +3 -2
- package/src/components/Table/index.md +16 -0
- package/src/components/Table/index.module.scss +14 -14
- package/src/components/Table/index.tsx +27 -1
- package/src/components/Tags/_components/EllipsisTag/index.tsx +1 -1
- package/src/components/TextEllipsis/index.tsx +6 -4
- package/src/components/Tree/index.md +9 -0
- package/src/components/Tree/index.module.scss +6 -6
- package/src/components/Tree/index.tsx +12 -2
- package/src/components/Upload/_components/UploadedItem/index.tsx +2 -2
- package/src/components/Upload/_components/UploadingItem/index.tsx +2 -2
- package/src/components/Upload/_utils/normalUpload.ts +1 -1
- package/src/components/Upload/_utils/validateFile.ts +55 -2
- package/src/components/Upload/index.md +9 -0
- package/src/components/Upload/index.tsx +22 -7
- package/src/config-provider/index.tsx +84 -4
- package/src/feedback/index.tsx +141 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/useBreakpoint.ts +62 -0
- package/src/hooks/useIsDark.ts +64 -0
- package/src/hooks/usePointerType.ts +59 -0
- package/src/index.ts +37 -5
- package/src/layout/Breadcrumb/_components/BreadcrumbItemIcon/index.tsx +26 -0
- package/src/layout/Breadcrumb/_components/BreadcrumbMenuItem/index.tsx +32 -0
- package/src/layout/Breadcrumb/_hooks/useBreadcrumbPath.ts +111 -0
- package/src/layout/Breadcrumb/_utils/formatMenu.ts +30 -0
- package/src/layout/Breadcrumb/_utils/formatRoutes.ts +71 -0
- package/src/layout/Breadcrumb/_utils/pathMatch.ts +52 -0
- package/src/layout/Breadcrumb/index.md +37 -0
- package/src/layout/Breadcrumb/index.module.scss +15 -0
- package/src/layout/Breadcrumb/index.tsx +103 -0
- package/src/layout/Header/index.md +120 -0
- package/src/layout/Header/index.module.scss +215 -0
- package/src/layout/Header/index.tsx +198 -0
- package/src/layout/I18n/I18nStore.ts +98 -0
- package/src/layout/I18n/index.md +45 -0
- package/src/layout/I18n/index.tsx +44 -0
- package/src/layout/I18n/locales/en-US.ts +16 -0
- package/src/layout/I18n/locales/zh-CN.ts +16 -0
- package/src/layout/Menu/_components/SecondaryHeader/index.module.scss +65 -0
- package/src/layout/Menu/_components/SecondaryHeader/index.tsx +61 -0
- package/src/layout/Menu/_hooks/useMenuPath.ts +81 -0
- package/src/layout/Menu/_hooks/useOnlyLvOneMenu.ts +44 -0
- package/src/layout/Menu/_utils/formatMenu.ts +57 -0
- package/src/layout/Menu/_utils/pathMatch.ts +48 -0
- package/src/layout/Menu/_utils/setActiveIcon.ts +23 -0
- package/src/layout/Menu/index.md +43 -0
- package/src/layout/Menu/index.module.scss +50 -0
- package/src/layout/Menu/index.tsx +208 -0
- package/src/layout/NavTabBar/_components/SortableTab/index.tsx +40 -0
- package/src/layout/NavTabBar/_components/TabContextMenu/index.tsx +157 -0
- package/src/layout/NavTabBar/_components/TabDragOverlay/index.tsx +69 -0
- package/src/layout/NavTabBar/_components/TabLabel/index.tsx +84 -0
- package/src/layout/NavTabBar/_hooks/useDropTabKey.ts +27 -0
- package/src/layout/NavTabBar/_hooks/useTabContextMenu.ts +23 -0
- package/src/layout/NavTabBar/_hooks/useTabPath.ts +118 -0
- package/src/layout/NavTabBar/_hooks/useTabTitle.ts +28 -0
- package/src/layout/NavTabBar/_utils/formatNavTabBar.ts +50 -0
- package/src/layout/NavTabBar/_utils/pathMatch.ts +37 -0
- package/src/layout/NavTabBar/_utils/tabActions.ts +131 -0
- package/src/layout/NavTabBar/index.md +76 -0
- package/src/layout/NavTabBar/index.module.scss +179 -0
- package/src/layout/NavTabBar/index.tsx +236 -0
- package/src/layout/Theme/ThemeStore.ts +70 -0
- package/src/layout/Theme/index.md +48 -0
- package/src/layout/Theme/index.module.scss +6 -0
- package/src/layout/Theme/index.tsx +105 -0
- package/src/layout/_hooks/useDropTab.ts +23 -0
- package/src/layout/_hooks/useReload.ts +19 -0
- package/src/layout/_hooks/useSetTabTitle.ts +19 -0
- package/src/layout/_utils/storage.ts +34 -0
- package/src/layout/index.ts +78 -0
- package/src/layout/types.ts +58 -0
- package/src/request/index.ts +8 -1
- package/src/styles/_responsive.scss +53 -0
- package/src/styles/antd-overload.scss +77 -21
- package/src/styles/tokens.json +82 -0
- package/src/styles/tokens.scss +99 -52
- package/src/styles/tokens.ts +198 -33
- package/src/types/antd.ts +46 -0
- package/src/utils/semantic.ts +45 -0
- package/es/components/Button/ChakraButton/index.d.ts +0 -11
- package/es/components/Button/ChakraButton/index.js +0 -66
- package/es/components/Button/ChakraButton/index.module.scss +0 -20
- package/es/components/ChakraRoot/index.d.ts +0 -6
- package/es/components/ChakraRoot/index.js +0 -42
- package/lib/components/Button/ChakraButton/index.d.ts +0 -11
- package/lib/components/Button/ChakraButton/index.js +0 -70
- package/lib/components/Button/ChakraButton/index.module.scss +0 -20
- package/lib/components/ChakraRoot/index.d.ts +0 -6
- package/lib/components/ChakraRoot/index.js +0 -46
- package/src/components/Button/ChakraButton/index.module.scss +0 -20
- package/src/components/Button/ChakraButton/index.tsx +0 -83
- package/src/components/ChakraRoot/index.tsx +0 -43
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Popover } from "antd";
|
|
3
|
+
import { TabType } from "../..";
|
|
4
|
+
import TabContextMenu from "../TabContextMenu";
|
|
5
|
+
import styles from "../../index.module.scss";
|
|
6
|
+
import classNames from "classnames";
|
|
7
|
+
|
|
8
|
+
interface TabLabelProps {
|
|
9
|
+
item: TabType;
|
|
10
|
+
index: number;
|
|
11
|
+
openKeys: TabType[];
|
|
12
|
+
basePath: string;
|
|
13
|
+
affixRouter: string[];
|
|
14
|
+
open: string;
|
|
15
|
+
onReload: (key: string) => void;
|
|
16
|
+
refresh: (key: string) => void;
|
|
17
|
+
drop: (key: string) => void;
|
|
18
|
+
setOpenkeys: React.Dispatch<React.SetStateAction<TabType[]>>;
|
|
19
|
+
setOpen: (key: string) => void;
|
|
20
|
+
navigate: (path: string) => void;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Tab label component
|
|
26
|
+
*/
|
|
27
|
+
const TabLabel: React.FC<TabLabelProps> = ({
|
|
28
|
+
item,
|
|
29
|
+
index,
|
|
30
|
+
openKeys,
|
|
31
|
+
basePath,
|
|
32
|
+
affixRouter,
|
|
33
|
+
open,
|
|
34
|
+
onReload,
|
|
35
|
+
refresh,
|
|
36
|
+
drop,
|
|
37
|
+
setOpenkeys,
|
|
38
|
+
setOpen,
|
|
39
|
+
navigate,
|
|
40
|
+
className,
|
|
41
|
+
}) => {
|
|
42
|
+
return (
|
|
43
|
+
<Popover
|
|
44
|
+
open={item.key === open}
|
|
45
|
+
placement="bottomLeft"
|
|
46
|
+
classNames={{ root: styles.popover }}
|
|
47
|
+
content={
|
|
48
|
+
<TabContextMenu
|
|
49
|
+
item={item}
|
|
50
|
+
index={index}
|
|
51
|
+
openKeys={openKeys}
|
|
52
|
+
basePath={basePath}
|
|
53
|
+
affixRouter={affixRouter}
|
|
54
|
+
onReload={onReload}
|
|
55
|
+
refresh={refresh}
|
|
56
|
+
drop={drop}
|
|
57
|
+
setOpenkeys={setOpenkeys}
|
|
58
|
+
setOpen={setOpen}
|
|
59
|
+
navigate={navigate}
|
|
60
|
+
/>
|
|
61
|
+
}
|
|
62
|
+
>
|
|
63
|
+
<span
|
|
64
|
+
onContextMenu={(event) => {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
}}
|
|
67
|
+
onMouseDown={(e) => {
|
|
68
|
+
if (e.button === 2) {
|
|
69
|
+
setOpen(item.key === open ? "" : item.key);
|
|
70
|
+
} else {
|
|
71
|
+
setOpen("");
|
|
72
|
+
navigate(item.key);
|
|
73
|
+
}
|
|
74
|
+
}}
|
|
75
|
+
className={classNames(styles.tabLabel, className)}
|
|
76
|
+
>
|
|
77
|
+
{item.icon}
|
|
78
|
+
{item.label}
|
|
79
|
+
</span>
|
|
80
|
+
</Popover>
|
|
81
|
+
);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export default TabLabel;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useEffect, useContext } from "react";
|
|
2
|
+
import { useAliveController } from "react-activation";
|
|
3
|
+
import { NavTabBarContent } from "../../_hooks/useDropTab";
|
|
4
|
+
import { TabType } from "..";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hook that closes a tab via dropKey
|
|
8
|
+
*/
|
|
9
|
+
export const useDropTabKey = (
|
|
10
|
+
setOpenkeys: React.Dispatch<React.SetStateAction<TabType[]>>
|
|
11
|
+
) => {
|
|
12
|
+
const { drop } = useAliveController();
|
|
13
|
+
const { dropKey } = useContext(NavTabBarContent);
|
|
14
|
+
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
if (dropKey) {
|
|
18
|
+
drop(dropKey);
|
|
19
|
+
|
|
20
|
+
setOpenkeys((prev) => {
|
|
21
|
+
const newOpenKeys = prev.filter((item) => item.key !== dropKey);
|
|
22
|
+
return newOpenKeys;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}, 0);
|
|
26
|
+
}, [drop, dropKey, setOpenkeys]);
|
|
27
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { useDebounceEffect } from "ahooks";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Hook that handles the tab context menu
|
|
6
|
+
*/
|
|
7
|
+
export const useTabContextMenu = () => {
|
|
8
|
+
const [open, setOpen] = useState<string>("");
|
|
9
|
+
|
|
10
|
+
useDebounceEffect(() => {
|
|
11
|
+
const close = () => {
|
|
12
|
+
setOpen("");
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
document.removeEventListener("click", close);
|
|
16
|
+
if (open) {
|
|
17
|
+
document.addEventListener("click", close);
|
|
18
|
+
}
|
|
19
|
+
}, [open]);
|
|
20
|
+
|
|
21
|
+
return { open, setOpen };
|
|
22
|
+
};
|
|
23
|
+
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { useLocation } from "react-router";
|
|
3
|
+
import { TabType } from "..";
|
|
4
|
+
import { checkTabPathMatch } from "../_utils/pathMatch";
|
|
5
|
+
import { array_is_includes } from "hsu-utils";
|
|
6
|
+
|
|
7
|
+
interface UseTabPathOptions {
|
|
8
|
+
items: TabType[];
|
|
9
|
+
affixRouter: string[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Hook that handles tab path matching and active state
|
|
14
|
+
*/
|
|
15
|
+
export const useTabPath = ({ items, affixRouter }: UseTabPathOptions) => {
|
|
16
|
+
const location = useLocation();
|
|
17
|
+
const [tabKey, setTabKey] = useState<string>("");
|
|
18
|
+
const [openKeys, setOpenkeys] = useState<TabType[]>([]);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Check affixed routes (affixRouter and affix) and add them to openKeys
|
|
22
|
+
*/
|
|
23
|
+
const _checkAffix = useCallback(
|
|
24
|
+
(items: TabType[]) => {
|
|
25
|
+
items?.forEach((item) => {
|
|
26
|
+
if (item.children) {
|
|
27
|
+
_checkAffix(item.children);
|
|
28
|
+
} else {
|
|
29
|
+
// Check whether it is an affixed route
|
|
30
|
+
const isAffix = affixRouter.includes(item.key) || item.affix;
|
|
31
|
+
if (isAffix) {
|
|
32
|
+
setOpenkeys((prev) => {
|
|
33
|
+
const find = prev.find((i) => i.key === item.key);
|
|
34
|
+
if (find) {
|
|
35
|
+
return prev;
|
|
36
|
+
}
|
|
37
|
+
return [...prev, item];
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
[affixRouter]
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const _checkPath = useCallback(
|
|
47
|
+
(items: TabType[], parents?: TabType[]) => {
|
|
48
|
+
const pathname = decodeURI(location.pathname);
|
|
49
|
+
const search = location.search;
|
|
50
|
+
|
|
51
|
+
items?.forEach((item) => {
|
|
52
|
+
if (item.children) {
|
|
53
|
+
const _parents = parents ? [...parents, item] : [item];
|
|
54
|
+
_checkPath(item.children, _parents);
|
|
55
|
+
} else {
|
|
56
|
+
const isMatch = checkTabPathMatch(pathname, item.key);
|
|
57
|
+
|
|
58
|
+
if (isMatch) {
|
|
59
|
+
const keyArr = item.key.split("/").filter(Boolean);
|
|
60
|
+
const hasParams =
|
|
61
|
+
keyArr.filter((i) => i.startsWith(":")).length > 0;
|
|
62
|
+
const pathArr = pathname.split("/").filter(Boolean);
|
|
63
|
+
|
|
64
|
+
if (
|
|
65
|
+
hasParams &&
|
|
66
|
+
array_is_includes(
|
|
67
|
+
keyArr.filter((i) => !i.startsWith(":")),
|
|
68
|
+
pathArr
|
|
69
|
+
)
|
|
70
|
+
) {
|
|
71
|
+
// Handle param routes
|
|
72
|
+
setTabKey(`${pathname}${search}`);
|
|
73
|
+
|
|
74
|
+
setOpenkeys((prev) => {
|
|
75
|
+
const find = prev.find((i) => i.key.split("?")[0] === pathname);
|
|
76
|
+
if (find) {
|
|
77
|
+
return prev.map((i) =>
|
|
78
|
+
i.key.split("?")[0] === pathname
|
|
79
|
+
? { ...i, key: `${pathname}${search}` }
|
|
80
|
+
: i
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return [...prev, { ...item, key: `${pathname}${search}` }];
|
|
85
|
+
});
|
|
86
|
+
} else {
|
|
87
|
+
// Handle plain routes
|
|
88
|
+
setTabKey(`${item.key}${search}`);
|
|
89
|
+
|
|
90
|
+
setOpenkeys((prev) => {
|
|
91
|
+
const find = prev.find((i) => i.key.split("?")[0] === item.key);
|
|
92
|
+
if (find) {
|
|
93
|
+
return prev.map((i) =>
|
|
94
|
+
i.key.split("?")[0] === item.key
|
|
95
|
+
? { ...i, key: `${item.key}${search}` }
|
|
96
|
+
: i
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return [...prev, { ...item, key: `${item.key}${search}` }];
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
[location.pathname, location.search]
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
// Handle affixed routes first to populate openKeys
|
|
112
|
+
_checkAffix(items);
|
|
113
|
+
// Then run path matching
|
|
114
|
+
_checkPath(items);
|
|
115
|
+
}, [_checkAffix, _checkPath, items]);
|
|
116
|
+
|
|
117
|
+
return { tabKey, setTabKey, openKeys, setOpenkeys };
|
|
118
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useEffect, useContext } from "react";
|
|
2
|
+
import { NavTabBarTitleContent } from "../../_hooks/useSetTabTitle";
|
|
3
|
+
import { TabType } from "..";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook that updates tab titles via tabTitles
|
|
7
|
+
*/
|
|
8
|
+
export const useTabTitle = (
|
|
9
|
+
setOpenkeys: React.Dispatch<React.SetStateAction<TabType[]>>
|
|
10
|
+
) => {
|
|
11
|
+
const { tabTitles } = useContext(NavTabBarTitleContent);
|
|
12
|
+
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (tabTitles && Object.keys(tabTitles).length > 0) {
|
|
15
|
+
setOpenkeys((prev) => {
|
|
16
|
+
return prev?.map((item) => {
|
|
17
|
+
if (tabTitles[item.key] !== undefined) {
|
|
18
|
+
return {
|
|
19
|
+
...item,
|
|
20
|
+
label: tabTitles[item.key],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return item;
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}, [tabTitles, setOpenkeys]);
|
|
28
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { cloneDeep } from "lodash";
|
|
2
|
+
import { RouteType } from "../../types";
|
|
3
|
+
import { TabType } from "..";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Format routes into tab items
|
|
7
|
+
* @param routes Route configuration
|
|
8
|
+
* @param parent Parent tab item
|
|
9
|
+
* @returns Array of tab items
|
|
10
|
+
*/
|
|
11
|
+
export const formatNavTabBar = (
|
|
12
|
+
routes: RouteType[],
|
|
13
|
+
parent?: TabType
|
|
14
|
+
): TabType[] => {
|
|
15
|
+
const newRoutes: TabType[] = [];
|
|
16
|
+
|
|
17
|
+
routes?.forEach((route) => {
|
|
18
|
+
let children: TabType[] | undefined = undefined;
|
|
19
|
+
if (route.children) {
|
|
20
|
+
children = formatNavTabBar(route.children, cloneDeep(route) as TabType);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const { meta } = route;
|
|
24
|
+
|
|
25
|
+
if (!meta?.noTabsView && route.path) {
|
|
26
|
+
newRoutes.push({
|
|
27
|
+
key: decodeURI(route.path),
|
|
28
|
+
label: meta?.name ?? "",
|
|
29
|
+
children: (children?.length || 0) > 0 ? children : undefined,
|
|
30
|
+
element: route.element,
|
|
31
|
+
affix: meta?.affix,
|
|
32
|
+
icon: meta?.icon,
|
|
33
|
+
});
|
|
34
|
+
} else if (!meta?.noTabsView && route.index && parent?.path) {
|
|
35
|
+
newRoutes.push({
|
|
36
|
+
key: decodeURI(parent.path),
|
|
37
|
+
label: meta?.name ?? "",
|
|
38
|
+
element: route.element,
|
|
39
|
+
affix: meta?.affix,
|
|
40
|
+
icon: meta?.icon,
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
if (children) {
|
|
44
|
+
newRoutes.push(...children);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return newRoutes;
|
|
50
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { array_is_includes } from "hsu-utils";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check whether a path matches (used by tabs)
|
|
5
|
+
* Note: matching of affixed routes (affixRouter and affix) is handled separately in _checkAffix of useTabPath
|
|
6
|
+
* @param pathname Current path
|
|
7
|
+
* @param key Route key
|
|
8
|
+
* @returns Whether it matches
|
|
9
|
+
*/
|
|
10
|
+
export const checkTabPathMatch = (pathname: string, key: string): boolean => {
|
|
11
|
+
// Handle the root path
|
|
12
|
+
if (pathname === "/" && key === "/") {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const pathArr = pathname.split("/").filter(Boolean);
|
|
17
|
+
const keyArr = key.split("/").filter(Boolean);
|
|
18
|
+
|
|
19
|
+
if (keyArr.length === 0) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (pathArr.length !== keyArr.length) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Handle routes containing params (e.g. /user/:id)
|
|
28
|
+
if (key.includes(":")) {
|
|
29
|
+
return array_is_includes(
|
|
30
|
+
keyArr.filter((i) => !i.startsWith(":")),
|
|
31
|
+
pathArr
|
|
32
|
+
);
|
|
33
|
+
} else {
|
|
34
|
+
// Plain path matching
|
|
35
|
+
return array_is_includes(keyArr, pathArr);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { TabType } from "..";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Close the tab at the given index (keeping pinned tabs)
|
|
5
|
+
*/
|
|
6
|
+
export const closeTab = (
|
|
7
|
+
openKeys: TabType[],
|
|
8
|
+
index: number,
|
|
9
|
+
drop: (key: string) => void,
|
|
10
|
+
affixRouter: string[] = []
|
|
11
|
+
): TabType[] => {
|
|
12
|
+
const targetItem = openKeys[index];
|
|
13
|
+
// Do not close if it is a pinned tab
|
|
14
|
+
if (affixRouter.includes(targetItem.key) || targetItem.affix) {
|
|
15
|
+
return openKeys;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const newOpenKeys = [...openKeys];
|
|
19
|
+
const removed = newOpenKeys.splice(index, 1);
|
|
20
|
+
removed?.forEach((item) => {
|
|
21
|
+
drop(item.key?.split("?")[0] || "");
|
|
22
|
+
});
|
|
23
|
+
return newOpenKeys;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Close tabs to the left (keeping pinned tabs)
|
|
28
|
+
*/
|
|
29
|
+
export const closeLeftTabs = (
|
|
30
|
+
openKeys: TabType[],
|
|
31
|
+
index: number,
|
|
32
|
+
drop: (key: string) => void,
|
|
33
|
+
affixRouter: string[] = []
|
|
34
|
+
): TabType[] => {
|
|
35
|
+
// Split off the tabs on the left
|
|
36
|
+
const leftTabs = openKeys.slice(0, index);
|
|
37
|
+
const rightTabs = openKeys.slice(index);
|
|
38
|
+
|
|
39
|
+
// Filter out the non-pinned tabs on the left and close them
|
|
40
|
+
const removedTabs = leftTabs.filter(
|
|
41
|
+
(item) => !affixRouter.includes(item.key) && !item.affix
|
|
42
|
+
);
|
|
43
|
+
removedTabs.forEach((item) => {
|
|
44
|
+
drop(item.key?.split("?")[0] || "");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Keep the pinned tabs on the left and all tabs on the right
|
|
48
|
+
const keptLeftTabs = leftTabs.filter(
|
|
49
|
+
(item) => affixRouter.includes(item.key) || item.affix
|
|
50
|
+
);
|
|
51
|
+
return [...keptLeftTabs, ...rightTabs];
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Close tabs to the right (keeping pinned tabs)
|
|
56
|
+
*/
|
|
57
|
+
export const closeRightTabs = (
|
|
58
|
+
openKeys: TabType[],
|
|
59
|
+
index: number,
|
|
60
|
+
drop: (key: string) => void,
|
|
61
|
+
affixRouter: string[] = []
|
|
62
|
+
): TabType[] => {
|
|
63
|
+
// Split into left and right tabs
|
|
64
|
+
const leftTabs = openKeys.slice(0, index + 1);
|
|
65
|
+
const rightTabs = openKeys.slice(index + 1);
|
|
66
|
+
|
|
67
|
+
// Filter out the non-pinned tabs on the right and close them
|
|
68
|
+
const removedTabs = rightTabs.filter(
|
|
69
|
+
(item) => !affixRouter.includes(item.key) && !item.affix
|
|
70
|
+
);
|
|
71
|
+
removedTabs.forEach((item) => {
|
|
72
|
+
drop(item.key?.split("?")[0] || "");
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Keep all tabs on the left and the pinned tabs on the right
|
|
76
|
+
const keptRightTabs = rightTabs.filter(
|
|
77
|
+
(item) => affixRouter.includes(item.key) || item.affix
|
|
78
|
+
);
|
|
79
|
+
return [...leftTabs, ...keptRightTabs];
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Close other tabs (keeping pinned tabs)
|
|
84
|
+
*/
|
|
85
|
+
export const closeOtherTabs = (
|
|
86
|
+
openKeys: TabType[],
|
|
87
|
+
currentItem: TabType,
|
|
88
|
+
drop: (key: string) => void,
|
|
89
|
+
affixRouter: string[] = []
|
|
90
|
+
): TabType[] => {
|
|
91
|
+
// Filter out the other non-pinned tabs and close them
|
|
92
|
+
const removedTabs = openKeys.filter(
|
|
93
|
+
(item) =>
|
|
94
|
+
item.key !== currentItem.key &&
|
|
95
|
+
!affixRouter.includes(item.key) &&
|
|
96
|
+
!item.affix
|
|
97
|
+
);
|
|
98
|
+
removedTabs.forEach((item) => {
|
|
99
|
+
drop(item.key?.split("?")[0] || "");
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Keep the current tab and all pinned tabs
|
|
103
|
+
return openKeys.filter(
|
|
104
|
+
(item) =>
|
|
105
|
+
item.key === currentItem.key ||
|
|
106
|
+
affixRouter.includes(item.key) ||
|
|
107
|
+
item.affix
|
|
108
|
+
);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Close all tabs (keeping pinned tabs)
|
|
113
|
+
*/
|
|
114
|
+
export const closeAllTabs = (
|
|
115
|
+
openKeys: TabType[],
|
|
116
|
+
drop: (key: string) => void,
|
|
117
|
+
affixRouter: string[] = []
|
|
118
|
+
): TabType[] => {
|
|
119
|
+
// Filter out the non-pinned tabs and close them
|
|
120
|
+
const removedTabs = openKeys.filter(
|
|
121
|
+
(item) => !affixRouter.includes(item.key) && !item.affix
|
|
122
|
+
);
|
|
123
|
+
removedTabs.forEach((item) => {
|
|
124
|
+
drop(item.key?.split("?")[0] || "");
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Return the pinned tabs
|
|
128
|
+
return openKeys.filter(
|
|
129
|
+
(item) => affixRouter.includes(item.key) || item.affix
|
|
130
|
+
);
|
|
131
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: NavTabBar 页签栏
|
|
3
|
+
order: 4
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# NavTabBar 页签栏
|
|
7
|
+
|
|
8
|
+
多页签导航:可拖拽排序、右键菜单(关闭其他 / 关闭右侧 / 刷新)、固定页签、页面缓存。
|
|
9
|
+
|
|
10
|
+
## 引入
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import Layout from "@hsu-react/ui/es/layout";
|
|
14
|
+
|
|
15
|
+
<Layout.NavTabBar router={router} />;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 用法
|
|
19
|
+
|
|
20
|
+
页签栏最前面是「刷新当前页」按钮,右键页签可以关闭 / 批量关闭 / 重新加载,页签之间可以拖拽排序。
|
|
21
|
+
|
|
22
|
+
```tsx | pure
|
|
23
|
+
import React from "react";
|
|
24
|
+
import { BrowserRouter } from "react-router-dom";
|
|
25
|
+
import { AliveScope } from "react-activation";
|
|
26
|
+
import Layout from "@hsu-react/ui/es/layout";
|
|
27
|
+
|
|
28
|
+
const router = [
|
|
29
|
+
{ path: "/home", meta: { name: "首页", menu: true, affix: true } },
|
|
30
|
+
{ path: "/order", meta: { name: "订单管理", menu: true } },
|
|
31
|
+
{ path: "/user", meta: { name: "用户列表", menu: true } },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
export default () => (
|
|
35
|
+
<AliveScope>
|
|
36
|
+
<BrowserRouter>
|
|
37
|
+
<Layout.NavTabBar router={router} />
|
|
38
|
+
</BrowserRouter>
|
|
39
|
+
</AliveScope>
|
|
40
|
+
);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> 「首页」标了 `meta.affix`,所以没有关闭按钮。
|
|
44
|
+
>
|
|
45
|
+
> 这里只给代码不给可运行示例:页签栏要接管地址栏,而文档站本身也跑在一个 react-router 里,
|
|
46
|
+
> 嵌一层 Router 会直接报错(react-router 不允许嵌套),不嵌又会让示例真的把文档站导走。
|
|
47
|
+
|
|
48
|
+
## 说明
|
|
49
|
+
|
|
50
|
+
页签由访问过的路由累积而来,文案取 `meta.name`、图标取 `meta.icon`。两个开关直接影响这里:
|
|
51
|
+
|
|
52
|
+
- `meta.noTabsView` —— 该路由不进页签栏(它的子路由会顶上来)
|
|
53
|
+
- `meta.affix` —— 固定页签,不显示关闭按钮,也不会被「关闭其他 / 关闭右侧」清掉
|
|
54
|
+
|
|
55
|
+
页签的关闭与刷新走 [react-activation](https://github.com/CJY0208/react-activation) 的 `useAliveController`,因此消费方需要把路由出口包在 `<AliveScope>` 里、页面组件包 `<KeepAlive>`,关闭 / 刷新才能真正丢弃并重建对应的组件树。要让某个页面不缓存,在消费方装配路由时按 `meta.noCache` 跳过 `KeepAlive` 即可 —— 这个字段本组件不读。
|
|
56
|
+
|
|
57
|
+
## API
|
|
58
|
+
|
|
59
|
+
| 属性 | 说明 | 类型 | 默认值 |
|
|
60
|
+
| --- | --- | --- | --- |
|
|
61
|
+
| router | 路由配置 | `RouteType[]` | - |
|
|
62
|
+
| affixRouter | 额外固定的路由路径(等价于给这些路由加 `meta.affix`) | `string[]` | `[]` |
|
|
63
|
+
| basePath | 关掉最后一个页签后回退到的路径 | `string` | `"/"` |
|
|
64
|
+
| showReload | 页签栏最前面的「刷新当前页」按钮 | `boolean` | `true` |
|
|
65
|
+
|
|
66
|
+
## 配套 Hook
|
|
67
|
+
|
|
68
|
+
页签的标题与生命周期需要页面内部参与时,用这三个 hook(都从 `@hsu-react/ui/es/layout` 具名导出):
|
|
69
|
+
|
|
70
|
+
| Hook | 用途 |
|
|
71
|
+
| --- | --- |
|
|
72
|
+
| `useSetTabTitle()` | 返回 `(key, title) => void`。详情页想把页签标题改成「订单 #123」这类动态文案时用它 |
|
|
73
|
+
| `useReload()` | 返回 `(id) => void`。触发某个页面重新挂载,右键菜单的「刷新」走的就是它 |
|
|
74
|
+
| `useDropTab()` | 返回 `(key) => void`。业务里主动关掉某个页签,例如表单提交成功后关闭自己并跳回列表 |
|
|
75
|
+
|
|
76
|
+
三者都依赖 `NavTabBar` 挂载时提供的 context,因此只能在页签体系内部的页面里调用。
|