zmdms-webui 1.0.2 → 1.0.4

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.
@@ -1 +1 @@
1
- .zmdms-container{background-color:#e9ecf3}.zmdms-container .zmdms-sider{background-color:#5b76f6;background-repeat:no-repeat;background-size:100% auto;background-size:cover;z-index:102}.zmdms-container .zmdms-content{background-color:#e9ecf3}.zmdms-container .zmdms-content--header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;line-height:48px;padding:0 0 0 10px}.zmdms-container .zmdms-content--header .ant-tabs{flex:1;margin-top:8px;width:calc(100% - 350px)}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;padding:0 5px 0 10px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-nav{margin-bottom:0}.zmdms-container .zmdms-content--content{height:calc(100vh - 48px);position:relative}.zmdms-container .zmdms-content--header-info{color:#000000a6;display:flex;height:48px;max-width:350px}.zmdms-container .zmdms-content--header-info .full-screen{cursor:pointer;text-align:center;width:36px}.zmdms-container .zmdms-content--header-info .user-operation{align-items:center;cursor:pointer;display:flex;padding:0 12px}.zmdms-container .zmdms-content--header-info .user-operation:hover{background-color:#f7f7f7}.zmdms-container .zmdms-content--header-info .user-operation>span:last-child{color:#000000a6;display:inline-block;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:70px}.zmdms-menu{display:flex;flex-direction:column;height:100vh}.zmdms-menu .zmdms-logo{align-items:center;display:block;display:flex;height:48px;padding:9px 0 5px}.zmdms-menu .zmdms-logo.zmdms-logo--line{position:relative;z-index:1000}.zmdms-menu .zmdms-logo.zmdms-logo--line:after{background:#505cbe;content:"";height:29px;position:absolute;right:-.5px;width:1px}.zmdms-menu .zmdms-logo>img{display:block;margin:0 auto;width:78px}.zmdms-menu .zmdms-menu--main{background:#0000;border-right:none;flex:1;overflow-x:hidden;overflow-y:auto}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu.ant-menu-submenu-open>.ant-menu-submenu-title{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#5b76f5;background-color:#5b8af666;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0;padding:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{color:#ffffffa6;right:6px}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content{flex:none;width:88%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub.ant-menu-inline{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected{background:#5b76f5;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu .zmdms-menu--main>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected{background:#5b76f6;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub{padding:0}.zmdms-menu--sub .ant-drawer-content{background:#0000;background-position:100%;background-repeat:no-repeat;background-size:cover;overflow:hidden}.zmdms-menu--sub .ant-drawer-content .ant-menu{background:#0000;color:#fff}.zmdms-menu--sub.ant-drawer-left>.ant-drawer-content-wrapper{left:-1px}.zmdms-menu--sub .ant-drawer-header{background:#0000;border-bottom:none;padding:0}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title{align-items:center;color:#fff;display:flex;height:48px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title{align-items:center;color:#fff;display:flex;font-size:14px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title img{width:118px}.zmdms-menu--sub .ant-drawer-body{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;font-size:13px;overflow-x:hidden;padding:0}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu.ant-menu-submenu-inline{border-bottom:1px solid #8d9eff47;padding-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline{background:#0000;padding:0 10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-item,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item{align-items:center;border-radius:4px;color:#fff;display:flex;font-size:13px;height:30px;line-height:30px;margin:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:not(:last-child),.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:last-child,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:last-child{margin-bottom:10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title{color:#fff;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected{background-color:#5b76f5!important;color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub .ant-drawer-footer{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;border-top:1px solid #5670ea;display:flex;height:40px;justify-content:center;line-height:40px;padding:3px 10px}.zmdms-menu--sub .ant-drawer-footer .zt-btn-link{color:#fff}.logout-spin{background-color:#ffffffb3;bottom:0;left:0;padding-top:100px;position:fixed;right:0;top:0;z-index:1000}
1
+ .zmdms-container{background-color:#e9ecf3}.zmdms-container .zmdms-sider{background-color:#5b76f6;background-repeat:no-repeat;background-size:100% auto;background-size:cover;z-index:102}.zmdms-container .zmdms-content{background-color:#e9ecf3}.zmdms-container .zmdms-content--header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;line-height:48px;padding:0 0 0 10px}.zmdms-container .zmdms-content--header .ant-tabs{flex:1;margin-top:8px;width:calc(100% - 350px)}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-tab a{color:#768696;display:inline-block;padding:0 5px 0 10px}.zmdms-container .zmdms-content--header .ant-tabs .ant-tabs-nav{margin-bottom:0}.zmdms-container .zmdms-content--content{height:calc(100vh - 48px);position:relative}.zmdms-container .zmdms-content--header-info{color:#000000a6;display:flex;height:48px;max-width:350px}.zmdms-container .zmdms-content--header-info .full-screen{cursor:pointer;text-align:center;width:36px}.zmdms-container .zmdms-content--header-info .user-operation{align-items:center;cursor:pointer;display:flex;padding:0 12px}.zmdms-container .zmdms-content--header-info .user-operation:hover{background-color:#f7f7f7}.zmdms-container .zmdms-content--header-info .user-operation>span:last-child{color:#000000a6;display:inline-block;margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:70px}.zmdms-menu{display:flex;flex-direction:column;height:100vh}.zmdms-menu .zmdms-logo{align-items:center;display:block;display:flex;height:48px;padding:9px 0 5px}.zmdms-menu .zmdms-logo.zmdms-logo--line{position:relative;z-index:1000}.zmdms-menu .zmdms-logo.zmdms-logo--line:after{background:#505cbe;content:"";height:29px;position:absolute;right:-.5px;width:1px}.zmdms-menu .zmdms-logo>img{display:block;margin:0 auto;width:78px}.zmdms-menu .zmdms-menu--search{background-color:#5b8af666;position:relative}.zmdms-menu .zmdms-menu--search>input{background-color:#5b8af666;border:none;color:#fff;font-size:13px;height:36px;line-height:36px}.zmdms-menu .zmdms-menu--search>input::placeholder{color:#fff;font-size:13px}.zmdms-menu .zmdms-menu--search .zmdms-menu--search__icon{align-items:center;color:#fff;cursor:pointer;display:flex;font-size:16px;height:30px;justify-content:center;position:absolute;right:0;top:3px;width:30px}.zmdms-menu .zmdms-menu--main{background:#0000;border-right:none;flex:1;overflow-x:hidden;overflow-y:auto}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu.ant-menu-submenu-open>.ant-menu-submenu-title{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#5b76f5;background-color:#5b8af666;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0;padding:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{color:#ffffffa6;right:6px}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-title-content{flex:none;width:88%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu .zmdms-menu--main>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub.ant-menu-inline{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected{background:#5b76f5;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-submenu .ant-menu-sub>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu .zmdms-menu--main::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu .zmdms-menu--main>.ant-menu-item{align-items:center;color:#ffffffa6;display:flex;font-size:13px;height:36px;line-height:36px;margin:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item a{color:inherit}.zmdms-menu .zmdms-menu--main>.ant-menu-item:active{background:#0000}.zmdms-menu .zmdms-menu--main>.ant-menu-item:hover{color:#fff}.zmdms-menu .zmdms-menu--main>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected{background:#5b76f6;color:#fff;width:100%}.zmdms-menu .zmdms-menu--main>.ant-menu-item.ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub{padding:0}.zmdms-menu--sub .ant-drawer-content{background:#0000;background-position:100%;background-repeat:no-repeat;background-size:cover;overflow:hidden}.zmdms-menu--sub .ant-drawer-content .ant-menu{background:#0000;color:#fff}.zmdms-menu--sub.ant-drawer-left>.ant-drawer-content-wrapper{left:-1px}.zmdms-menu--sub .ant-drawer-header{background:#0000;border-bottom:none;padding:0}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title{align-items:center;color:#fff;display:flex;height:48px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title{align-items:center;color:#fff;display:flex;font-size:14px;justify-content:center}.zmdms-menu--sub .ant-drawer-header .ant-drawer-header-title .ant-drawer-title img{width:118px}.zmdms-menu--sub .ant-drawer-body{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;font-size:13px;overflow-x:hidden;padding:0}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar{height:4px;width:6px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-track{background:#fff0;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb{background:#5b76f6;border-radius:4px}.zmdms-menu--sub .ant-drawer-body::-webkit-scrollbar-thumb:hover{background:#5b76f6}.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu.ant-menu-submenu-inline{border-bottom:1px solid #8d9eff47;padding-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline{background:#0000;padding:0 10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-item,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item{align-items:center;border-radius:4px;color:#fff;display:flex;font-size:13px;height:30px;line-height:30px;margin:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:not(:last-child),.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:not(:last-child){margin-bottom:0}.zmdms-menu--sub .ant-drawer-body .ant-menu-item a,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item a{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item:last-child,.zmdms-menu--sub .ant-drawer-body .ant-menu-sub.ant-menu-inline>.ant-menu-item:last-child{margin-bottom:10px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title{color:#fff;font-size:13px;font-weight:700;height:30px;line-height:30px}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title .ant-menu-submenu-arrow,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:hover .ant-menu-submenu-arrow{color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:active,.zmdms-menu--sub .ant-drawer-body .ant-menu-submenu-title:active{background:#0000}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected{background-color:#5b76f5!important;color:#fff}.zmdms-menu--sub .ant-drawer-body .ant-menu-item-selected:after{border-right:none}.zmdms-menu--sub .ant-drawer-footer{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#5b76f566;border-top:1px solid #5670ea;display:flex;height:40px;justify-content:center;line-height:40px;padding:3px 10px}.zmdms-menu--sub .ant-drawer-footer .zt-btn-link{color:#fff}.logout-spin{background-color:#ffffffb3;bottom:0;left:0;padding-top:100px;position:fixed;right:0;top:0;z-index:1000}
@@ -7,6 +7,10 @@ interface ILayoutSiderProps {
7
7
  siderBg?: any;
8
8
  logo?: any;
9
9
  subMenuLogo?: any;
10
+ /**
11
+ * 是否显示搜索框
12
+ */
13
+ isShowSearchInput?: boolean;
10
14
  /**
11
15
  * 微应用列表,在qiankun下有用 需要拼接路由前缀
12
16
  */
@@ -3,20 +3,27 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { memo, useState, useRef, useCallback } from 'react';
4
4
  import Menu from './menu/index.js';
5
5
  import { LayoutMenuContext } from './LayoutSiderContext.js';
6
+ import { MENU_SEARCH_KEY, MENU_COLLECT_KEY } from './menu/constants.js';
6
7
  import { Layout } from 'antd';
7
8
 
8
9
  /**
9
10
  * TODO: 增加收藏、搜索菜单的功能
10
11
  */
11
12
  var AppLayoutSider = function (props) {
13
+ var _a;
12
14
  // console.log("layout-sider- rerender");
13
15
  var
14
16
  // 118 宽度改成 134宽度
15
- _a = props.siderWidth,
17
+ _b = props.siderWidth,
16
18
  // 118 宽度改成 134宽度
17
- siderWidth = _a === void 0 ? 134 : _a, _b = props.subMenuWidth, subMenuWidth = _b === void 0 ? 162 : _b, addTab = props.addTab, siderBg = props.siderBg, logo = props.logo, subMenuLogo = props.subMenuLogo, apps = props.apps, activeTab = props.activeTab, userMenus = props.userMenus, userSubMenus = props.userSubMenus, mergeSystemIds = props.mergeSystemIds, postMergeSystemIds = props.postMergeSystemIds, drawerTitle = props.drawerTitle, selectMainMenu = props.selectMainMenu, menuJoinRule = props.menuJoinRule, renderItem = props.renderItem, defaultVisible = props.defaultVisible, defaultFixed = props.defaultFixed;
19
+ siderWidth = _b === void 0 ? 134 : _b, _c = props.subMenuWidth, subMenuWidth = _c === void 0 ? 162 : _c, addTab = props.addTab, siderBg = props.siderBg, logo = props.logo, subMenuLogo = props.subMenuLogo, _d = props.isShowSearchInput, isShowSearchInput = _d === void 0 ? true : _d, apps = props.apps, activeTab = props.activeTab, userMenus = props.userMenus, userSubMenus = props.userSubMenus, mergeSystemIds = props.mergeSystemIds, postMergeSystemIds = props.postMergeSystemIds, drawerTitle = props.drawerTitle, selectMainMenu = props.selectMainMenu, menuJoinRule = props.menuJoinRule, renderItem = props.renderItem, defaultVisible = props.defaultVisible, defaultFixed = props.defaultFixed;
18
20
  // 当前选中的主菜单item
19
- var _c = useState([]), mainMenuSelectedKeys = _c[0], setMainMenuSelectedKeys = _c[1];
21
+ var _e = useState([]), mainMenuSelectedKeys = _e[0], setMainMenuSelectedKeys = _e[1];
22
+ // 内部二级菜单管理
23
+ var _f = useState((_a = {},
24
+ _a[MENU_SEARCH_KEY] = [],
25
+ _a[MENU_COLLECT_KEY] = [],
26
+ _a)), innerUserSubMenus = _f[0], setInnerUserSubMenus = _f[1];
20
27
  var layoutSiderRef = useRef();
21
28
  // 通过系统id获取前缀
22
29
  var getPrefixByAppId = useCallback(function (id) {
@@ -37,13 +44,15 @@ var AppLayoutSider = function (props) {
37
44
  activeTab: activeTab,
38
45
  userMenus: userMenus,
39
46
  userSubMenus: userSubMenus,
47
+ innerUserSubMenus: innerUserSubMenus,
48
+ setInnerUserSubMenus: setInnerUserSubMenus,
40
49
  mergeSystemIds: mergeSystemIds,
41
50
  postMergeSystemIds: postMergeSystemIds,
42
51
  drawerTitle: drawerTitle,
43
52
  selectMainMenu: selectMainMenu,
44
53
  menuJoinRule: menuJoinRule,
45
54
  renderItem: renderItem,
46
- } }, { children: jsx(Menu, { width: siderWidth, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, logo: logo, subMenuLogo: subMenuLogo, getPrefixByAppId: getPrefixByAppId, defaultVisible: defaultVisible, defaultFixed: defaultFixed }) })) })));
55
+ } }, { children: jsx(Menu, { width: siderWidth, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, logo: logo, subMenuLogo: subMenuLogo, getPrefixByAppId: getPrefixByAppId, defaultVisible: defaultVisible, defaultFixed: defaultFixed, isShowSearchInput: isShowSearchInput }) })) })));
47
56
  };
