zmdms-webui 1.1.4 → 1.1.5
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/dist/es/applayoutsider/LayoutSiderContext.js +3 -1
- package/dist/es/applayoutsider/appLayoutSider.js +22 -0
- package/dist/es/applayoutsider/menu/MainMenu.js +3 -13
- package/dist/es/applayoutsider/menu/SubMenu.js +5 -14
- package/dist/es/applayoutsider/menu/hook.js +8 -3
- package/package.json +1 -1
|
@@ -35,6 +35,26 @@ var AppLayoutSider = function (props) {
|
|
|
35
35
|
}
|
|
36
36
|
return null;
|
|
37
37
|
}, [apps]);
|
|
38
|
+
/**
|
|
39
|
+
* 通过传入选项、和前缀,根据规则生成一个新的路由
|
|
40
|
+
* 因为有些路由是配置在非本系统下面的。比如:
|
|
41
|
+
* A系统下的页面把它的菜单配置在B系统菜单下。这个时候B系统的菜单路由就会携带上A系统的前缀。
|
|
42
|
+
* 这个时候在拼接前缀的时候,就不需要拼接系统前缀了
|
|
43
|
+
*/
|
|
44
|
+
var getNewPath = useCallback(function (menuItem, prefix) {
|
|
45
|
+
var rulePath = "";
|
|
46
|
+
if (menuJoinRule) {
|
|
47
|
+
rulePath = menuJoinRule(menuItem, prefix);
|
|
48
|
+
}
|
|
49
|
+
var path = menuItem.path;
|
|
50
|
+
return rulePath
|
|
51
|
+
? rulePath
|
|
52
|
+
: path === "/"
|
|
53
|
+
? "/"
|
|
54
|
+
: prefix
|
|
55
|
+
? "/".concat(prefix).concat(path)
|
|
56
|
+
: path;
|
|
57
|
+
}, [menuJoinRule]);
|
|
38
58
|
return (jsx(Layout.Sider, __assign({ className: "zmdms-sider", collapsedWidth: "0", collapsible: true, trigger: null, width: siderWidth, ref: layoutSiderRef, style: {
|
|
39
59
|
backgroundImage: "url(".concat(siderBg, ")"),
|
|
40
60
|
} }, { children: jsx(LayoutMenuContext.Provider, __assign({ value: {
|
|
@@ -50,7 +70,9 @@ var AppLayoutSider = function (props) {
|
|
|
50
70
|
postMergeSystemIds: postMergeSystemIds,
|
|
51
71
|
drawerTitle: drawerTitle,
|
|
52
72
|
selectMainMenu: selectMainMenu,
|
|
73
|
+
// 这个方法封装到getNewPath里面了
|
|
53
74
|
menuJoinRule: menuJoinRule,
|
|
75
|
+
getNewPath: getNewPath,
|
|
54
76
|
renderItem: renderItem,
|
|
55
77
|
} }, { children: jsx(Menu, { width: siderWidth, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, logo: logo, subMenuLogo: subMenuLogo, getPrefixByAppId: getPrefixByAppId, defaultVisible: defaultVisible, defaultFixed: defaultFixed, isShowSearchInput: isShowSearchInput }) })) })));
|
|
56
78
|
};
|
|
@@ -10,7 +10,7 @@ import { Menu } from 'antd';
|
|
|
10
10
|
// 是否隐藏菜单 isHiddenMenu 1 是 2 否
|
|
11
11
|
var MainMenu = function (props) {
|
|
12
12
|
var onMouseEnter = props.onMouseEnter, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId, subMenu = props.subMenu;
|
|
13
|
-
var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, userMenus = _a.userMenus, apps = _a.apps, mergeSystemIds = _a.mergeSystemIds, postMergeSystemIds = _a.postMergeSystemIds,
|
|
13
|
+
var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, userMenus = _a.userMenus, apps = _a.apps, mergeSystemIds = _a.mergeSystemIds, postMergeSystemIds = _a.postMergeSystemIds, getNewPath = _a.getNewPath, renderItem = _a.renderItem;
|
|
14
14
|
// 获取主菜单展开的内容
|
|
15
15
|
var _b = useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, { apps: apps, mergeSystemIds: mergeSystemIds, postMergeSystemIds: postMergeSystemIds }), mainMenuOpenKeys = _b.mainMenuOpenKeys, onMainMenuOpenChange = _b.onMainMenuOpenChange;
|
|
16
16
|
// 创建主菜单标签
|
|
@@ -19,17 +19,7 @@ var MainMenu = function (props) {
|
|
|
19
19
|
// 获取当前菜单的系统id
|
|
20
20
|
var system = menuItem.system, path = menuItem.path;
|
|
21
21
|
var prefix = getPrefixByAppId(system);
|
|
22
|
-
var
|
|
23
|
-
if (menuJoinRule) {
|
|
24
|
-
rulePath = menuJoinRule(menuItem, prefix);
|
|
25
|
-
}
|
|
26
|
-
var newPath = rulePath
|
|
27
|
-
? rulePath
|
|
28
|
-
: path === "/"
|
|
29
|
-
? "/"
|
|
30
|
-
: prefix
|
|
31
|
-
? "/".concat(prefix).concat(path)
|
|
32
|
-
: path;
|
|
22
|
+
var newPath = getNewPath(menuItem, prefix);
|
|
33
23
|
if (renderItem) {
|
|
34
24
|
var result = renderItem(newPath, menuItem, addTab);
|
|
35
25
|
if (result) {
|
|
@@ -64,7 +54,7 @@ var MainMenu = function (props) {
|
|
|
64
54
|
label: menuItem.name,
|
|
65
55
|
});
|
|
66
56
|
} }, { children: menuItem.name })));
|
|
67
|
-
}, [addTab, getPrefixByAppId,
|
|
57
|
+
}, [addTab, getPrefixByAppId, getNewPath, renderItem]);
|
|
68
58
|
var items = useMemo(function () {
|
|
69
59
|
var _a;
|
|
70
60
|
if (!Array.isArray(userMenus)) {
|
|
@@ -15,7 +15,7 @@ import { Drawer, Menu } from 'antd';
|
|
|
15
15
|
var defaultSubMenu = [];
|
|
16
16
|
var SubMenu = function (props, ref) {
|
|
17
17
|
var marginLeft = props.marginLeft, subMenuWidth = props.subMenuWidth, layoutSiderRef = props.layoutSiderRef, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId, subMenuLogo = props.subMenuLogo, visible = props.visible, setVisible = props.setVisible, _a = props.defaultFixed, defaultFixed = _a === void 0 ? true : _a;
|
|
18
|
-
var _b = useContext(LayoutMenuContext), mainMenuSelectedKeys = _b.mainMenuSelectedKeys, setMainMenuSelectedKeys = _b.setMainMenuSelectedKeys, activeTab = _b.activeTab, userSubMenus = _b.userSubMenus, innerUserSubMenus = _b.innerUserSubMenus, drawerTitle = _b.drawerTitle, selectMainMenu = _b.selectMainMenu,
|
|
18
|
+
var _b = useContext(LayoutMenuContext), mainMenuSelectedKeys = _b.mainMenuSelectedKeys, setMainMenuSelectedKeys = _b.setMainMenuSelectedKeys, activeTab = _b.activeTab, userSubMenus = _b.userSubMenus, innerUserSubMenus = _b.innerUserSubMenus, drawerTitle = _b.drawerTitle, selectMainMenu = _b.selectMainMenu, getNewPath = _b.getNewPath, renderItem = _b.renderItem;
|
|
19
19
|
// 二级菜单当前选中项
|
|
20
20
|
var subMenusSelectedKeys = useMemo(function () {
|
|
21
21
|
return activeTab ? [activeTab] : [];
|
|
@@ -39,6 +39,7 @@ var SubMenu = function (props, ref) {
|
|
|
39
39
|
setMainMenuSelectedKeys: setMainMenuSelectedKeys,
|
|
40
40
|
selectMainMenu: selectMainMenu,
|
|
41
41
|
isClickSubMenu: isClickSubMenu,
|
|
42
|
+
getNewPath: getNewPath,
|
|
42
43
|
}), subMenuOpenKeys = _c.subMenuOpenKeys, onSubMenuOpenChange = _c.onSubMenuOpenChange;
|
|
43
44
|
// 如果是搜索或者收藏 把二级菜单都展开
|
|
44
45
|
useEffect(function () {
|
|
@@ -100,20 +101,10 @@ var SubMenu = function (props, ref) {
|
|
|
100
101
|
if (Array.isArray(arr)) {
|
|
101
102
|
filterMenu(arr).forEach(function (menuItem) {
|
|
102
103
|
// 获取当前菜单的系统id
|
|
103
|
-
var system = menuItem.system
|
|
104
|
+
var system = menuItem.system;
|
|
104
105
|
var prefix = getPrefixByAppId(system);
|
|
105
|
-
var rulePath = "";
|
|
106
|
-
if (menuJoinRule) {
|
|
107
|
-
rulePath = menuJoinRule(menuItem, prefix);
|
|
108
|
-
}
|
|
109
106
|
// 二级菜单如果没有配置路由的 不需要跳转
|
|
110
|
-
var newPath =
|
|
111
|
-
? rulePath
|
|
112
|
-
: path === "/"
|
|
113
|
-
? "/"
|
|
114
|
-
: prefix
|
|
115
|
-
? "/".concat(prefix).concat(path)
|
|
116
|
-
: path;
|
|
107
|
+
var newPath = getNewPath(menuItem, prefix);
|
|
117
108
|
var getLabel = function () {
|
|
118
109
|
if (renderItem) {
|
|
119
110
|
var result = renderItem(newPath, menuItem, function (info) {
|
|
@@ -153,7 +144,7 @@ var SubMenu = function (props, ref) {
|
|
|
153
144
|
};
|
|
154
145
|
var newSubMenusItems = dfn(subMenus);
|
|
155
146
|
return newSubMenusItems;
|
|
156
|
-
}, [subMenus, addTab, getPrefixByAppId,
|
|
147
|
+
}, [subMenus, addTab, getPrefixByAppId, getNewPath, renderItem]);
|
|
157
148
|
var classes = classNames("zmdms-menu--sub", {
|
|
158
149
|
"zmdms-menu--sub-margin": !drawerTitle,
|
|
159
150
|
});
|
|
@@ -82,7 +82,7 @@ function useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, options) {
|
|
|
82
82
|
}
|
|
83
83
|
// 需要打开的二级菜单
|
|
84
84
|
function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
85
|
-
var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys, selectMainMenu = options.selectMainMenu, isClickSubMenu = options.isClickSubMenu;
|
|
85
|
+
var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys, selectMainMenu = options.selectMainMenu, isClickSubMenu = options.isClickSubMenu, getNewPath = options.getNewPath;
|
|
86
86
|
// 展开指定的二级菜单
|
|
87
87
|
var _a = useState([]), openKeys = _a[0], setOpenKeys = _a[1];
|
|
88
88
|
var onOpenChange = useCallback(function (openKeys) {
|
|
@@ -126,12 +126,16 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
126
126
|
return "continue";
|
|
127
127
|
}
|
|
128
128
|
// 存放当前二级菜单的值
|
|
129
|
+
// 20240327 这里有一个问题,就是开发可能会再A系统配置B系统的菜单;
|
|
130
|
+
// 这个时候这个菜单的path 就会带上B系统的前缀;这里再去做拼接的话,就会比对不上activeTab当前选中的tab。所以这里要做下判断 如果当前菜单的path有前缀的话,那么不再做前缀的拼接
|
|
129
131
|
// let currentSubMenu: any = null;
|
|
130
132
|
var result = value.find(function (subMenuVal) {
|
|
131
|
-
var system = subMenuVal.system
|
|
133
|
+
var system = subMenuVal.system;
|
|
132
134
|
var prefix = getPrefixByAppId(system);
|
|
133
135
|
// 二级菜单如果没有配置路由的 不需要跳转
|
|
134
|
-
|
|
136
|
+
// const newPath =
|
|
137
|
+
// path === "/" ? "/" : prefix ? `/${prefix}${path}` : path;
|
|
138
|
+
var newPath = getNewPath(subMenuVal, prefix);
|
|
135
139
|
// 如果值相等的话,说明这个就是目标值
|
|
136
140
|
// 即父级就是当前选中项
|
|
137
141
|
if (newPath === activeTab) {
|
|
@@ -187,6 +191,7 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
187
191
|
setMainMenuSelectedKeys,
|
|
188
192
|
selectMainMenu,
|
|
189
193
|
isClickSubMenu,
|
|
194
|
+
getNewPath,
|
|
190
195
|
]);
|
|
191
196
|
return {
|
|
192
197
|
subMenuOpenKeys: openKeys,
|