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.
@@ -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
- }, [setMainMenuSelectedKeys]);
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
- for (var _i = 0, _a = Object.entries(userSubMenus); _i < _a.length; _i++) {
97
- var _b = _a[_i], key = _b[0], value = _b[1];
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
- setOpenKeys([subMenuVal.parentId]);
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
- setOpenKeys([item.parentId]);
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
- }, [userSubMenus, activeTab, getPrefixByAppId, setMainMenuSelectedKeys]);
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zmdms-webui",
3
- "version": "0.0.62",
3
+ "version": "0.0.63",
4
4
  "private": false,
5
5
  "main": "dist/index.es.js",
6
6
  "module": "dist/index.es.js",