48
57
  AppLayoutSider.displayName = "ZTXK_WEBUI_AppLayoutSider";
49
58
  var AppLayoutSider$1 = memo(AppLayoutSider);
@@ -0,0 +1,44 @@
1
+ import { __assign } from '../../_virtual/_tslib.js';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useState, useContext } from 'react';
4
+ import { useMemoizedFn } from 'ahooks';
5
+ import { LayoutMenuContext } from '../LayoutSiderContext.js';
6
+ import { MENU_SEARCH_KEY } from './constants.js';
7
+ import MemoInput from '../../input/input.js';
8
+ import SearchOutlined from '../../node_modules/@ant-design/icons/es/icons/SearchOutlined.js';
9
+
10
+ var SearchInput = function () {
11
+ var _a = useState("菜单搜索"), placeholderText = _a[0], setPlaceholderText = _a[1];
12
+ var _b = useState(), searchValue = _b[0], setSearchValue = _b[1];
13
+ var _c = useContext(LayoutMenuContext), userSubMenus = _c.userSubMenus, setMainMenuSelectedKeys = _c.setMainMenuSelectedKeys, setInnerUserSubMenus = _c.setInnerUserSubMenus;
14
+ var onSearch = useMemoizedFn(function () {
15
+ if (!searchValue) {
16
+ return;
17
+ }
18
+ var newSubUserMenuArr = [];
19
+ Object.keys(userSubMenus).forEach(function (key) {
20
+ var subUserMenuArr = userSubMenus[key];
21
+ subUserMenuArr.forEach(function (item) {
22
+ var copyItem = __assign(__assign({}, item), { selectedKey: key });
23
+ if (Array.isArray(item === null || item === void 0 ? void 0 : item.children)) {
24
+ var result = item === null || item === void 0 ? void 0 : item.children.filter(function (child) {
25
+ return child.name.includes(searchValue);
26
+ });
27
+ copyItem.children = result.map(function (resultItem) { return (__assign(__assign({}, resultItem), { selectedKey: key })); });
28
+ }
29
+ if ((Array.isArray(copyItem.children) && copyItem.children.length > 0) ||
30
+ (copyItem.name.includes(searchValue) && copyItem.path !== "/")) {
31
+ newSubUserMenuArr.push(copyItem);
32
+ }
33
+ });
34
+ });
35
+ setMainMenuSelectedKeys === null || setMainMenuSelectedKeys === void 0 ? void 0 : setMainMenuSelectedKeys([MENU_SEARCH_KEY]);
36
+ setInnerUserSubMenus(function (pre) {
37
+ var _a;
38
+ return __assign(__assign({}, pre), (_a = {}, _a[MENU_SEARCH_KEY] = newSubUserMenuArr, _a));
39
+ });
40
+ });
41
+ return (jsxs("div", __assign({ className: "zmdms-menu--search" }, { children: [jsx(MemoInput, { placeholder: placeholderText, onBlur: function () { return setPlaceholderText("菜单搜索"); }, onFocus: function () { return setPlaceholderText(""); }, value: searchValue, onChange: function (e) { return setSearchValue(e.target.value); }, onPressEnter: function () { return onSearch(); } }), jsx(SearchOutlined, { className: "zmdms-menu--search__icon", onClick: function () { return onSearch(); } })] })));
42
+ };
43
+
44
+ export { SearchInput as default };
@@ -7,6 +7,7 @@ import { LayoutMenuContext } from '../LayoutSiderContext.js';
7
7
  import classNames from '../../node_modules/classnames/index.js';
