zmdms-webui 0.0.62 → 0.0.63
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/appLayoutSider.d.ts +2 -0
- package/dist/es/applayoutsider/appLayoutSider.js +2 -1
- package/dist/es/applayoutsider/menu/MainMenu.js +5 -2
- package/dist/es/applayoutsider/menu/SubMenu.js +14 -2
- package/dist/es/applayoutsider/menu/hook.js +45 -9
- package/dist/es/applayoutsider/menu/index.js +1 -1
- package/package.json +1 -1
|
@@ -22,6 +22,8 @@ interface ILayoutSiderProps {
|
|
|
22
22
|
postMergeSystemIds?: (string | number)[];
|
|
23
23
|
/** 二级菜单头部内容 */
|
|
24
24
|
drawerTitle?: React__default.ReactNode;
|
|
25
|
+
/** 初始化选中菜单 */
|
|
26
|
+
selectMainMenu?: (activeTab: any) => any;
|
|
25
27
|
}
|
|
26
28
|
declare const _default: React__default.NamedExoticComponent<ILayoutSiderProps>;
|
|
27
29
|
|
|
@@ -10,7 +10,7 @@ import { Layout } from 'antd';
|
|
|
10
10
|
*/
|
|
11
11
|
var AppLayoutSider = function (props) {
|
|
12
12
|
// console.log("layout-sider- rerender");
|
|
13
|
-
var _a = props.siderWidth, siderWidth = _a === void 0 ? 118 : _a, _b = props.subMenuWidth, subMenuWidth = _b === void 0 ? 162 : _b, addTab = props.addTab, siderBg = props.siderBg, logo = props.logo, apps = props.apps, activeTab = props.activeTab, userMenus = props.userMenus, userSubMenus = props.userSubMenus, mergeSystemIds = props.mergeSystemIds, postMergeSystemIds = props.postMergeSystemIds, drawerTitle = props.drawerTitle;
|
|
13
|
+
var _a = props.siderWidth, siderWidth = _a === void 0 ? 118 : _a, _b = props.subMenuWidth, subMenuWidth = _b === void 0 ? 162 : _b, addTab = props.addTab, siderBg = props.siderBg, logo = props.logo, apps = props.apps, activeTab = props.activeTab, userMenus = props.userMenus, userSubMenus = props.userSubMenus, mergeSystemIds = props.mergeSystemIds, postMergeSystemIds = props.postMergeSystemIds, drawerTitle = props.drawerTitle, selectMainMenu = props.selectMainMenu;
|
|
14
14
|
// 当前选中的主菜单item
|
|
15
15
|
var _c = useState([]), mainMenuSelectedKeys = _c[0], setMainMenuSelectedKeys = _c[1];
|
|
16
16
|
var layoutSiderRef = useRef();
|
|
@@ -36,6 +36,7 @@ var AppLayoutSider = function (props) {
|
|
|
36
36
|
mergeSystemIds: mergeSystemIds,
|
|
37
37
|
postMergeSystemIds: postMergeSystemIds,
|
|
38
38
|
drawerTitle: drawerTitle,
|
|
39
|
+
selectMainMenu: selectMainMenu,
|
|
39
40
|
} }, { children: jsx(Menu, { width: siderWidth, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, logo: logo, getPrefixByAppId: getPrefixByAppId }) })) })));
|
|
40
41
|
};
|
|
41
42
|
AppLayoutSider.displayName = "ZTXK_WEBUI_AppLayoutSider";
|
|
@@ -8,7 +8,7 @@ import IconFont from '../../icon/index.js';
|
|
|
8
8
|
import { Menu } from 'antd';
|
|
9
9
|
|
|
10
10
|
var MainMenu = function (props) {
|
|
11
|
-
var onMouseEnter = props.onMouseEnter, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId;
|
|
11
|
+
var onMouseEnter = props.onMouseEnter, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId, subMenu = props.subMenu;
|
|
12
12
|
var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, userMenus = _a.userMenus, apps = _a.apps, mergeSystemIds = _a.mergeSystemIds, postMergeSystemIds = _a.postMergeSystemIds;
|
|
13
13
|
// 获取主菜单展开的内容
|
|
14
14
|
var _b = useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, { apps: apps, mergeSystemIds: mergeSystemIds, postMergeSystemIds: postMergeSystemIds }), mainMenuOpenKeys = _b.mainMenuOpenKeys, onMainMenuOpenChange = _b.onMainMenuOpenChange;
|
|
@@ -82,8 +82,11 @@ var MainMenu = function (props) {
|
|
|
82
82
|
}, [userMenus, getLabel]);
|
|
83
83
|
// 主菜单选中时调用
|
|
84
84
|
var onSelectHandle = useCallback(function (info) {
|
|
85
|
+
var _a, _b;
|
|
85
86
|
setMainMenuSelectedKeys && setMainMenuSelectedKeys(info.selectedKeys);
|
|
86
|
-
|
|
87
|
+
// 选中主菜单修改openKeys
|
|
88
|
+
subMenu && ((_b = (_a = subMenu.current) === null || _a === void 0 ? void 0 : _a.onSubMenuOpenChange) === null || _b === void 0 ? void 0 : _b.call(_a, info.selectedKeys));
|
|
89
|
+
}, [setMainMenuSelectedKeys, subMenu]);
|
|
87
90
|
return (jsx(Menu, { className: "zmdms-menu--main", items: items, inlineIndent: 10, mode: "inline", onMouseEnter: onMouseEnter, selectedKeys: mainMenuSelectedKeys, onSelect: onSelectHandle, openKeys: mainMenuOpenKeys, onOpenChange: onMainMenuOpenChange }));
|
|
88
91
|
};
|
|
89
92
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign } from '../../_virtual/_tslib.js';
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { memo, forwardRef, useContext, useMemo, useState, useCallback, useImperativeHandle } from 'react';
|
|
3
|
+
import { memo, forwardRef, useContext, useMemo, useRef, useState, useCallback, useImperativeHandle } from 'react';
|
|
4
4
|
import { Link } from 'react-router-dom';
|
|
5
5
|
import { useSubMenuOpenKeys } from './hook.js';
|
|
6
6
|
import { LayoutMenuContext } from '../LayoutSiderContext.js';
|
|
@@ -12,7 +12,7 @@ import { Drawer, Menu } from 'antd';
|
|
|
12
12
|
var defaultSubMenu = [];
|
|
13
13
|
var SubMenu = function (props, ref) {
|
|
14
14
|
var marginLeft = props.marginLeft, subMenuWidth = props.subMenuWidth, layoutSiderRef = props.layoutSiderRef, addTab = props.addTab, getPrefixByAppId = props.getPrefixByAppId;
|
|
15
|
-
var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, activeTab = _a.activeTab, userSubMenus = _a.userSubMenus, drawerTitle = _a.drawerTitle;
|
|
15
|
+
var _a = useContext(LayoutMenuContext), mainMenuSelectedKeys = _a.mainMenuSelectedKeys, setMainMenuSelectedKeys = _a.setMainMenuSelectedKeys, activeTab = _a.activeTab, userSubMenus = _a.userSubMenus, drawerTitle = _a.drawerTitle, selectMainMenu = _a.selectMainMenu;
|
|
16
16
|
// 二级菜单当前选中项
|
|
17
17
|
var subMenusSelectedKeys = useMemo(function () {
|
|
18
18
|
return activeTab ? [activeTab] : [];
|
|
@@ -25,9 +25,12 @@ var SubMenu = function (props, ref) {
|
|
|
25
25
|
return defaultSubMenu;
|
|
26
26
|
}, [mainMenuSelectedKeys, userSubMenus]);
|
|
27
27
|
// 展开指定的二级菜单
|
|
28
|
+
var isClickSubMenu = useRef(false); // 是否用户点击二级菜单
|
|
28
29
|
var _b = useSubMenuOpenKeys(userSubMenus, activeTab, {
|
|
29
30
|
getPrefixByAppId: getPrefixByAppId,
|
|
30
31
|
setMainMenuSelectedKeys: setMainMenuSelectedKeys,
|
|
32
|
+
selectMainMenu: selectMainMenu,
|
|
33
|
+
isClickSubMenu: isClickSubMenu,
|
|
31
34
|
}), subMenuOpenKeys = _b.subMenuOpenKeys, onSubMenuOpenChange = _b.onSubMenuOpenChange;
|
|
32
35
|
// 二级菜单是否显示
|
|
33
36
|
var _c = useState(), visible = _c[0], setVisible = _c[1];
|
|
@@ -50,6 +53,14 @@ var SubMenu = function (props, ref) {
|
|
|
50
53
|
setVisible(visible);
|
|
51
54
|
}
|
|
52
55
|
},
|
|
56
|
+
onSubMenuOpenChange: function (keys) {
|
|
57
|
+
if (keys && keys.length > 0) {
|
|
58
|
+
var r = userSubMenus[keys[0]];
|
|
59
|
+
if (Array.isArray(r)) {
|
|
60
|
+
onSubMenuOpenChange(r.map(function (i) { return i.id; }));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
53
64
|
};
|
|
54
65
|
});
|
|
55
66
|
var items = useMemo(function () {
|
|
@@ -70,6 +81,7 @@ var SubMenu = function (props, ref) {
|
|
|
70
81
|
var newPath = path === "/" ? "/" : prefix ? "/".concat(prefix).concat(path) : path;
|
|
71
82
|
var subMenuItem = {
|
|
72
83
|
label: newPath === "/" ? (menuItem.name) : (jsx(Link, __assign({ to: newPath, onClick: function () {
|
|
84
|
+
isClickSubMenu.current = true;
|
|
73
85
|
// 增加一个页签
|
|
74
86
|
addTab({
|
|
75
87
|
key: newPath,
|
|
@@ -81,7 +81,7 @@ function useMainMenuOpenKeys(userMenus, mainMenuSelectedKeys, options) {
|
|
|
81
81
|
}
|
|
82
82
|
// 需要打开的二级菜单
|
|
83
83
|
function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
84
|
-
var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys;
|
|
84
|
+
var getPrefixByAppId = options.getPrefixByAppId, setMainMenuSelectedKeys = options.setMainMenuSelectedKeys, selectMainMenu = options.selectMainMenu, isClickSubMenu = options.isClickSubMenu;
|
|
85
85
|
// 展开指定的二级菜单
|
|
86
86
|
var _a = useState([]), openKeys = _a[0], setOpenKeys = _a[1];
|
|
87
87
|
var onOpenChange = function (openKeys) {
|
|
@@ -89,14 +89,27 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
89
89
|
};
|
|
90
90
|
// 选中的页签 需要展开指定的父级菜单
|
|
91
91
|
useEffect(function () {
|
|
92
|
+
if (isClickSubMenu.current) {
|
|
93
|
+
isClickSubMenu.current = false;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
92
96
|
if (!userSubMenus) {
|
|
93
97
|
return;
|
|
94
98
|
}
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
99
|
+
// 如果没有选中页签
|
|
100
|
+
if (!activeTab) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (selectMainMenu) {
|
|
104
|
+
var mainMainId = selectMainMenu(activeTab);
|
|
105
|
+
if (mainMainId) {
|
|
106
|
+
setMainMenuSelectedKeys && setMainMenuSelectedKeys([mainMainId]);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
var _loop_1 = function (key, value) {
|
|
98
111
|
if (!Array.isArray(value)) {
|
|
99
|
-
continue;
|
|
112
|
+
return "continue";
|
|
100
113
|
}
|
|
101
114
|
// 存放当前二级菜单的值
|
|
102
115
|
// let currentSubMenu: any = null;
|
|
@@ -110,7 +123,11 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
110
123
|
if (newPath === activeTab) {
|
|
111
124
|
// currentSubMenu = { ...subMenuVal };
|
|
112
125
|
// 这里可能有点问题 应该是当前的id
|
|
113
|
-
|
|
126
|
+
// 默认展开所有菜单
|
|
127
|
+
// setOpenKeys([subMenuVal.parentId]);
|
|
128
|
+
if (Array.isArray(value)) {
|
|
129
|
+
setOpenKeys(value.map(function (i) { return i.id; }));
|
|
130
|
+
}
|
|
114
131
|
return true;
|
|
115
132
|
}
|
|
116
133
|
// 如果没有子元素,或者子元素不是数组 直接下一轮遍历
|
|
@@ -124,7 +141,12 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
124
141
|
var newPath = path === "/" ? "/" : prefix ? "/".concat(prefix).concat(path) : path;
|
|
125
142
|
if (newPath === activeTab) {
|
|
126
143
|
// currentSubMenu = { ...item };
|
|
127
|
-
|
|
144
|
+
// 只打开当前级
|
|
145
|
+
// setOpenKeys([item.parentId]);
|
|
146
|
+
// 默认展开所有菜单
|
|
147
|
+
if (Array.isArray(value)) {
|
|
148
|
+
setOpenKeys(value.map(function (i) { return i.id; }));
|
|
149
|
+
}
|
|
128
150
|
return true;
|
|
129
151
|
}
|
|
130
152
|
return false;
|
|
@@ -134,10 +156,24 @@ function useSubMenuOpenKeys(userSubMenus, activeTab, options) {
|
|
|
134
156
|
if (result) {
|
|
135
157
|
// 设置一级菜单选中的key
|
|
136
158
|
setMainMenuSelectedKeys && setMainMenuSelectedKeys([key]);
|
|
137
|
-
break;
|
|
159
|
+
return "break";
|
|
138
160
|
}
|
|
161
|
+
};
|
|
162
|
+
// 遍历二级菜单
|
|
163
|
+
for (var _i = 0, _a = Object.entries(userSubMenus); _i < _a.length; _i++) {
|
|
164
|
+
var _b = _a[_i], key = _b[0], value = _b[1];
|
|
165
|
+
var state_1 = _loop_1(key, value);
|
|
166
|
+
if (state_1 === "break")
|
|
167
|
+
break;
|
|
139
168
|
}
|
|
140
|
-
}, [
|
|
169
|
+
}, [
|
|
170
|
+
userSubMenus,
|
|
171
|
+
activeTab,
|
|
172
|
+
getPrefixByAppId,
|
|
173
|
+
setMainMenuSelectedKeys,
|
|
174
|
+
selectMainMenu,
|
|
175
|
+
isClickSubMenu,
|
|
176
|
+
]);
|
|
141
177
|
return {
|
|
142
178
|
subMenuOpenKeys: openKeys,
|
|
143
179
|
onSubMenuOpenChange: onOpenChange,
|
|
@@ -19,7 +19,7 @@ var MenuCom = function (props) {
|
|
|
19
19
|
var _a;
|
|
20
20
|
(_a = subMenu.current) === null || _a === void 0 ? void 0 : _a.setVisible(false);
|
|
21
21
|
}, []);
|
|
22
|
-
return (jsxs("div", __assign({ className: "zmdms-menu", onMouseLeave: onMouseLeave }, { children: [jsx(Logo, { logo: logo }), jsx(MainMenu, { onMouseEnter: onMouseEnter, addTab: addTab, getPrefixByAppId: getPrefixByAppId }), jsx(SubMenu, { ref: subMenu, marginLeft: width, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, getPrefixByAppId: getPrefixByAppId })] })));
|
|
22
|
+
return (jsxs("div", __assign({ className: "zmdms-menu", onMouseLeave: onMouseLeave }, { children: [jsx(Logo, { logo: logo }), jsx(MainMenu, { onMouseEnter: onMouseEnter, addTab: addTab, getPrefixByAppId: getPrefixByAppId, subMenu: subMenu }), jsx(SubMenu, { ref: subMenu, marginLeft: width, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, getPrefixByAppId: getPrefixByAppId })] })));
|
|
23
23
|
};
|
|
24
24
|
var Menu = memo(MenuCom);
|
|
25
25
|
|