@zat-design/sisyphus-react 4.5.10-beta.1 → 4.6.0-beta.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/es/FormsProvider/index.js +14 -21
- package/es/ProAction/components/CheckModalContent/index.js +12 -26
- package/es/ProAction/index.js +79 -83
- package/es/ProAction/propsType.js +0 -1
- package/es/ProConfigProvider/index.js +63 -110
- package/es/ProConfigProvider/propsType.js +0 -1
- package/es/ProDownload/index.js +55 -65
- package/es/ProDownload/propsType.js +0 -1
- package/es/ProDownload/utils.js +61 -95
- package/es/ProDrawerForm/components/ProDrawer/index.js +83 -113
- package/es/ProDrawerForm/components/ProModal/index.js +77 -108
- package/es/ProDrawerForm/components/index.js +6 -2
- package/es/ProDrawerForm/hooks/useConfirmClose.js +20 -39
- package/es/ProDrawerForm/index.js +29 -38
- package/es/ProDrawerForm/propsType.js +0 -1
- package/es/ProDrawerForm/utils/index.js +18 -36
- package/es/ProEditLabel/components/RenderProForm.js +45 -49
- package/es/ProEditLabel/index.js +126 -163
- package/es/ProEditLabel/propsType.js +0 -1
- package/es/ProEditLabel/utils/index.js +5 -8
- package/es/ProEditTable/components/ActionButton/index.js +111 -119
- package/es/ProEditTable/components/RcTable/BaseTable.js +38 -51
- package/es/ProEditTable/components/RcTable/DraggableTable.js +97 -129
- package/es/ProEditTable/components/RcTable/index.js +6 -4
- package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +77 -95
- package/es/ProEditTable/components/RenderField/index.js +490 -587
- package/es/ProEditTable/components/RenderField/propsType.js +0 -1
- package/es/ProEditTable/components/RenderField/tools.js +115 -112
- package/es/ProEditTable/components/RenderToolbar/index.js +47 -73
- package/es/ProEditTable/components/Summary/index.js +38 -64
- package/es/ProEditTable/components/Validator/index.js +46 -46
- package/es/ProEditTable/components/index.js +12 -5
- package/es/ProEditTable/index.js +456 -378
- package/es/ProEditTable/propsType.js +0 -1
- package/es/ProEditTable/utils/config.js +60 -122
- package/es/ProEditTable/utils/diffOriginal.js +45 -82
- package/es/ProEditTable/utils/getDefaultProps.js +19 -24
- package/es/ProEditTable/utils/index.js +150 -236
- package/es/ProEditTable/utils/tools.js +149 -286
- package/es/ProEditTable/utils/transform.js +25 -30
- package/es/ProEditTable/utils/useEditTableError.js +30 -43
- package/es/ProEditTable/utils/useShouldUpdateForTable.js +42 -72
- package/es/ProEditTable/utils/validateAll.js +87 -154
- package/es/ProEnum/components/Group.js +38 -30
- package/es/ProEnum/components/Tag.js +22 -26
- package/es/ProEnum/hooks/useEnum.js +48 -116
- package/es/ProEnum/hooks/useEnumRequest.js +128 -179
- package/es/ProEnum/hooks/useFrequentEnumRequest.js +40 -48
- package/es/ProEnum/index.js +162 -172
- package/es/ProEnum/propsType.js +0 -1
- package/es/ProEnum/utils/eventCenter.js +10 -12
- package/es/ProEnum/utils/frequentEnum.js +35 -92
- package/es/ProEnum/utils/getEnum.js +32 -90
- package/es/ProEnum/utils/getEnumLabel.js +44 -49
- package/es/ProEnum/utils/index.js +93 -207
- package/es/ProForm/components/Container.js +13 -28
- package/es/ProForm/components/FormFooter/index.js +36 -44
- package/es/ProForm/components/FormFooter/propsType.js +0 -1
- package/es/ProForm/components/base/Checkbox/index.js +32 -59
- package/es/ProForm/components/base/DatePicker/index.js +49 -71
- package/es/ProForm/components/base/Input/index.js +63 -97
- package/es/ProForm/components/base/Input/propsType.js +0 -1
- package/es/ProForm/components/base/InputNumber/index.js +118 -172
- package/es/ProForm/components/base/Radio/index.js +39 -52
- package/es/ProForm/components/base/RangePicker/index.js +109 -127
- package/es/ProForm/components/base/RangePicker/useDateRange.js +20 -17
- package/es/ProForm/components/base/Select/index.js +63 -89
- package/es/ProForm/components/base/Switch/index.js +27 -35
- package/es/ProForm/components/base/SwitchCheckbox/index.js +36 -54
- package/es/ProForm/components/base/TextArea/index.js +30 -41
- package/es/ProForm/components/base/TimePicker/index.js +27 -37
- package/es/ProForm/components/combination/Container/index.js +37 -47
- package/es/ProForm/components/combination/Container/propsType.js +0 -1
- package/es/ProForm/components/combination/FormList/components/ActionButton.js +165 -237
- package/es/ProForm/components/combination/FormList/components/BlockFields.js +98 -103
- package/es/ProForm/components/combination/FormList/components/Empty.js +27 -54
- package/es/ProForm/components/combination/FormList/components/LineFields.js +57 -54
- package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +61 -109
- package/es/ProForm/components/combination/FormList/index.js +151 -161
- package/es/ProForm/components/combination/FormList/propsType.js +0 -1
- package/es/ProForm/components/combination/FormList/utils.js +22 -38
- package/es/ProForm/components/combination/Group/component/AddonWrapper/index.js +12 -28
- package/es/ProForm/components/combination/Group/component/ComRender.js +50 -111
- package/es/ProForm/components/combination/Group/component/FlexibleGroup.js +105 -206
- package/es/ProForm/components/combination/Group/hooks/index.js +68 -128
- package/es/ProForm/components/combination/Group/index.js +87 -126
- package/es/ProForm/components/combination/Group/propsType.js +0 -1
- package/es/ProForm/components/combination/Group/utils/index.js +124 -239
- package/es/ProForm/components/combination/ProCascader/index.js +156 -199
- package/es/ProForm/components/combination/ProCascader/propsType.js +0 -1
- package/es/ProForm/components/combination/ProCascader/utils/index.js +12 -21
- package/es/ProForm/components/combination/ProModalSelect/hooks/useRequestList.js +63 -75
- package/es/ProForm/components/combination/ProModalSelect/index.js +290 -348
- package/es/ProForm/components/combination/ProModalSelect/propsType.js +0 -1
- package/es/ProForm/components/combination/ProModalSelect/utils/index.js +32 -39
- package/es/ProForm/components/combination/ProNumberRange/index.js +100 -156
- package/es/ProForm/components/combination/ProNumberRange/propsType.js +0 -1
- package/es/ProForm/components/combination/ProRangeLimit/index.js +104 -115
- package/es/ProForm/components/combination/ProRangeLimit/propsType.js +0 -1
- package/es/ProForm/components/combination/ProTimeLimit/hooks/useControlled.js +16 -16
- package/es/ProForm/components/combination/ProTimeLimit/index.js +75 -109
- package/es/ProForm/components/index.js +56 -34
- package/es/ProForm/components/render/ChangedWrapper.js +85 -94
- package/es/ProForm/components/render/ConfirmWrapper.js +27 -39
- package/es/ProForm/components/render/CustomComponentViewWrapper.js +65 -82
- package/es/ProForm/components/render/Render.js +223 -329
- package/es/ProForm/components/render/RenderFields.js +76 -113
- package/es/ProForm/components/render/propsType.js +0 -1
- package/es/ProForm/hooks/useControlled.js +8 -10
- package/es/ProForm/hooks/useDeepCompareMemo.js +11 -11
- package/es/ProForm/hooks/useFieldProps.js +8 -4
- package/es/ProForm/hooks/useForm.js +50 -110
- package/es/ProForm/hooks/useRules.js +17 -33
- package/es/ProForm/hooks/useShouldUpdate.js +77 -152
- package/es/ProForm/hooks/useWatch.js +58 -129
- package/es/ProForm/index.js +157 -194
- package/es/ProForm/propsType.js +15 -7
- package/es/ProForm/utils/buildFormItemProps.js +51 -58
- package/es/ProForm/utils/diffOriginal.js +43 -73
- package/es/ProForm/utils/getDefaultProps.js +18 -24
- package/es/ProForm/utils/index.js +159 -234
- package/es/ProForm/utils/processDependencies.js +21 -60
- package/es/ProForm/utils/reactiveValues.js +20 -34
- package/es/ProForm/utils/rulesCreator.js +42 -40
- package/es/ProForm/utils/transformNames.js +10 -13
- package/es/ProForm/utils/transformValue.js +16 -29
- package/es/ProForm/utils/valueType.js +96 -178
- package/es/ProIcon/config/index.js +340 -274
- package/es/ProIcon/index.js +135 -209
- package/es/ProIcon/propsTypes.js +0 -1
- package/es/ProIcon/utils/index.js +24 -39
- package/es/ProLayout/components/Layout/Header/index.js +108 -141
- package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +134 -190
- package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +111 -137
- package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.js +0 -1
- package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +23 -31
- package/es/ProLayout/components/Layout/Menu/index.js +92 -89
- package/es/ProLayout/components/Layout/Notice/index.js +13 -27
- package/es/ProLayout/components/Layout/index.js +8 -3
- package/es/ProLayout/components/ProCollapse/PropTypes.js +0 -1
- package/es/ProLayout/components/ProCollapse/index.js +89 -111
- package/es/ProLayout/components/ProFooter/PropTypes.js +0 -1
- package/es/ProLayout/components/ProFooter/index.js +27 -25
- package/es/ProLayout/components/ProHeader/PropTypes.js +0 -1
- package/es/ProLayout/components/ProHeader/components/Copy/index.js +23 -21
- package/es/ProLayout/components/ProHeader/components/Describe/index.js +67 -86
- package/es/ProLayout/components/ProHeader/components/ProBackBtn/index.js +18 -21
- package/es/ProLayout/components/ProHeader/components/ProBackBtn/propsType.js +0 -1
- package/es/ProLayout/components/ProHeader/components/index.js +6 -2
- package/es/ProLayout/components/ProHeader/index.js +216 -356
- package/es/ProLayout/components/ProHeader/utils/index.js +19 -26
- package/es/ProLayout/components/TabsManager/components/TabContextMenu.js +92 -85
- package/es/ProLayout/components/TabsManager/components/TabItem.js +53 -64
- package/es/ProLayout/components/TabsManager/components/TabsContext.js +5 -5
- package/es/ProLayout/components/TabsManager/components/TabsHeader.js +42 -52
- package/es/ProLayout/components/TabsManager/hooks/useActiveTab.js +8 -9
- package/es/ProLayout/components/TabsManager/hooks/useIframeRoute.js +19 -32
- package/es/ProLayout/components/TabsManager/hooks/useProLayoutTabs.js +6 -20
- package/es/ProLayout/components/TabsManager/hooks/useTabsCache.js +25 -42
- package/es/ProLayout/components/TabsManager/hooks/useTabsState.js +310 -412
- package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.js +132 -95
- package/es/ProLayout/components/TabsManager/index.js +415 -391
- package/es/ProLayout/components/TabsManager/propTypes.js +7 -15
- package/es/ProLayout/components/TabsManager/utils/historyObserver.js +26 -23
- package/es/ProLayout/components/TabsManager/utils/index.d.ts +2 -1
- package/es/ProLayout/components/TabsManager/utils/index.js +135 -184
- package/es/ProLayout/components/index.js +8 -3
- package/es/ProLayout/index.js +171 -229
- package/es/ProLayout/propTypes.d.ts +9 -0
- package/es/ProLayout/propTypes.js +12 -52
- package/es/ProLayout/utils/index.js +48 -128
- package/es/ProSelect/components/AdaptiveTooltip.js +26 -25
- package/es/ProSelect/index.js +184 -229
- package/es/ProSelect/propsType.js +0 -1
- package/es/ProSelect/utils/index.js +100 -146
- package/es/ProStep/components/Anchor/index.js +71 -82
- package/es/ProStep/components/Item/index.js +49 -56
- package/es/ProStep/components/LazyLoad/index.js +23 -29
- package/es/ProStep/components/Listener/index.js +20 -33
- package/es/ProStep/components/Step/index.js +31 -38
- package/es/ProStep/constants.js +4 -1
- package/es/ProStep/index.js +166 -153
- package/es/ProStep/propsType.js +0 -1
- package/es/ProStep/utils/index.js +29 -55
- package/es/ProStepTab/index.js +83 -138
- package/es/ProStepTab/propsType.js +0 -1
- package/es/ProTable/components/EditableCell/EditIcon.js +10 -14
- package/es/ProTable/components/EditableCell/index.js +37 -71
- package/es/ProTable/components/EditableCell/propsType.js +0 -1
- package/es/ProTable/components/FormatColumn/index.js +209 -340
- package/es/ProTable/components/FormatColumn/propsType.js +0 -1
- package/es/ProTable/components/RcTable/components/BaseTable/index.js +35 -39
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +80 -107
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/index.js +54 -48
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/propsType.js +0 -1
- package/es/ProTable/components/RcTable/components/DraggableTable/index.js +47 -54
- package/es/ProTable/components/RcTable/index.js +6 -4
- package/es/ProTable/components/RenderColumn/index.js +158 -186
- package/es/ProTable/components/RenderEmptyText/index.js +12 -21
- package/es/ProTable/components/RenderFooter/index.js +15 -15
- package/es/ProTable/components/RenderSummary/index.js +33 -50
- package/es/ProTable/components/RenderTableHeader/index.js +44 -46
- package/es/ProTable/components/RenderTabs/index.js +47 -51
- package/es/ProTable/components/TableResizable/index.js +56 -72
- package/es/ProTable/components/TooltipTitle/index.js +13 -21
- package/es/ProTable/components/index.js +16 -36
- package/es/ProTable/hooks/useAntdTable.js +185 -219
- package/es/ProTable/index.js +232 -249
- package/es/ProTable/propsType.js +0 -1
- package/es/ProTable/utils/columnStorage.js +63 -88
- package/es/ProTable/utils/index.js +57 -90
- package/es/ProTabs/components/Card/index.js +20 -48
- package/es/ProTabs/components/index.js +4 -1
- package/es/ProTabs/index.js +39 -56
- package/es/ProTabs/propType.js +0 -1
- package/es/ProThemeTools/component/ProTools/index.js +106 -158
- package/es/ProThemeTools/component/index.js +4 -1
- package/es/ProThemeTools/context/ThemeContext.js +67 -146
- package/es/ProThemeTools/index.js +103 -156
- package/es/ProThemeTools/propsType.js +0 -1
- package/es/ProThemeTools/utils/index.js +60 -109
- package/es/ProTooltip/index.js +132 -165
- package/es/ProTooltip/propsType.js +0 -1
- package/es/ProTree/components/AdaptiveTooltip.js +15 -17
- package/es/ProTree/components/CloseIcon.js +18 -26
- package/es/ProTree/components/List.js +28 -47
- package/es/ProTree/components/ProTree.js +152 -211
- package/es/ProTree/components/ProTreeSelect/index.js +254 -458
- package/es/ProTree/components/ProTreeSelect/propsType.js +0 -1
- package/es/ProTree/components/SearchTitle.js +23 -42
- package/es/ProTree/components/Tree.js +147 -195
- package/es/ProTree/components/index.js +10 -5
- package/es/ProTree/index.js +12 -16
- package/es/ProTree/propsType.js +0 -1
- package/es/ProTree/utils.js +46 -118
- package/es/ProTreeModal/components/Cascader.js +56 -64
- package/es/ProTreeModal/components/CloseIcon.js +18 -26
- package/es/ProTreeModal/components/List.js +114 -180
- package/es/ProTreeModal/components/SearchTitle.js +15 -18
- package/es/ProTreeModal/components/SortableItem.js +29 -58
- package/es/ProTreeModal/components/Tree.js +99 -113
- package/es/ProTreeModal/components/Trigger.js +87 -121
- package/es/ProTreeModal/components/index.js +14 -6
- package/es/ProTreeModal/index.js +397 -435
- package/es/ProTreeModal/propsType.js +0 -1
- package/es/ProTreeModal/utils.js +52 -95
- package/es/ProUpload/components/ButtonRender.js +44 -54
- package/es/ProUpload/components/DragRender.js +94 -134
- package/es/ProUpload/components/DraggableUploadListItem.js +12 -25
- package/es/ProUpload/components/Example.js +27 -31
- package/es/ProUpload/components/FileItem.js +69 -163
- package/es/ProUpload/components/ImageRender.js +134 -170
- package/es/ProUpload/index.js +68 -100
- package/es/ProUpload/propsType.js +0 -1
- package/es/ProUpload/uitls.js +8 -4
- package/es/ProUtils/utils/index.js +17 -13
- package/es/ProViewer/index.js +154 -175
- package/es/ProViewer/propsType.js +0 -5
- package/es/ProWaterMark/index.js +9 -16
- package/es/ProWaterMark/propsType.js +0 -1
- package/es/hooks/useDraggableRow.js +25 -53
- package/es/index.js +57 -77
- package/es/locale/en_US.js +153 -142
- package/es/locale/index.js +23 -36
- package/es/locale/zh_CN.js +145 -142
- package/es/tokens.js +84 -83
- package/es/utils/index.js +24 -51
- package/package.json +4 -3
package/es/ProLayout/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { useSetState, useToggle, useDeepCompareEffect } from 'ahooks';
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useMemo, useRef, useCallback, useLayoutEffect, useState } from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { useSetState, useToggle, useDeepCompareEffect } from "ahooks";
|
|
6
5
|
import { ProWaterMark } from "../index";
|
|
7
6
|
import { ProCollapse, ProFooter, ProHeader } from "./components";
|
|
8
7
|
import { Header, Notice, Menu } from "./components/Layout/index";
|
|
@@ -13,15 +12,13 @@ import { useActiveTab } from "./components/TabsManager/hooks/useActiveTab";
|
|
|
13
12
|
import { transformMenus } from "./utils";
|
|
14
13
|
import { canOpenAsTab, flattenMenuData } from "./components/TabsManager/utils";
|
|
15
14
|
import headerBg from "../assets/header_bg.png";
|
|
16
|
-
|
|
17
|
-
// 全局上下文
|
|
18
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
-
export const LayoutContext = /*#__PURE__*/createContext(undefined);
|
|
15
|
+
const LayoutContext = createContext(void 0);
|
|
20
16
|
const TABS_HEADER_MEASURE_SELECTOR = '[data-pro-layout-tabs-measure="true"]';
|
|
21
|
-
const ProLayout = props => {
|
|
17
|
+
const ProLayout = (props) => {
|
|
18
|
+
var _a;
|
|
22
19
|
const {
|
|
23
20
|
children,
|
|
24
|
-
className =
|
|
21
|
+
className = "",
|
|
25
22
|
pure = false,
|
|
26
23
|
headerHeight = 64,
|
|
27
24
|
contentStyle = {},
|
|
@@ -30,7 +27,7 @@ const ProLayout = props => {
|
|
|
30
27
|
notice: noticeIn,
|
|
31
28
|
// 修改别名
|
|
32
29
|
dataSource,
|
|
33
|
-
pathPrefix =
|
|
30
|
+
pathPrefix = "",
|
|
34
31
|
target,
|
|
35
32
|
onCollapsedChange,
|
|
36
33
|
collapsed: propsCollapsed = false,
|
|
@@ -39,108 +36,89 @@ const ProLayout = props => {
|
|
|
39
36
|
headerTitleRender,
|
|
40
37
|
headerContentRender,
|
|
41
38
|
rightContentRender,
|
|
42
|
-
title =
|
|
39
|
+
title = "",
|
|
43
40
|
logo,
|
|
44
41
|
appsOptions,
|
|
45
42
|
// Menu组件需要的props
|
|
46
|
-
iconfontUrl =
|
|
43
|
+
iconfontUrl = "",
|
|
47
44
|
sideMenuFooterRender,
|
|
48
45
|
sideMenuHeaderRender,
|
|
49
|
-
mode =
|
|
46
|
+
mode = "normal",
|
|
50
47
|
tabs
|
|
51
48
|
} = props;
|
|
52
49
|
const isTabsLayout = isTabsMode(props);
|
|
53
50
|
validateTabsProps(mode, tabs);
|
|
54
51
|
const tabsManagerRef = useRef(null);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
tabsBarEl: null,
|
|
63
|
-
hasTabs: false,
|
|
64
|
-
isIframePure: false
|
|
65
|
-
});
|
|
66
|
-
// 稳定的 ref 回调,避免内联函数每次渲染都触发 setState 导致无限循环
|
|
67
|
-
const setTabsBarElRef = useCallback(el => setTabsState({
|
|
68
|
-
tabsBarEl: el
|
|
69
|
-
}), []);
|
|
70
|
-
// TabsManager 会在 layout effect 中调用这两个回调;保持引用稳定,避免父组件每次
|
|
71
|
-
// render 都让 layout effect 重新执行并再次 setState,形成无限更新循环。
|
|
72
|
-
const handleTabsChange = useCallback(v => setTabsState({
|
|
73
|
-
hasTabs: v
|
|
74
|
-
}), []);
|
|
75
|
-
const handleIframePureChange = useCallback(v => setTabsState({
|
|
76
|
-
isIframePure: v
|
|
77
|
-
}), []);
|
|
52
|
+
const [{ tabsBarEl, hasTabs, isIframePure }, setTabsState] = useSetState({ tabsBarEl: null, hasTabs: false, isIframePure: false });
|
|
53
|
+
const setTabsBarElRef = useCallback(
|
|
54
|
+
(el) => setTabsState({ tabsBarEl: el }),
|
|
55
|
+
[]
|
|
56
|
+
);
|
|
57
|
+
const handleTabsChange = useCallback((v) => setTabsState({ hasTabs: v }), []);
|
|
58
|
+
const handleIframePureChange = useCallback((v) => setTabsState({ isIframePure: v }), []);
|
|
78
59
|
const noticeElRef = useRef(null);
|
|
79
|
-
const setNoticeElRef = useCallback(el => {
|
|
60
|
+
const setNoticeElRef = useCallback((el) => {
|
|
80
61
|
noticeElRef.current = el;
|
|
81
62
|
}, []);
|
|
82
|
-
const [stickyHeights, setStickyHeights] = useState({
|
|
83
|
-
|
|
84
|
-
tabsBar: 0
|
|
85
|
-
});
|
|
86
|
-
const [{
|
|
87
|
-
notice,
|
|
88
|
-
menus,
|
|
89
|
-
selectedPath
|
|
90
|
-
}, setState] = useSetState({
|
|
63
|
+
const [stickyHeights, setStickyHeights] = useState({ notice: 0, tabsBar: 0 });
|
|
64
|
+
const [{ notice, menus, selectedPath }, setState] = useSetState({
|
|
91
65
|
notice: headerNotice || noticeIn,
|
|
92
66
|
menus: [],
|
|
93
|
-
selectedPath:
|
|
67
|
+
selectedPath: ""
|
|
94
68
|
});
|
|
95
69
|
useLayoutEffect(() => {
|
|
96
70
|
const noticeEl = notice && !isIframePure ? noticeElRef.current : null;
|
|
97
71
|
const visibleTabsBarEl = isTabsLayout && hasTabs && !isIframePure ? tabsBarEl : null;
|
|
98
|
-
const visibleTabsHeaderEl = visibleTabsBarEl
|
|
72
|
+
const visibleTabsHeaderEl = visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.querySelector(
|
|
73
|
+
TABS_HEADER_MEASURE_SELECTOR
|
|
74
|
+
);
|
|
99
75
|
let active = true;
|
|
100
76
|
let animationFrameId;
|
|
101
77
|
const measureStickyElements = () => {
|
|
102
|
-
if (!active)
|
|
78
|
+
if (!active)
|
|
79
|
+
return;
|
|
103
80
|
const nextHeights = {
|
|
104
|
-
notice: noticeEl
|
|
105
|
-
tabsBar: visibleTabsHeaderEl
|
|
81
|
+
notice: (noticeEl == null ? void 0 : noticeEl.getBoundingClientRect().height) ?? 0,
|
|
82
|
+
tabsBar: (visibleTabsHeaderEl == null ? void 0 : visibleTabsHeaderEl.getBoundingClientRect().height) ?? 0
|
|
106
83
|
};
|
|
107
|
-
setStickyHeights(
|
|
84
|
+
setStickyHeights(
|
|
85
|
+
(currentHeights) => currentHeights.notice === nextHeights.notice && currentHeights.tabsBar === nextHeights.tabsBar ? currentHeights : nextHeights
|
|
86
|
+
);
|
|
108
87
|
};
|
|
109
88
|
measureStickyElements();
|
|
110
|
-
if (typeof window.requestAnimationFrame ===
|
|
89
|
+
if (typeof window.requestAnimationFrame === "function") {
|
|
111
90
|
animationFrameId = window.requestAnimationFrame(measureStickyElements);
|
|
112
91
|
}
|
|
113
|
-
const handleTabsTransitionEnd = event => {
|
|
114
|
-
if (event.target === visibleTabsBarEl && event.propertyName ===
|
|
92
|
+
const handleTabsTransitionEnd = (event) => {
|
|
93
|
+
if (event.target === visibleTabsBarEl && event.propertyName === "grid-template-rows") {
|
|
115
94
|
measureStickyElements();
|
|
116
95
|
}
|
|
117
96
|
};
|
|
118
|
-
visibleTabsBarEl
|
|
119
|
-
const observedElements = [noticeEl, visibleTabsHeaderEl].filter(
|
|
120
|
-
|
|
97
|
+
visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.addEventListener("transitionend", handleTabsTransitionEnd);
|
|
98
|
+
const observedElements = [noticeEl, visibleTabsHeaderEl].filter(
|
|
99
|
+
(element) => element !== null && element !== void 0
|
|
100
|
+
);
|
|
101
|
+
if (observedElements.length === 0 || typeof ResizeObserver === "undefined") {
|
|
121
102
|
return () => {
|
|
122
103
|
active = false;
|
|
123
|
-
if (animationFrameId !==
|
|
104
|
+
if (animationFrameId !== void 0) {
|
|
124
105
|
window.cancelAnimationFrame(animationFrameId);
|
|
125
106
|
}
|
|
126
|
-
visibleTabsBarEl
|
|
107
|
+
visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.removeEventListener("transitionend", handleTabsTransitionEnd);
|
|
127
108
|
};
|
|
128
109
|
}
|
|
129
110
|
const resizeObserver = new ResizeObserver(measureStickyElements);
|
|
130
|
-
observedElements.forEach(element => resizeObserver.observe(element));
|
|
111
|
+
observedElements.forEach((element) => resizeObserver.observe(element));
|
|
131
112
|
return () => {
|
|
132
113
|
active = false;
|
|
133
|
-
if (animationFrameId !==
|
|
114
|
+
if (animationFrameId !== void 0) {
|
|
134
115
|
window.cancelAnimationFrame(animationFrameId);
|
|
135
116
|
}
|
|
136
|
-
visibleTabsBarEl
|
|
117
|
+
visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.removeEventListener("transitionend", handleTabsTransitionEnd);
|
|
137
118
|
resizeObserver.disconnect();
|
|
138
119
|
};
|
|
139
120
|
}, [hasTabs, isIframePure, isTabsLayout, notice, tabsBarEl]);
|
|
140
|
-
const [collapsed, {
|
|
141
|
-
toggle,
|
|
142
|
-
set
|
|
143
|
-
}] = useToggle(props.collapsed || false);
|
|
121
|
+
const [collapsed, { toggle, set }] = useToggle(props.collapsed || false);
|
|
144
122
|
useDeepCompareEffect(() => {
|
|
145
123
|
set(props.collapsed || false);
|
|
146
124
|
}, [props.collapsed]);
|
|
@@ -149,27 +127,17 @@ const ProLayout = props => {
|
|
|
149
127
|
return;
|
|
150
128
|
}
|
|
151
129
|
const userData = transformMenus(dataSource, pathPrefix);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
setState({
|
|
155
|
-
menus: menuData
|
|
156
|
-
});
|
|
130
|
+
const menuData = Array.isArray(userData) ? userData : (userData == null ? void 0 : userData.menus) || [];
|
|
131
|
+
setState({ menus: menuData });
|
|
157
132
|
}, [dataSource]);
|
|
158
133
|
const menuDataSource = useMemo(() => {
|
|
159
|
-
// menus 已通过 useDeepCompareEffect 填充,直接使用
|
|
160
134
|
if (Array.isArray(menus) && menus.length > 0) {
|
|
161
|
-
return {
|
|
162
|
-
menus
|
|
163
|
-
};
|
|
135
|
+
return { menus };
|
|
164
136
|
}
|
|
165
|
-
|
|
166
|
-
// 确保 tabsInstance 第一次创建时就能查到完整菜单数据(含 closable 等属性)
|
|
167
|
-
if (!Array.isArray(dataSource) && Array.isArray(dataSource?.menus)) {
|
|
137
|
+
if (!Array.isArray(dataSource) && Array.isArray(dataSource == null ? void 0 : dataSource.menus)) {
|
|
168
138
|
return dataSource;
|
|
169
139
|
}
|
|
170
|
-
return {
|
|
171
|
-
menus: menus || []
|
|
172
|
-
};
|
|
140
|
+
return { menus: menus || [] };
|
|
173
141
|
}, [menus, dataSource]);
|
|
174
142
|
const enhancedTabsConfig = useMemo(() => {
|
|
175
143
|
if (!isTabsLayout || !tabs) {
|
|
@@ -178,102 +146,80 @@ const ProLayout = props => {
|
|
|
178
146
|
return {
|
|
179
147
|
...tabs,
|
|
180
148
|
onTabChange: (activeKey, activeTab, allTabs) => {
|
|
149
|
+
var _a2, _b, _c, _d, _e;
|
|
181
150
|
if (!allTabs || allTabs.length === 0) {
|
|
182
|
-
|
|
183
|
-
setState({
|
|
184
|
-
selectedPath: '##EMPTY##'
|
|
185
|
-
});
|
|
151
|
+
setState({ selectedPath: "##EMPTY##" });
|
|
186
152
|
return;
|
|
187
153
|
}
|
|
188
|
-
const menuCodeSource = activeTab
|
|
189
|
-
const sourceMenu = menuCodeSource ? flattenMenuData(menuDataSource.menus).find(menu => menu.code === menuCodeSource) :
|
|
190
|
-
const sourcePath = sourceMenu
|
|
191
|
-
const targetPath = sourcePath || activeTab
|
|
154
|
+
const menuCodeSource = (_a2 = activeTab == null ? void 0 : activeTab.menuCodeSource) == null ? void 0 : _a2.trim();
|
|
155
|
+
const sourceMenu = menuCodeSource ? flattenMenuData(menuDataSource.menus).find((menu) => menu.code === menuCodeSource) : void 0;
|
|
156
|
+
const sourcePath = (sourceMenu == null ? void 0 : sourceMenu.redirectUrl) || (sourceMenu == null ? void 0 : sourceMenu.url) || (sourceMenu == null ? void 0 : sourceMenu.router);
|
|
157
|
+
const targetPath = sourcePath || (activeTab == null ? void 0 : activeTab.url) || ((_b = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _b.router) || ((_c = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _c.redirectUrl) || ((_d = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _d.url);
|
|
192
158
|
if (targetPath && targetPath !== selectedPath) {
|
|
193
|
-
setState({
|
|
194
|
-
selectedPath: targetPath
|
|
195
|
-
});
|
|
159
|
+
setState({ selectedPath: targetPath });
|
|
196
160
|
}
|
|
197
|
-
tabs.onTabChange
|
|
161
|
+
(_e = tabs.onTabChange) == null ? void 0 : _e.call(tabs, activeKey, activeTab, allTabs);
|
|
198
162
|
}
|
|
199
163
|
};
|
|
200
164
|
}, [isTabsLayout, menuDataSource.menus, tabs, selectedPath]);
|
|
201
165
|
const renderContent = () => {
|
|
202
166
|
if (!isTabsLayout || !enhancedTabsConfig) {
|
|
203
|
-
return
|
|
204
|
-
children: children
|
|
205
|
-
});
|
|
167
|
+
return /* @__PURE__ */ jsx("div", { children });
|
|
206
168
|
}
|
|
207
|
-
return
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
169
|
+
return /* @__PURE__ */ jsx(
|
|
170
|
+
TabsManager,
|
|
171
|
+
{
|
|
172
|
+
ref: tabsManagerRef,
|
|
173
|
+
config: enhancedTabsConfig,
|
|
174
|
+
dataSource: menuDataSource,
|
|
175
|
+
originalOnMenuClick: onMenuClick,
|
|
176
|
+
tabsBarContainer: tabsBarEl,
|
|
177
|
+
onTabsChange: handleTabsChange,
|
|
178
|
+
onIframePureChange: handleIframePureChange,
|
|
179
|
+
children
|
|
180
|
+
}
|
|
181
|
+
);
|
|
217
182
|
};
|
|
218
|
-
const handleMenuClick = useCallback(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
183
|
+
const handleMenuClick = useCallback(
|
|
184
|
+
(params) => {
|
|
185
|
+
var _a2, _b, _c, _d, _e, _f, _g;
|
|
186
|
+
if (!isTabsLayout) {
|
|
187
|
+
onMenuClick == null ? void 0 : onMenuClick(params);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
(_b = (_a2 = tabsManagerRef.current) == null ? void 0 : _a2.handleMenuClick) == null ? void 0 : _b.call(_a2, params);
|
|
191
|
+
if (!params.item) {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
if (!canOpenAsTab(params.item)) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
const canAdd = (_d = (_c = tabsManagerRef.current) == null ? void 0 : _c.canAddTab) == null ? void 0 : _d.call(_c, params.item);
|
|
198
|
+
if (!canAdd) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
const targetPath = ((_e = params.item) == null ? void 0 : _e.redirectUrl) || ((_f = params.item) == null ? void 0 : _f.url) || ((_g = params.item) == null ? void 0 : _g.router);
|
|
202
|
+
if (targetPath && targetPath !== selectedPath) {
|
|
203
|
+
setState({ selectedPath: targetPath });
|
|
204
|
+
}
|
|
240
205
|
return false;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const targetPath = params.item?.redirectUrl || params.item?.url || params.item?.router;
|
|
245
|
-
if (targetPath && targetPath !== selectedPath) {
|
|
246
|
-
setState({
|
|
247
|
-
selectedPath: targetPath
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
// tabs 模式下由 Tab 管理内容,阻止菜单默认 Link 跳转
|
|
251
|
-
return false;
|
|
252
|
-
}, [isTabsLayout, onMenuClick, selectedPath]);
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* 关闭提示框
|
|
256
|
-
*/
|
|
206
|
+
},
|
|
207
|
+
[isTabsLayout, onMenuClick, selectedPath]
|
|
208
|
+
);
|
|
257
209
|
const onCancelNotice = () => {
|
|
258
|
-
setState({
|
|
259
|
-
notice: null
|
|
260
|
-
});
|
|
210
|
+
setState({ notice: null });
|
|
261
211
|
};
|
|
262
212
|
const contentCls = classNames({
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
213
|
+
"pro-layout-row": true,
|
|
214
|
+
"pro-layout-row-has-notice": notice,
|
|
215
|
+
"pro-layout-row-pure": typeof pure === "boolean" && pure,
|
|
216
|
+
"pro-layout-row-top-pure": typeof pure !== "boolean" && pure.topMenu,
|
|
217
|
+
"pro-layout-row-left-pure": typeof pure !== "boolean" && pure.leftMenu
|
|
268
218
|
});
|
|
269
219
|
const noticeHeight = stickyHeights.notice;
|
|
270
|
-
|
|
271
|
-
// pure 模式下 Header 不渲染,有效头部高度为 0
|
|
272
|
-
const isPureHeader = typeof pure === 'boolean' ? pure : !!pure?.topMenu;
|
|
220
|
+
const isPureHeader = typeof pure === "boolean" ? pure : !!(pure == null ? void 0 : pure.topMenu);
|
|
273
221
|
const effectiveHeaderHeight = isPureHeader ? 0 : headerHeight;
|
|
274
222
|
const contentStickyTop = effectiveHeaderHeight + noticeHeight + (hasTabs ? stickyHeights.tabsBar : 0);
|
|
275
|
-
|
|
276
|
-
// 为Header组件创建专门的props对象
|
|
277
223
|
const headerProps = {
|
|
278
224
|
headerHeight,
|
|
279
225
|
pure,
|
|
@@ -284,21 +230,15 @@ const ProLayout = props => {
|
|
|
284
230
|
logo,
|
|
285
231
|
appsOptions
|
|
286
232
|
};
|
|
287
|
-
|
|
288
|
-
// 为Notice组件创建专门的props对象
|
|
289
233
|
const noticeProps = {
|
|
290
234
|
headerHeight: effectiveHeaderHeight,
|
|
291
235
|
notice,
|
|
292
236
|
onCancel: onCancelNotice,
|
|
293
237
|
noticeRef: setNoticeElRef
|
|
294
238
|
};
|
|
295
|
-
|
|
296
|
-
// 为Menu组件创建专门的props对象
|
|
297
239
|
const menuProps = {
|
|
298
240
|
headerHeight,
|
|
299
|
-
dataSource: Array.isArray(menus) ? {
|
|
300
|
-
menus
|
|
301
|
-
} : menus,
|
|
241
|
+
dataSource: Array.isArray(menus) ? { menus } : menus,
|
|
302
242
|
iconfontUrl,
|
|
303
243
|
collapsed,
|
|
304
244
|
notice,
|
|
@@ -312,72 +252,74 @@ const ProLayout = props => {
|
|
|
312
252
|
onMenuClick: handleMenuClick,
|
|
313
253
|
appsOptions
|
|
314
254
|
};
|
|
315
|
-
const layoutDom = isIframePure ?
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}) : /*#__PURE__*/_jsxs("div", {
|
|
327
|
-
className: classNames({
|
|
328
|
-
'pro-layout': true,
|
|
329
|
-
'pro-layout-light': true,
|
|
330
|
-
'pro-layout-pure': typeof pure === 'boolean' ? pure : pure?.topMenu || pure?.leftMenu,
|
|
331
|
-
[`${className}`]: className
|
|
332
|
-
}),
|
|
333
|
-
style: {
|
|
334
|
-
'--header-bg-image': `url(${headerBg})`,
|
|
335
|
-
'--pro-layout-header-height': `${effectiveHeaderHeight}px`,
|
|
336
|
-
'--pro-layout-notice-height': `${noticeHeight}px`,
|
|
337
|
-
'--pro-layout-content-sticky-top': `${contentStickyTop}px`
|
|
338
|
-
},
|
|
339
|
-
children: [/*#__PURE__*/_jsx(Header, {
|
|
340
|
-
...headerProps
|
|
341
|
-
}), /*#__PURE__*/_jsx(Notice, {
|
|
342
|
-
...noticeProps
|
|
343
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
344
|
-
ref: setTabsBarElRef,
|
|
345
|
-
className: `pro-layout-tabs-bar-wrapper${hasTabs ? ' tabs-visible' : ''}${collapsed ? ' tabs-menu-open' : ''}`,
|
|
346
|
-
style: {
|
|
347
|
-
marginTop: effectiveHeaderHeight + noticeHeight
|
|
348
|
-
}
|
|
349
|
-
}), /*#__PURE__*/_jsxs("div", {
|
|
350
|
-
className: contentCls,
|
|
351
|
-
children: [/*#__PURE__*/_jsx(Menu, {
|
|
352
|
-
...menuProps
|
|
353
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
354
|
-
className: `pro-layout-content${hasTabs ? ' pro-layout-content-has-tabs' : ''}`,
|
|
355
|
-
style: {
|
|
356
|
-
...contentStyle,
|
|
357
|
-
marginTop: 0
|
|
358
|
-
},
|
|
255
|
+
const layoutDom = isIframePure ? (
|
|
256
|
+
/* iframe pure 模式:仅渲染 TabsManager 内容,不渲染 Header/Notice/Menu/tabsBar */
|
|
257
|
+
/* @__PURE__ */ jsx(
|
|
258
|
+
"div",
|
|
259
|
+
{
|
|
260
|
+
className: classNames({
|
|
261
|
+
"pro-layout": true,
|
|
262
|
+
"pro-layout-light": true,
|
|
263
|
+
"pro-layout-iframe-pure": true,
|
|
264
|
+
[`${className}`]: className
|
|
265
|
+
}),
|
|
359
266
|
children: renderContent()
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
267
|
+
}
|
|
268
|
+
)
|
|
269
|
+
) : /* @__PURE__ */ jsxs(
|
|
270
|
+
"div",
|
|
271
|
+
{
|
|
272
|
+
className: classNames({
|
|
273
|
+
"pro-layout": true,
|
|
274
|
+
"pro-layout-light": true,
|
|
275
|
+
"pro-layout-pure": typeof pure === "boolean" ? pure : (pure == null ? void 0 : pure.topMenu) || (pure == null ? void 0 : pure.leftMenu),
|
|
276
|
+
[`${className}`]: className
|
|
277
|
+
}),
|
|
278
|
+
style: {
|
|
279
|
+
"--header-bg-image": `url(${headerBg})`,
|
|
280
|
+
"--pro-layout-header-height": `${effectiveHeaderHeight}px`,
|
|
281
|
+
"--pro-layout-notice-height": `${noticeHeight}px`,
|
|
282
|
+
"--pro-layout-content-sticky-top": `${contentStickyTop}px`
|
|
283
|
+
},
|
|
284
|
+
children: [
|
|
285
|
+
/* @__PURE__ */ jsx(Header, { ...headerProps }),
|
|
286
|
+
/* @__PURE__ */ jsx(Notice, { ...noticeProps }),
|
|
287
|
+
/* @__PURE__ */ jsx(
|
|
288
|
+
"div",
|
|
289
|
+
{
|
|
290
|
+
ref: setTabsBarElRef,
|
|
291
|
+
className: `pro-layout-tabs-bar-wrapper${hasTabs ? " tabs-visible" : ""}${collapsed ? " tabs-menu-open" : ""}`,
|
|
292
|
+
style: { marginTop: effectiveHeaderHeight + noticeHeight }
|
|
293
|
+
}
|
|
294
|
+
),
|
|
295
|
+
/* @__PURE__ */ jsxs("div", { className: contentCls, children: [
|
|
296
|
+
/* @__PURE__ */ jsx(Menu, { ...menuProps }),
|
|
297
|
+
/* @__PURE__ */ jsx(
|
|
298
|
+
"div",
|
|
299
|
+
{
|
|
300
|
+
className: `pro-layout-content${hasTabs ? " pro-layout-content-has-tabs" : ""}`,
|
|
301
|
+
style: {
|
|
302
|
+
...contentStyle,
|
|
303
|
+
marginTop: 0
|
|
304
|
+
},
|
|
305
|
+
children: renderContent()
|
|
306
|
+
}
|
|
307
|
+
)
|
|
308
|
+
] })
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
);
|
|
312
|
+
return /* @__PURE__ */ jsx(LayoutContext.Provider, { value: { selectedPath, target, onSelected: setState }, children: !((_a = Object.keys(waterMarkProps)) == null ? void 0 : _a.length) ? layoutDom : /* @__PURE__ */ jsx(ProWaterMark, { ...waterMarkProps, children: layoutDom }) });
|
|
374
313
|
};
|
|
375
314
|
ProLayout.ProCollapse = ProCollapse;
|
|
376
315
|
ProLayout.ProFooter = ProFooter;
|
|
377
316
|
ProLayout.ProHeader = ProHeader;
|
|
378
317
|
ProLayout.useProLayoutTabs = useProLayoutTabs;
|
|
379
318
|
ProLayout.useActiveTab = useActiveTab;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
319
|
+
var ProLayout_default = ProLayout;
|
|
320
|
+
export {
|
|
321
|
+
LayoutContext,
|
|
322
|
+
ProLayout_default as default,
|
|
323
|
+
useActiveTab,
|
|
324
|
+
useProLayoutTabs
|
|
325
|
+
};
|
|
@@ -368,6 +368,11 @@ export interface TabsUrlSyncConfig {
|
|
|
368
368
|
* @default 'replace'
|
|
369
369
|
*/
|
|
370
370
|
history?: 'replace' | 'push';
|
|
371
|
+
/**
|
|
372
|
+
* @description 页签复用身份。url 保持既有完整 URL 唯一语义;relationKey 在显式传入时优先按业务关联键复用
|
|
373
|
+
* @default 'url'
|
|
374
|
+
*/
|
|
375
|
+
identity?: 'url' | 'relationKey';
|
|
371
376
|
}
|
|
372
377
|
/**
|
|
373
378
|
* @description 添加标签页的业务参数
|
|
@@ -468,6 +473,10 @@ export interface ProLayoutTabsInstance {
|
|
|
468
473
|
* @param updates 仅更新传入的字段,extra 为替换式覆盖
|
|
469
474
|
*/
|
|
470
475
|
updateTab: (tabId: string, updates: UpdateTabParams) => void;
|
|
476
|
+
/**
|
|
477
|
+
* @description 就地更新页签完整 URL,保持 tab id 与已挂载组件不变
|
|
478
|
+
*/
|
|
479
|
+
updateTabUrl: (tabId: string, url: string) => void;
|
|
471
480
|
/**
|
|
472
481
|
* @description 获取标签页信息
|
|
473
482
|
*/
|
|
@@ -1,55 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @description 是否带有菜单界面的配置
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @description 添加标签页的业务参数
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @description 添加标签页的选项
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @description 更新标签页的字段(仅允许更新展示与扩展数据)
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @description 获取标签页信息返回值
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @description ProLayout 标签页实例接口(类似 FormInstance)
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @description iframe 路由表配置项
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @description iframe 嵌入配置
|
|
39
|
-
*
|
|
40
|
-
* **触发条件**:URL query 上带 `?isIframe`(大小写不敏感,值不限,只看 key 是否存在)。
|
|
41
|
-
* 第三方系统通过在 iframe src 上拼 `?isIframe=1` 来触发组件库的嵌入模式。
|
|
42
|
-
*
|
|
43
|
-
* 未带该 query 时(独立访问),即使配置了 `tabs.iframe`,组件库也完全不读取,
|
|
44
|
-
* 维持完整 Layout 渲染。
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
export const isTabsMode = props => props.mode === 'tabs';
|
|
48
|
-
export const validateTabsProps = (mode = 'normal', tabs) => {
|
|
49
|
-
if (mode === 'tabs' && !tabs) {
|
|
50
|
-
throw new Error('ProLayout: tabs configuration is required when mode="tabs",例如 <ProLayout mode="tabs" tabs={{ max: 10 }} />');
|
|
1
|
+
const isTabsMode = (props) => props.mode === "tabs";
|
|
2
|
+
const validateTabsProps = (mode = "normal", tabs) => {
|
|
3
|
+
if (mode === "tabs" && !tabs) {
|
|
4
|
+
throw new Error(
|
|
5
|
+
'ProLayout: tabs configuration is required when mode="tabs",例如 <ProLayout mode="tabs" tabs={{ max: 10 }} />'
|
|
6
|
+
);
|
|
51
7
|
}
|
|
52
|
-
if (mode !==
|
|
8
|
+
if (mode !== "tabs" && tabs) {
|
|
53
9
|
console.warn('ProLayout: tabs configuration is ignored because mode is not "tabs"');
|
|
54
10
|
}
|
|
55
|
-
};
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
isTabsMode,
|
|
14
|
+
validateTabsProps
|
|
15
|
+
};
|