8
8
  import { filterMenu } from './MainMenu.js';
9
9
  import { useMount } from 'ahooks';
10
+ import { MENU_SEARCH_KEY, MENU_COLLECT_KEY } from './constants.js';
10
11
  import ButtonCom from '../../button/button.js';
11
12
  import SwapOutlined from '../../node_modules/@ant-design/icons/es/icons/SwapOutlined.js';
12
13
  import { Drawer, Menu } from 'antd';
@@ -14,7 +15,7 @@ import { Drawer, Menu } from 'antd';
14
15
  var defaultSubMenu = [];
15
16
  var SubMenu = function (props, ref) {
16
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;
17
- var _b = useContext(LayoutMenuContext), mainMenuSelectedKeys = _b.mainMenuSelectedKeys, setMainMenuSelectedKeys = _b.setMainMenuSelectedKeys, activeTab = _b.activeTab, userSubMenus = _b.userSubMenus, drawerTitle = _b.drawerTitle, selectMainMenu = _b.selectMainMenu, menuJoinRule = _b.menuJoinRule, renderItem = _b.renderItem;
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, menuJoinRule = _b.menuJoinRule, renderItem = _b.renderItem;
18
19
  // 二级菜单当前选中项
19
20
  var subMenusSelectedKeys = useMemo(function () {
20
21
  return activeTab ? [activeTab] : [];
@@ -22,10 +23,15 @@ var SubMenu = function (props, ref) {
22
23
  // 根据主菜单当前选中项,设置二级菜单应该展示的内容
23
24
  var subMenus = useMemo(function () {
24
25
  if (mainMenuSelectedKeys && mainMenuSelectedKeys.length > 0) {
25
- return userSubMenus[mainMenuSelectedKeys[0]];
26
+ var mainSelectedKey = mainMenuSelectedKeys[0];
27
+ if (mainSelectedKey === MENU_SEARCH_KEY ||
28
+ mainSelectedKey === MENU_COLLECT_KEY) {
29
+ return innerUserSubMenus[mainSelectedKey];
30
+ }
31
+ return userSubMenus[mainSelectedKey];
26
32
  }
27
33
  return defaultSubMenu;
28
- }, [mainMenuSelectedKeys, userSubMenus]);
34
+ }, [mainMenuSelectedKeys, userSubMenus, innerUserSubMenus]);
29
35
  // 展开指定的二级菜单
30
36
  var isClickSubMenu = useRef(false); // 是否用户点击二级菜单
31
37
  var _c = useSubMenuOpenKeys(userSubMenus, activeTab, {
@@ -0,0 +1,4 @@
1
+ var MENU_SEARCH_KEY = "menu_search_key";
2
+ var MENU_COLLECT_KEY = "menu_collect_key";
3
+
4
+ export { MENU_COLLECT_KEY, MENU_SEARCH_KEY };
@@ -2,11 +2,12 @@ import { __assign } from '../../_virtual/_tslib.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { memo, useState, useRef, useCallback } from 'react';
4
4
  import Logo from './Logo.js';
5
+ import SearchInput from './SearchInput.js';
5
6
  import MainMenu from './MainMenu.js';
6
7
  import SubMenu from './SubMenu.js';
7
8
 
8
9
  var MenuCom = function (props) {
9
- var width = props.width, subMenuWidth = props.subMenuWidth, layoutSiderRef = props.layoutSiderRef, addTab = props.addTab, logo = props.logo, getPrefixByAppId = props.getPrefixByAppId, subMenuLogo = props.subMenuLogo, _a = props.defaultVisible, defaultVisible = _a === void 0 ? true : _a, defaultFixed = props.defaultFixed;
10
+ var width = props.width, subMenuWidth = props.subMenuWidth, layoutSiderRef = props.layoutSiderRef, addTab = props.addTab, logo = props.logo, getPrefixByAppId = props.getPrefixByAppId, subMenuLogo = props.subMenuLogo, _a = props.defaultVisible, defaultVisible = _a === void 0 ? true : _a, defaultFixed = props.defaultFixed, isShowSearchInput = props.isShowSearchInput;
10
11
  // 二级菜单是否显示
11
12
  var _b = useState(defaultVisible), visible = _b[0], setVisible = _b[1];
12
13
  // 二级菜单Ref对象
@@ -21,7 +22,7 @@ var MenuCom = function (props) {
21
22
  var _a;
22
23
  (_a = subMenu.current) === null || _a === void 0 ? void 0 : _a.setVisible(false);
23
24
  }, []);
24
- return (jsxs("div", __assign({ className: "zmdms-menu", onMouseLeave: onMouseLeave }, { children: [jsx(Logo, { logo: logo, showLine: visible }), jsx(MainMenu, { onMouseEnter: onMouseEnter, addTab: addTab, getPrefixByAppId: getPrefixByAppId, subMenu: subMenu }), jsx(SubMenu, { ref: subMenu, marginLeft: width, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, getPrefixByAppId: getPrefixByAppId, subMenuLogo: subMenuLogo, visible: visible, setVisible: setVisible, defaultFixed: defaultFixed })] })));
25
+ return (jsxs("div", __assign({ className: "zmdms-menu", onMouseLeave: onMouseLeave }, { children: [jsx(Logo, { logo: logo, showLine: visible }), isShowSearchInput && jsx(SearchInput, {}), jsx(MainMenu, { onMouseEnter: onMouseEnter, addTab: addTab, getPrefixByAppId: getPrefixByAppId, subMenu: subMenu }), jsx(SubMenu, { ref: subMenu, marginLeft: width, subMenuWidth: subMenuWidth, layoutSiderRef: layoutSiderRef, addTab: addTab, getPrefixByAppId: getPrefixByAppId, subMenuLogo: subMenuLogo, visible: visible, setVisible: setVisible, defaultFixed: defaultFixed })] })));
25
26
  };
26
27
  var Menu = memo(MenuCom);
27
28
 
@@ -1,5 +1,8 @@
1
1
  import React__default from 'react';
2
2
 
3
- declare const MicroLoading: React__default.FC;
3
+ interface IProps {
4
+ tip?: React__default.ReactNode;
5
+ }
6
+ declare const MicroLoading: React__default.FC<IProps>;
4
7
 
5
8
  export { MicroLoading as default };
@@ -1,8 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Spin } from 'antd';
3
3
 
4
- var MicroLoading = function () {
5
- return (jsx(Spin, { spinning: true, tip: "\u5B50\u5E94\u7528\u52A0\u8F7D\u4E2D...", className: "micro-loading" }));
4
+ // tip = '子应用加载中...'
5
+ var MicroLoading = function (_a) {
6
+ var _b = _a.tip, tip = _b === void 0 ? "" : _b;
7
+ return jsx(Spin, { spinning: true, tip: tip, className: "micro-loading" });
6
8
  };
7
9
 
8
10
  export { MicroLoading as default };
@@ -0,0 +1,15 @@
1
+ import _objectSpread2 from '../../../../@babel/runtime/helpers/esm/objectSpread2.js';
2
+ import * as React from 'react';
3
+ import SearchOutlinedSvg from '../../../icons-svg/es/asn/SearchOutlined.js';
4
+ import AntdIcon from '../components/AntdIcon.js';
5
+
6
+ var SearchOutlined = function SearchOutlined(props, ref) {
7
+ return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread2(_objectSpread2({}, props), {}, {
8
+ ref: ref,
9
+ icon: SearchOutlinedSvg
10
+ }));
11
+ };
12
+ SearchOutlined.displayName = 'SearchOutlined';
13
+ var SearchOutlined$1 = /*#__PURE__*/React.forwardRef(SearchOutlined);
14
+
15
+ export { SearchOutlined$1 as default };
@@ -0,0 +1,5 @@
1
+ // This icon file is generated automatically.
2
+ var SearchOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z" } }] }, "name": "search", "theme": "outlined" };
3
+ var SearchOutlinedSvg = SearchOutlined;
4
+
5
+ export { SearchOutlinedSvg as default };
@@ -3,7 +3,8 @@ import React__default from 'react';
3
3
 
4
4
  interface IProps {
5
5
  children: React__default.ReactNode;
6
+ tip?: React__default.ReactNode;
6
7
  }
7
- declare const SuspenseComponent: ({ children }: IProps) => react_jsx_runtime.JSX.Element;
8
+ declare const SuspenseComponent: ({ children, tip }: IProps) => react_jsx_runtime.JSX.Element;
8
9
 
9
10
  export { SuspenseComponent as default };
@@ -3,9 +3,10 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { Suspense } from 'react';
4
4
  import { Spin } from 'antd';
5
5
 
6
+ // tip = "路由加载中..."
6
7
  var SuspenseComponent = function (_a) {
7
- var children = _a.children;
8
- return (jsx(Suspense, __assign({ fallback: jsx(Spin, { spinning: true, tip: "\u8DEF\u7531\u52A0\u8F7D\u4E2D...", className: "micro-loading" }) }, { children: children })));
8
+ var children = _a.children, _b = _a.tip, tip = _b === void 0 ? "" : _b;
9
+ return (jsx(Suspense, __assign({ fallback: jsx(Spin, { spinning: true, tip: tip, className: "micro-loading" }) }, { children: children })));
9
10
  };
10
11
 
11
12
  export { SuspenseComponent as default };
@@ -2,6 +2,7 @@ import { __assign } from '../_virtual/_tslib.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { useCallback } from 'react';
4
4
  import { Table } from 'antd';
5
+ import { plus } from 'zmdms-utils';
5
6
 
6
7
  function useSummary(summaryConfig, columns, options) {
7
8
  var summaryFixed = options.summaryFixed, rowSelection = options.rowSelection, expandable = options.expandable, isAdd = options.isAdd, isDel = options.isDel;
@@ -177,8 +178,7 @@ function getSubtotalObj(fields, dataSource) {
177
178
  dataItem = isNaN(dataItem) ? 0 : dataItem;
178
179
  var summaryItem = (summaryTotalObj === null || summaryTotalObj === void 0 ? void 0 : summaryTotalObj[field]) || 0;
179
180
  summaryTotalObj[field] = summaryItem
180
- ? // TODO: 这里是加法 后面对浮点数做处理
181
- plus(summaryItem, dataItem)
181
+ ? plus(summaryItem, dataItem)
182
182
  : dataItem;
183
183
  }
184
184
  else {
@@ -312,10 +312,6 @@ function getTotalObj(fields) {
312
312
  }
313
313
  });
314
314
  return summaryTotalObj;
315
- }
316
- // 暂时用这里的加法
317
- function plus(a, b) {
318
- return a + b;
319
315
  }
320
316
 
321
317
  export { useSummary as default };