@ibiz-template/vue3-components 0.7.16 → 0.7.17

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.
Files changed (57) hide show
  1. package/dist/index-7bnGd6Fk.js +4 -0
  2. package/dist/index-8ZKxthh5.js +1 -0
  3. package/dist/index-EgqQMBU4.js +1 -0
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{xlsx-util-AIEyudtA.js → xlsx-util-e9YRtb2T.js} +1 -1
  7. package/es/common/action-toolbar/action-toolbar.mjs +25 -6
  8. package/es/control/app-menu/app-menu.css +1 -1
  9. package/es/control/app-menu/app-menu.d.ts +4 -0
  10. package/es/control/app-menu/app-menu.mjs +83 -17
  11. package/es/control/app-menu/custom-menu-design/custom-menu-design.css +1 -0
  12. package/es/control/app-menu/custom-menu-design/custom-menu-design.d.ts +43 -0
  13. package/es/control/app-menu/custom-menu-design/custom-menu-design.mjs +280 -0
  14. package/es/control/app-menu/index.d.ts +4 -0
  15. package/es/control/app-menu/index.mjs +2 -0
  16. package/es/control/kanban/kanban.mjs +2 -2
  17. package/es/control/toolbar/toolbar.css +1 -1
  18. package/es/control/toolbar/toolbar.mjs +1 -0
  19. package/es/control/tree/el-tree-util.d.ts +1 -1
  20. package/es/control/tree/index.d.ts +1 -1
  21. package/es/control/tree/tree.d.ts +1 -1
  22. package/es/locale/en/index.d.ts +495 -390
  23. package/es/locale/en/index.mjs +20 -565
  24. package/es/locale/zh-CN/index.d.ts +495 -390
  25. package/es/locale/zh-CN/index.mjs +20 -563
  26. package/es/panel-component/auth-userinfo/auth-userinfo.css +1 -1
  27. package/es/panel-component/auth-userinfo/auth-userinfo.mjs +2 -2
  28. package/es/panel-component/panel-app-title/panel-app-title.controller.mjs +3 -1
  29. package/es/panel-component/panel-app-title/panel-app-title.css +1 -1
  30. package/es/panel-component/panel-app-title/panel-app-title.mjs +42 -22
  31. package/es/panel-component/user-action/index.d.ts +1 -1
  32. package/es/panel-component/user-action/user-action.d.ts +1 -1
  33. package/es/panel-component/user-action/user-action.mjs +5 -3
  34. package/es/util/app-util/app-util.d.ts +2 -2
  35. package/es/util/app-util/app-util.mjs +8 -7
  36. package/lib/common/action-toolbar/action-toolbar.cjs +25 -6
  37. package/lib/control/app-menu/app-menu.cjs +83 -17
  38. package/lib/control/app-menu/app-menu.css +1 -1
  39. package/lib/control/app-menu/custom-menu-design/custom-menu-design.cjs +282 -0
  40. package/lib/control/app-menu/custom-menu-design/custom-menu-design.css +1 -0
  41. package/lib/control/app-menu/index.cjs +2 -0
  42. package/lib/control/kanban/kanban.cjs +2 -2
  43. package/lib/control/toolbar/toolbar.cjs +1 -0
  44. package/lib/control/toolbar/toolbar.css +1 -1
  45. package/lib/locale/en/index.cjs +20 -565
  46. package/lib/locale/zh-CN/index.cjs +20 -563
  47. package/lib/panel-component/auth-userinfo/auth-userinfo.cjs +2 -2
  48. package/lib/panel-component/auth-userinfo/auth-userinfo.css +1 -1
  49. package/lib/panel-component/panel-app-title/panel-app-title.cjs +42 -22
  50. package/lib/panel-component/panel-app-title/panel-app-title.controller.cjs +3 -1
  51. package/lib/panel-component/panel-app-title/panel-app-title.css +1 -1
  52. package/lib/panel-component/user-action/user-action.cjs +5 -3
  53. package/lib/util/app-util/app-util.cjs +8 -7
  54. package/package.json +5 -5
  55. package/dist/index-8VqjTY2N.js +0 -4
  56. package/dist/index-B_FGiHpY.js +0 -1
  57. package/dist/index-Q8y2iWnX.js +0 -1
@@ -55,7 +55,7 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
55
55
  "class": [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass, this.ns.is("left", this.menuAlign === "LEFT"), this.ns.is("top", this.menuAlign === "TOP"), this.ns.is("collapse", this.isCollapse)]
56
56
  }, [createVNode(resolveComponent("el-dropdown"), null, {
57
57
  default: () => createVNode("div", {
58
- "class": this.ns.b("info")
58
+ "class": [this.ns.b("info"), this.ns.is("collapse", this.isCollapse)]
59
59
  }, [createVNode("div", {
60
60
  "class": this.ns.b("label")
61
61
  }, [createVNode(resolveComponent("el-avatar"), {
@@ -68,7 +68,7 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
68
68
  }, [this.srfusername]), this.menuAlign === "LEFT" && createVNode("div", {
69
69
  "class": this.ns.be("name", "person-name")
70
70
  }, [this.srfpersonname])])]), createVNode("ion-icon", {
71
- "class": this.ns.e("down"),
71
+ "class": [this.ns.e("down"), this.ns.is("collapse", this.isCollapse)],
72
72
  "name": "chevron-down-outline"
73
73
  }, null)]),
74
74
  dropdown: () => createVNode(resolveComponent("el-dropdown-menu"), null, {
@@ -35,7 +35,9 @@ class PanelAppTitleController extends PanelItemController {
35
35
  if (indexViewModel.title) {
36
36
  document.title = indexViewModel.title;
37
37
  }
38
- if (indexViewModel.appIconPath) {
38
+ if (this.model.sysImage && this.model.sysImage.rawContent) {
39
+ this.state.icon = this.model.sysImage.rawContent;
40
+ } else if (indexViewModel.appIconPath) {
39
41
  this.state.icon = indexViewModel.appIconPath;
40
42
  }
41
43
  if (indexViewModel.appIconPath2) {
@@ -1 +1 @@
1
- .ibiz-panel-app-title{--ibiz-panel-app-title-color:var(--ibiz-color-text-0);--ibiz-panel-app-title-font-size:var(--ibiz-font-size-header-3);--ibiz-panel-app-title-font-weight:var(--ibiz-font-weight-bold);--ibiz-panel-app-title-padding:0 var(--ibiz-spacing-loose);--ibiz-panel-app-title-collapse-padding:0 var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:center;height:100%;padding:var(--ibiz-panel-app-title-padding);cursor:pointer}.ibiz-panel-app-title__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ibiz-panel-app-title-font-size);font-weight:700;color:var(--ibiz-panel-app-title-color)}.ibiz-panel-app-title__logo{display:flex;align-items:center;justify-content:center;height:100%;padding:0 var(--ibiz-spacing-tight);font-size:40px}.ibiz-panel-app-title__logo img{display:inline-block;width:20px;height:20px}.ibiz-panel-app-title__logo svg{fill:var(--ibiz-panel-app-title-color)}.ibiz-panel-app-title.is-only-img .ibiz-panel-app-title__logo{padding:0}.ibiz-panel-app-title.is-collapse{max-width:100%;padding:var(--ibiz-panel-app-title-collapse-padding)}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__collapse-title{width:100%}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__caption2{overflow:hidden;font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-panel-app-title-font-weight);text-align:center;white-space:nowrap}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__subCaption2{overflow:hidden;font-size:var(--ibiz-font-size-header-5);text-align:center;white-space:nowrap}
1
+ .ibiz-panel-app-title{--ibiz-panel-app-title-color:var(--ibiz-color-text-0);--ibiz-panel-app-title-font-size:var(--ibiz-font-size-header-3);--ibiz-panel-app-title-font-weight:var(--ibiz-font-weight-bold);--ibiz-panel-app-title-padding:0 var(--ibiz-spacing-loose);--ibiz-panel-app-title-collapse-padding:0 var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:center;height:100%;padding:var(--ibiz-panel-app-title-padding);cursor:pointer}.ibiz-panel-app-title__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ibiz-panel-app-title-font-size);font-weight:700;color:var(--ibiz-panel-app-title-color)}.ibiz-panel-app-title__logo{display:flex;align-items:center;justify-content:center;height:100%;padding:0 var(--ibiz-spacing-tight);font-size:40px}.ibiz-panel-app-title__logo img{display:inline-block;width:auto;height:100%}.ibiz-panel-app-title__logo svg{fill:var(--ibiz-panel-app-title-color)}.ibiz-panel-app-title.is-only-img .ibiz-panel-app-title__logo{padding:0}.ibiz-panel-app-title.is-collapse{max-width:100%;padding:var(--ibiz-panel-app-title-collapse-padding)}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__collapse-title{width:100%}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__collpase-icon img{width:100%;height:100%}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__caption2{overflow:hidden;font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-panel-app-title-font-weight);text-align:center;white-space:nowrap}.ibiz-panel-app-title.is-collapse .ibiz-panel-app-title__subCaption2{overflow:hidden;font-size:var(--ibiz-font-size-header-5);text-align:center;white-space:nowrap}
@@ -64,7 +64,6 @@ const PanelAppTitle = /* @__PURE__ */ defineComponent({
64
64
  render() {
65
65
  const {
66
66
  icon,
67
- icon2,
68
67
  isSvg,
69
68
  caption,
70
69
  caption2,
@@ -75,28 +74,34 @@ const PanelAppTitle = /* @__PURE__ */ defineComponent({
75
74
  const captionNode = createVNode("span", {
76
75
  "class": this.ns.e("title")
77
76
  }, [caption]);
78
- if (icon || icon2) {
79
- if (isSvg) {
80
- iconVNode = createVNode("ion-icon", {
81
- "class": this.ns.e("logo"),
82
- "icon": this.isCollapse ? icon2 : icon
83
- }, null);
84
- } else {
85
- iconVNode = createVNode("span", {
86
- "class": this.ns.e("logo")
87
- }, [createVNode("img", {
88
- "src": this.isCollapse ? icon2 : icon
89
- }, null)]);
90
- }
91
- } else if (this.menuAlign === "LEFT") {
77
+ if (this.menuAlign === "LEFT") {
92
78
  if (this.isCollapse) {
93
- iconVNode = createVNode("div", {
94
- "class": this.ns.e("collapse-title")
95
- }, [createVNode("div", {
96
- "class": this.ns.e("caption2")
97
- }, [caption2]), createVNode("div", {
98
- "class": this.ns.e("subCaption2")
99
- }, [subCaption2])]);
79
+ if (icon) {
80
+ let tempIcon = null;
81
+ if (isSvg) {
82
+ tempIcon = createVNode("ion-icon", {
83
+ "class": this.ns.e("logo"),
84
+ "icon": icon
85
+ }, null);
86
+ } else {
87
+ tempIcon = createVNode("span", {
88
+ "class": this.ns.e("logo")
89
+ }, [createVNode("img", {
90
+ "src": icon
91
+ }, null)]);
92
+ }
93
+ iconVNode = createVNode("div", {
94
+ "class": this.ns.e("collpase-icon")
95
+ }, [tempIcon]);
96
+ } else {
97
+ iconVNode = createVNode("div", {
98
+ "class": this.ns.e("collapse-title")
99
+ }, [createVNode("div", {
100
+ "class": this.ns.e("caption2")
101
+ }, [caption2]), createVNode("div", {
102
+ "class": this.ns.e("subCaption2")
103
+ }, [subCaption2])]);
104
+ }
100
105
  } else {
101
106
  iconVNode = createVNode("span", {
102
107
  "class": this.ns.e("logo")
@@ -128,6 +133,21 @@ const PanelAppTitle = /* @__PURE__ */ defineComponent({
128
133
  "y": "73"
129
134
  }, [subCaption])])])])]);
130
135
  }
136
+ } else if (this.menuAlign === "TOP") {
137
+ if (icon) {
138
+ if (isSvg) {
139
+ iconVNode = createVNode("ion-icon", {
140
+ "class": this.ns.e("logo"),
141
+ "icon": icon
142
+ }, null);
143
+ } else {
144
+ iconVNode = createVNode("span", {
145
+ "class": this.ns.e("logo")
146
+ }, [createVNode("img", {
147
+ "src": icon
148
+ }, null)]);
149
+ }
150
+ }
131
151
  }
132
152
  let content = null;
133
153
  if (this.menuAlign === "LEFT") {
@@ -11,7 +11,7 @@ export declare const IBizUserAction: import("@ibiz-template/vue3-util").TypeWith
11
11
  ns: import("@ibiz-template/core").Namespace;
12
12
  c: import("@ibiz-template/runtime").PanelItemController<import("@ibiz/model-core").IPanelItem>;
13
13
  sysImage: import("@ibiz/model-core").ISysImage | undefined;
14
- onClick: () => Promise<void>;
14
+ onClick: (event: Event) => Promise<void>;
15
15
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
16
16
  modelData: {
17
17
  type: import("vue").PropType<import("@ibiz/model-core").IPanelRawItem>;
@@ -15,7 +15,7 @@ export declare const UserAction: import("vue").DefineComponent<{
15
15
  ns: import("@ibiz-template/core").Namespace;
16
16
  c: PanelItemController<import("@ibiz/model-core").IPanelItem>;
17
17
  sysImage: import("@ibiz/model-core").ISysImage | undefined;
18
- onClick: () => Promise<void>;
18
+ onClick: (event: Event) => Promise<void>;
19
19
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
20
20
  modelData: {
21
21
  type: PropType<IPanelRawItem>;
@@ -37,7 +37,7 @@ const UserAction = /* @__PURE__ */ defineComponent({
37
37
  sysImage = imgConfig[predefinedType];
38
38
  }
39
39
  }
40
- const onClick = async () => {
40
+ const onClick = async (event) => {
41
41
  const id = props.modelData.id;
42
42
  const menuC = c.panel.view.getController("appmenu");
43
43
  if (menuC) {
@@ -54,7 +54,9 @@ const UserAction = /* @__PURE__ */ defineComponent({
54
54
  const tempContext = c.panel.context.clone();
55
55
  const tempParam = c.panel.params;
56
56
  tempContext.srfappid = targetMenu.appId || ibiz.env.appId;
57
- await ibiz.commands.execute(AppFuncCommand.TAG, targetMenu.appFuncId, tempContext, tempParam, {});
57
+ await ibiz.commands.execute(AppFuncCommand.TAG, targetMenu.appFuncId, tempContext, tempParam, {
58
+ event
59
+ });
58
60
  }
59
61
  }
60
62
  };
@@ -68,7 +70,7 @@ const UserAction = /* @__PURE__ */ defineComponent({
68
70
  render() {
69
71
  return createVNode("div", {
70
72
  "class": this.ns.b(),
71
- "onClick": this.onClick,
73
+ "onClick": (event) => this.onClick(event),
72
74
  "title": this.modelData.caption
73
75
  }, [createVNode(resolveComponent("i-biz-icon"), {
74
76
  "class": [this.ns.e("image")],
@@ -1,5 +1,5 @@
1
1
  import { Router } from 'vue-router';
2
- import { IAppUtil } from '@ibiz-template/runtime';
2
+ import { IAppUtil, IAuthResult } from '@ibiz-template/runtime';
3
3
  export declare class AppUtil implements IAppUtil {
4
4
  protected router: Router;
5
5
  /**
@@ -41,7 +41,7 @@ export declare class AppUtil implements IAppUtil {
41
41
  * @param {(IData | undefined)} [opts]
42
42
  * @return {*} {Promise<boolean>}
43
43
  */
44
- changePwd(oldPwd: string, newPwd: string, opts?: IData | undefined): Promise<boolean>;
44
+ changePwd(oldPwd: string, newPwd: string, opts?: IData | undefined): Promise<IAuthResult>;
45
45
  /**
46
46
  * 切换组织
47
47
  *
@@ -47,9 +47,10 @@ class AppUtil {
47
47
  window.history.replaceState({}, "", href);
48
48
  }
49
49
  await this.router.push(
50
- "/login?ru=".concat(encodeURIComponent(
51
- window.location.hash.replace("#/", "/")
52
- ))
50
+ // `/login?ru=${encodeURIComponent(
51
+ // window.location.hash.replace('#/', '/'),
52
+ // )}`,
53
+ "/login"
53
54
  );
54
55
  ibiz.util.showAppLoading();
55
56
  window.location.reload();
@@ -67,11 +68,11 @@ class AppUtil {
67
68
  * @return {*} {Promise<boolean>}
68
69
  */
69
70
  async changePwd(oldPwd, newPwd, opts) {
70
- let bol = this.validatePwd(oldPwd, newPwd, opts);
71
- if (bol) {
72
- bol = await ibiz.auth.changePwd(oldPwd, newPwd);
71
+ if (this.validatePwd(oldPwd, newPwd, opts)) {
72
+ const result = await ibiz.auth.changePwd(oldPwd, newPwd);
73
+ return result;
73
74
  }
74
- return bol;
75
+ return { ok: false, result: {} };
75
76
  }
76
77
  /**
77
78
  * 切换组织
@@ -122,14 +122,24 @@ const IBizActionToolbar = /* @__PURE__ */ vue.defineComponent({
122
122
  return null;
123
123
  });
124
124
  };
125
- if (this.mode === "buttons") {
125
+ const renderGroup = () => {
126
126
  let _slot;
127
- return vue.createVNode("div", {
128
- "class": [this.ns.b(), this.ns.m("buttons")],
129
- "onClick": (e) => e.stopPropagation()
130
- }, [renderActions(this.expandDetails), this.groupDetails.length > 0 && [vue.createVNode(vue.resolveComponent("el-button"), {
127
+ if (this.groupDetails.length === 0) {
128
+ return null;
129
+ }
130
+ const pvisible = this.groupDetails.findIndex((item) => {
131
+ return this.actionsState[item.id].visible === true;
132
+ }) !== -1;
133
+ if (!pvisible) {
134
+ return null;
135
+ }
136
+ const pdisabled = this.groupDetails.findIndex((item) => {
137
+ return this.actionsState[item.id].disabled === false;
138
+ }) === -1;
139
+ return [vue.createVNode(vue.resolveComponent("el-button"), {
131
140
  "size": "small",
132
141
  "text": true,
142
+ "disabled": pdisabled,
133
143
  "ref": "groupButtonRef",
134
144
  "class": [this.ns.e("item"), this.ns.is("expand", this.popoverVisible)]
135
145
  }, {
@@ -149,7 +159,16 @@ const IBizActionToolbar = /* @__PURE__ */ vue.defineComponent({
149
159
  "popper-style": "z-index:".concat(this.popoverIndex)
150
160
  }, _isSlot(_slot = renderActions(this.groupDetails, false)) ? _slot : {
151
161
  default: () => [_slot]
152
- })]]);
162
+ })];
163
+ };
164
+ if (!this.actionsState.visible) {
165
+ return;
166
+ }
167
+ if (this.mode === "buttons") {
168
+ return vue.createVNode("div", {
169
+ "class": [this.ns.b(), this.ns.m("buttons")],
170
+ "onClick": (e) => e.stopPropagation()
171
+ }, [renderActions(this.expandDetails), renderGroup()]);
153
172
  }
154
173
  return vue.createVNode(vue.resolveComponent("el-dropdown"), {
155
174
  "ref": "dropdownRef",
@@ -7,6 +7,7 @@ var qxUtil = require('qx-util');
7
7
  var runtime = require('@ibiz-template/runtime');
8
8
  var vueRouter = require('vue-router');
9
9
  require('./app-menu.css');
10
+ var customMenuDesign = require('./custom-menu-design/custom-menu-design.cjs');
10
11
 
11
12
  "use strict";
12
13
  function _isSlot(s) {
@@ -45,10 +46,47 @@ function renderByProvider(itemId, c) {
45
46
  }
46
47
  return provider.renderText(itemModel, c);
47
48
  }
48
- function renderMenuItem(isFirst, menu, collapse, ns, c, counterData) {
49
+ function findCustomMenu(_key, items) {
50
+ let temp;
51
+ if (items) {
52
+ items.some((item) => {
53
+ if (item.key === _key) {
54
+ temp = item;
55
+ return true;
56
+ }
57
+ if (item.children && item.children.length > 0) {
58
+ temp = findCustomMenu(_key, item.children);
59
+ if (!temp) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ return false;
65
+ });
66
+ }
67
+ return temp;
68
+ }
69
+ function getMenuCustomDisabled(_key, items) {
70
+ const target = findCustomMenu(_key, items);
71
+ if (target) {
72
+ return target.disabled;
73
+ }
74
+ return false;
75
+ }
76
+ function getMenuCustomVisible(_key, items) {
77
+ const target = findCustomMenu(_key, items);
78
+ if (target) {
79
+ return target.visible;
80
+ }
81
+ return true;
82
+ }
83
+ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData, saveConfigs) {
49
84
  if (!c.state.menuItemsState[menu.key].visible) {
50
85
  return;
51
86
  }
87
+ if (!getMenuCustomVisible(menu.key, saveConfigs)) {
88
+ return;
89
+ }
52
90
  if (menu.itemType === "MENUITEM") {
53
91
  let content;
54
92
  const provider = c.itemProviders[menu.key];
@@ -71,7 +109,7 @@ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData) {
71
109
  return !(isFirst && collapse) ? vue.createVNode(vue.resolveComponent("el-menu-item"), {
72
110
  "class": ns.e("item"),
73
111
  "index": menu.key,
74
- "disabled": menu.disabled,
112
+ "disabled": menu.disabled || getMenuCustomDisabled(menu.key, saveConfigs),
75
113
  "title": menu.tooltip
76
114
  }, _isSlot(content) ? content : {
77
115
  default: () => [content]
@@ -84,7 +122,7 @@ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData) {
84
122
  default: () => [vue.createVNode(vue.resolveComponent("el-menu-item"), {
85
123
  "class": ns.e("item"),
86
124
  "index": menu.key,
87
- "disabled": menu.disabled
125
+ "disabled": menu.disabled || getMenuCustomDisabled(menu.key, saveConfigs)
88
126
  }, _isSlot(content) ? content : {
89
127
  default: () => [content]
90
128
  })]
@@ -99,20 +137,24 @@ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData) {
99
137
  }, null);
100
138
  }
101
139
  }
102
- function renderSubmenu(isFirst, subMenu, collapse, ns, c, counterData) {
140
+ function renderSubmenu(isFirst, subMenu, collapse, ns, c, counterData, saveConfigs) {
103
141
  if (!c.state.menuItemsState[subMenu.key].visible) {
104
142
  return;
105
143
  }
144
+ if (!getMenuCustomVisible(subMenu.key, saveConfigs)) {
145
+ return;
146
+ }
106
147
  return vue.createVNode(vue.resolveComponent("el-sub-menu"), {
107
148
  "class": ns.b("submenu"),
108
149
  "index": subMenu.key,
150
+ "disabled": getMenuCustomDisabled(subMenu.key, saveConfigs),
109
151
  "popper-class": ns.b("popup-container")
110
152
  }, {
111
153
  default: () => subMenu.children.map((item) => {
112
154
  if (item.children) {
113
- return renderSubmenu(false, item, collapse, ns, c, counterData);
155
+ return renderSubmenu(false, item, collapse, ns, c, counterData, saveConfigs);
114
156
  }
115
- return renderMenuItem(false, item, collapse, ns, c, counterData);
157
+ return renderMenuItem(false, item, collapse, ns, c, counterData, saveConfigs);
116
158
  }),
117
159
  title: () => {
118
160
  const provider = c.itemProviders[subMenu.key];
@@ -165,6 +207,7 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
165
207
  const c = vue3Util.useControlController((...args) => new runtime.AppMenuController(...args));
166
208
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
167
209
  const menus = vue.ref(getMenus(c.model.appMenuItems));
210
+ const saveConfigs = vue.ref([]);
168
211
  const defaultActive = vue.ref("");
169
212
  const defaultOpens = vue.ref([]);
170
213
  const route = vueRouter.useRoute();
@@ -199,6 +242,9 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
199
242
  const fn = (data) => {
200
243
  counterData.value = data;
201
244
  };
245
+ c.evt.on("onCreated", async () => {
246
+ saveConfigs.value = c.saveConfigs;
247
+ });
202
248
  c.evt.on("onMounted", async () => {
203
249
  const allItems = c.getAllItems();
204
250
  const defaultActiveMenuItem = allItems.find((item) => {
@@ -251,6 +297,15 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
251
297
  }
252
298
  return false;
253
299
  });
300
+ const enableCustomized = vue.computed(() => {
301
+ return c.model.enableCustomized;
302
+ });
303
+ const configSaves = (saveConfig) => {
304
+ saveConfigs.value = saveConfig;
305
+ };
306
+ const configReset = () => {
307
+ saveConfigs.value = [];
308
+ };
254
309
  return {
255
310
  menus,
256
311
  c,
@@ -261,13 +316,16 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
261
316
  defaultOpens,
262
317
  menuMode,
263
318
  counterData,
264
- isShowCollapse
319
+ saveConfigs,
320
+ configSaves,
321
+ configReset,
322
+ isShowCollapse,
323
+ enableCustomized
265
324
  };
266
325
  },
267
326
  render() {
268
- let _slot;
269
327
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
270
- "class": [this.ns.b(), this.ns.m(this.menuMode), this.ns.is("collapse", this.collapse), this.ns.is("show-collapse", this.isShowCollapse)],
328
+ "class": [this.ns.b(), this.ns.m(this.menuMode), this.ns.is("collapse", this.collapse), this.ns.is("show-collapse", this.isShowCollapse), this.ns.is("show-menu-design", this.enableCustomized)],
271
329
  "controller": this.c
272
330
  }, {
273
331
  default: () => [this.c.state.isCreated && vue.createVNode(vue.resolveComponent("el-menu"), {
@@ -281,15 +339,23 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
281
339
  "theme": "light",
282
340
  "mode": this.menuMode,
283
341
  "ellipsis": this.menuMode === "horizontal"
284
- }, _isSlot(_slot = this.menus.map((item) => {
285
- var _a;
286
- if (((_a = item.children) == null ? void 0 : _a.length) > 0) {
287
- return renderSubmenu(true, item, this.collapse, this.ns, this.c, this.counterData);
342
+ }, {
343
+ default: () => {
344
+ return this.menus.map((item) => {
345
+ var _a;
346
+ if (((_a = item.children) == null ? void 0 : _a.length) > 0) {
347
+ return renderSubmenu(true, item, this.collapse, this.ns, this.c, this.counterData, this.saveConfigs);
348
+ }
349
+ return renderMenuItem(true, item, this.collapse, this.ns, this.c, this.counterData, this.saveConfigs);
350
+ });
288
351
  }
289
- return renderMenuItem(true, item, this.collapse, this.ns, this.c, this.counterData);
290
- })) ? _slot : {
291
- default: () => [_slot]
292
- }), this.isShowCollapse && vue.createVNode("div", {
352
+ }), this.enableCustomized && vue.createVNode(customMenuDesign.MenuDesign, {
353
+ "class": [this.ns.b("menu-set"), this.ns.is("collapse", this.collapse), this.ns.is("horizontal", this.c.view.model.mainMenuAlign === "TOP")],
354
+ "controller": this.c,
355
+ "menus": this.menus,
356
+ "onSaved": this.configSaves,
357
+ "onReset": this.configReset
358
+ }, null), this.isShowCollapse && vue.createVNode("div", {
293
359
  "class": [this.ns.b("collapse-icon"), this.ns.is("collapse", this.collapse)],
294
360
  "onClick": () => {
295
361
  this.c.view.call(runtime.ViewCallTag.TOGGLE_COLLAPSE);
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-appmenu{position:relative;width:100%;height:100%;--ibiz-control-appmenu-collapse-item-hover-color:var(--ibiz-color-primary);--ibiz-control-appmenu-collapse-item-padding:var(--ibiz-spacing-base);--ibiz-control-appmenu-icon-width:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-height:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-margin:0 10px 0 0;--ibiz-control-appmenu-collapse-height:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-selected-color:var(--ibiz-color-text-1);--ibiz-control-appmenu-item-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-hover-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-padding:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-item-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-height:40px;--ibiz-control-appmenu-item-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-horizontal-selected-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-horizontal-hover-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-horizontal-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-horizontal-height:32px;--ibiz-control-appmenu-item-horizontal-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-horizontal-padding:0 var(--ibiz-spacing-base);--ibiz-control-appmenu-item-horizontal-padding-right:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-horizontal-popup-height:40px}.ibiz-control-appmenu>.el-menu{height:100%;padding:0 var(--ibiz-spacing-tight);overflow-y:auto;border-right:0}.ibiz-control-appmenu .el-sub-menu .el-sub-menu__icon-arrow{right:14px;width:12px}.ibiz-control-appmenu .el-sub-menu .el-menu-item{padding:calc(var(--ibiz-control-appmenu-item-padding) * .875) calc(var(--ibiz-control-appmenu-item-padding) * 2.5)}.ibiz-control-appmenu .el-sub-menu .el-sub-menu__title>.ibiz-control-appmenu__counter{right:30px}.ibiz-control-appmenu .el-menu--vertical{width:100%}.ibiz-control-appmenu .el-menu--vertical .el-menu-item,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title{display:flex;align-items:center;justify-content:flex-start;--el-menu-base-level-padding:var(--ibiz-control-appmenu-item-padding);width:100%;height:var(--ibiz-control-appmenu-item-height);font-size:var(--ibiz-control-appmenu-item-font-size);color:var(--ibiz-control-appmenu-item-color);white-space:nowrap;border-radius:var(--ibiz-control-appmenu-item-border-radius)}.ibiz-control-appmenu .el-menu--vertical .el-menu-item.is-active,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-selected-color)!important;background-color:var(--ibiz-control-appmenu-item-selected-bg-color)}.ibiz-control-appmenu .el-menu--vertical .el-menu-item:hover,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-hover-color);background-color:var(--ibiz-control-appmenu-item-hover-bg-color)}.ibiz-control-appmenu .el-menu--vertical .el-divider--horizontal{margin:var(--ibiz-spacing-tight) 0;border-color:var(--ibiz-color-border)}.ibiz-control-appmenu .el-menu--horizontal{align-items:center;height:100%;background-color:transparent;border-bottom:none}.ibiz-control-appmenu .el-menu--horizontal>*+*{margin-left:16px}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title{height:var(--ibiz-control-appmenu-item-horizontal-height);padding:var(--ibiz-control-appmenu-item-horizontal-padding);font-size:var(--ibiz-control-appmenu-item-horizontal-font-size);line-height:var(--ibiz-control-appmenu-item-horizontal-height);color:var(--ibiz-control-appmenu-item-horizontal-color);white-space:nowrap;border:none;border-radius:var(--ibiz-control-appmenu-item-horizontal-border-radius)}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item.is-active,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-horizontal-color)!important;background-color:transparent}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item:hover,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-horizontal-hover-color);background-color:var(--ibiz-control-appmenu-item-horizontal-hover-bg-color)}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item .el-sub-menu__icon-arrow,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title .el-sub-menu__icon-arrow{position:absolute;top:50%;right:16px}.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title{padding-right:var(--ibiz-control-appmenu-item-horizontal-padding-right)}.ibiz-control-appmenu .el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:transparent}.ibiz-control-appmenu .el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--ibiz-control-appmenu-item-horizontal-hover-color);background-color:var(--ibiz-control-appmenu-item-horizontal-hover-bg-color)}.ibiz-control-appmenu .el-menu--horizontal::-webkit-scrollbar-thumb{background-color:var(--ibiz-color-white)}.ibiz-control-appmenu .el-menu--horizontal .el-divider--vertical{border-color:var(--ibiz-color-border)}.ibiz-control-appmenu__icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-appmenu-icon-width);height:var(--ibiz-control-appmenu-icon-height);margin:var(--ibiz-control-appmenu-icon-margin)}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu__icon{margin:0}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu__item{display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:var(--ibiz-spacing-tight)}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-tooltip{width:100%}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu{display:block}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu>.el-sub-menu__title{display:flex;align-items:center;justify-content:center;display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:var(--ibiz-spacing-tight);white-space:nowrap;cursor:pointer}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu .ibiz-control-appmenu-submenu__item{padding:0}.ibiz-control-appmenu.is-show-collapse>.el-menu{height:calc(100% - var(--ibiz-control-appmenu-collapse-height))}.ibiz-control-appmenu .ibiz-control-appmenu__counter{position:absolute;top:50%;right:5px;transform:translateY(-50%)}.ibiz-control-appmenu-popup-container.el-menu--popup-container{--ibiz-control-appmenu-collapse-item-hover-color:var(--ibiz-color-primary);--ibiz-control-appmenu-collapse-item-padding:var(--ibiz-spacing-base);--ibiz-control-appmenu-icon-width:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-height:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-margin:0 10px 0 0;--ibiz-control-appmenu-collapse-height:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-selected-color:var(--ibiz-color-text-1);--ibiz-control-appmenu-item-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-hover-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-padding:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-item-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-height:40px;--ibiz-control-appmenu-item-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-horizontal-selected-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-horizontal-hover-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-horizontal-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-horizontal-height:32px;--ibiz-control-appmenu-item-horizontal-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-horizontal-padding:0 var(--ibiz-spacing-base);--ibiz-control-appmenu-item-horizontal-padding-right:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-horizontal-popup-height:40px;border:none;box-shadow:var(--ibiz-shadow-elevated)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup{padding:var(--ibiz-spacing-extra-tight);background-color:var(--ibiz-color-primary)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title{display:flex;align-items:center;justify-content:flex-start;width:100%;height:var(--ibiz-control-appmenu-item-horizontal-popup-height);font-size:var(--ibiz-control-appmenu-item-font-size);color:var(--ibiz-control-appmenu-item-horizontal-color);white-space:nowrap;border-radius:var(--ibiz-control-appmenu-item-horizontal-border-radius)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item.is-active,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:transparent}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item:hover,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:var(--ibiz-control-appmenu-item-hover-bg-color)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item .el-icon,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title .el-icon{display:none}.ibiz-control-appmenu-popup-container .ibiz-control-appmenu__counter{position:absolute;top:50%;right:5px;height:20px;padding:0 6px;line-height:initial;color:#fff;background-color:#f56c6c;border-radius:10px;transform:translateY(-50%)}.ibiz-control-appmenu .ibiz-control-appmenu-collapse-icon{position:absolute;right:var(--ibiz-spacing-base-tight);bottom:var(--ibiz-spacing-tight);font-size:var(--ibiz-font-size-header-5);cursor:pointer}.ibiz-control-appmenu .ibiz-control-appmenu-collapse-icon.is-collapse{transform:rotate(180deg)}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-collapse-icon{right:0;width:100%;text-align:center}
1
+ @charset "UTF-8";.ibiz-control-appmenu{position:relative;width:100%;height:100%;--ibiz-control-appmenu-collapse-item-hover-color:var(--ibiz-color-primary);--ibiz-control-appmenu-collapse-item-padding:var(--ibiz-spacing-base);--ibiz-control-appmenu-icon-width:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-height:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-margin:0 10px 0 0;--ibiz-control-appmenu-collapse-height:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-selected-color:var(--ibiz-color-text-1);--ibiz-control-appmenu-item-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-hover-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-padding:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-item-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-height:40px;--ibiz-control-appmenu-item-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-horizontal-selected-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-horizontal-hover-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-horizontal-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-horizontal-height:32px;--ibiz-control-appmenu-item-horizontal-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-horizontal-padding:0 var(--ibiz-spacing-base);--ibiz-control-appmenu-item-horizontal-padding-right:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-horizontal-popup-height:40px}.ibiz-control-appmenu>.el-menu{height:100%;padding:0 var(--ibiz-spacing-tight);overflow-y:auto;border-right:0}.ibiz-control-appmenu .el-sub-menu .el-sub-menu__icon-arrow{right:14px;width:12px}.ibiz-control-appmenu .el-sub-menu .el-menu-item{padding:calc(var(--ibiz-control-appmenu-item-padding) * .875) calc(var(--ibiz-control-appmenu-item-padding) * 2.5)}.ibiz-control-appmenu .el-sub-menu .el-sub-menu__title>.ibiz-control-appmenu__counter{right:30px}.ibiz-control-appmenu .el-menu--vertical{width:100%}.ibiz-control-appmenu .el-menu--vertical .el-menu-item,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title{display:flex;align-items:center;justify-content:flex-start;--el-menu-base-level-padding:var(--ibiz-control-appmenu-item-padding);width:100%;height:var(--ibiz-control-appmenu-item-height);font-size:var(--ibiz-control-appmenu-item-font-size);color:var(--ibiz-control-appmenu-item-color);white-space:nowrap;border-radius:var(--ibiz-control-appmenu-item-border-radius)}.ibiz-control-appmenu .el-menu--vertical .el-menu-item.is-active,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-selected-color)!important;background-color:var(--ibiz-control-appmenu-item-selected-bg-color)}.ibiz-control-appmenu .el-menu--vertical .el-menu-item:hover,.ibiz-control-appmenu .el-menu--vertical .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-hover-color);background-color:var(--ibiz-control-appmenu-item-hover-bg-color)}.ibiz-control-appmenu .el-menu--vertical .el-divider--horizontal{margin:var(--ibiz-spacing-tight) 0;border-color:var(--ibiz-color-border)}.ibiz-control-appmenu .el-menu--horizontal{align-items:center;height:100%;background-color:transparent;border-bottom:none}.ibiz-control-appmenu .el-menu--horizontal>*+*{padding-right:16px}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title{height:var(--ibiz-control-appmenu-item-horizontal-height);padding:var(--ibiz-control-appmenu-item-horizontal-padding);font-size:var(--ibiz-control-appmenu-item-horizontal-font-size);line-height:var(--ibiz-control-appmenu-item-horizontal-height);color:var(--ibiz-control-appmenu-item-horizontal-color);white-space:nowrap;border:none;border-radius:var(--ibiz-control-appmenu-item-horizontal-border-radius)}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item.is-active,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-horizontal-color)!important;background-color:transparent}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item:hover,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-horizontal-hover-color);background-color:var(--ibiz-control-appmenu-item-horizontal-hover-bg-color)}.ibiz-control-appmenu .el-menu--horizontal .el-menu-item .el-sub-menu__icon-arrow,.ibiz-control-appmenu .el-menu--horizontal .el-sub-menu__title .el-sub-menu__icon-arrow{position:absolute;top:50%;right:16px}.ibiz-control-appmenu .el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:transparent}.ibiz-control-appmenu .el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--ibiz-control-appmenu-item-horizontal-hover-color);background-color:var(--ibiz-control-appmenu-item-horizontal-hover-bg-color)}.ibiz-control-appmenu .el-menu--horizontal::-webkit-scrollbar-thumb{background-color:var(--ibiz-color-white)}.ibiz-control-appmenu .el-menu--horizontal .el-divider--vertical{border-color:var(--ibiz-color-border)}.ibiz-control-appmenu__icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-appmenu-icon-width);height:var(--ibiz-control-appmenu-icon-height);margin:var(--ibiz-control-appmenu-icon-margin)}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu__icon{margin:0}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu__item{display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:var(--ibiz-spacing-tight)}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-tooltip{width:100%}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu{display:block}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu>.el-sub-menu__title{display:flex;align-items:center;justify-content:center;display:flex;align-items:center;justify-content:center;padding:0;margin-bottom:var(--ibiz-spacing-tight);white-space:nowrap;cursor:pointer}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-submenu .ibiz-control-appmenu-submenu__item{padding:0}.ibiz-control-appmenu.is-show-collapse>.el-menu{height:calc(100% - var(--ibiz-control-appmenu-collapse-height))}.ibiz-control-appmenu .ibiz-control-appmenu__counter{position:absolute;top:50%;right:5px;transform:translateY(-50%)}.ibiz-control-appmenu-popup-container.el-menu--popup-container{--ibiz-control-appmenu-collapse-item-hover-color:var(--ibiz-color-primary);--ibiz-control-appmenu-collapse-item-padding:var(--ibiz-spacing-base);--ibiz-control-appmenu-icon-width:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-height:var(--ibiz-width-icon-large);--ibiz-control-appmenu-icon-margin:0 10px 0 0;--ibiz-control-appmenu-collapse-height:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-selected-color:var(--ibiz-color-text-1);--ibiz-control-appmenu-item-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-hover-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-padding:var(--ibiz-spacing-base-tight);--ibiz-control-appmenu-item-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-height:40px;--ibiz-control-appmenu-item-color:var(--ibiz-color-text-0);--ibiz-control-appmenu-item-horizontal-selected-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-selected-bg-color:var(--ibiz-color-primary-active);--ibiz-control-appmenu-item-horizontal-hover-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-control-appmenu-item-horizontal-color:var(--ibiz-color-white);--ibiz-control-appmenu-item-horizontal-font-size:var(--ibiz-font-size-header-6);--ibiz-control-appmenu-item-horizontal-height:32px;--ibiz-control-appmenu-item-horizontal-border-radius:var(--ibiz-border-radius-small);--ibiz-control-appmenu-item-horizontal-padding:0 var(--ibiz-spacing-base);--ibiz-control-appmenu-item-horizontal-padding-right:var(--ibiz-spacing-super-loose);--ibiz-control-appmenu-item-horizontal-popup-height:40px;border:none;box-shadow:var(--ibiz-shadow-elevated)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup{padding:var(--ibiz-spacing-extra-tight);background-color:var(--ibiz-color-primary)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title{display:flex;align-items:center;justify-content:flex-start;width:100%;height:var(--ibiz-control-appmenu-item-horizontal-popup-height);font-size:var(--ibiz-control-appmenu-item-font-size);color:var(--ibiz-control-appmenu-item-horizontal-color);white-space:nowrap;border-radius:var(--ibiz-control-appmenu-item-horizontal-border-radius)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item.is-active,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title.is-active{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:transparent}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item:hover,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title:hover{color:var(--ibiz-control-appmenu-item-horizontal-selected-color);background-color:var(--ibiz-control-appmenu-item-hover-bg-color)}.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-menu-item .el-icon,.ibiz-control-appmenu-popup-container.el-menu--popup-container .el-menu--popup .el-sub-menu__title .el-icon{display:none}.ibiz-control-appmenu-popup-container .ibiz-control-appmenu__counter{position:absolute;top:50%;right:5px;height:20px;padding:0 6px;line-height:initial;color:#fff;background-color:#f56c6c;border-radius:10px;transform:translateY(-50%)}.ibiz-control-appmenu .ibiz-control-appmenu-collapse-icon{position:absolute;right:var(--ibiz-spacing-base-tight);bottom:var(--ibiz-spacing-tight);font-size:var(--ibiz-font-size-header-5);cursor:pointer}.ibiz-control-appmenu .ibiz-control-appmenu-collapse-icon.is-collapse{transform:rotate(180deg)}.ibiz-control-appmenu .ibiz-control-appmenu-menu-set{position:absolute;bottom:var(--ibiz-spacing-tight);left:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-header-5);cursor:pointer}.ibiz-control-appmenu .ibiz-control-appmenu-menu-set.is-horizontal{right:0;bottom:0;left:unset;display:flex;align-items:center;height:100%}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-collapse-icon{right:0;width:100%;text-align:center}.ibiz-control-appmenu.is-collapse .ibiz-control-appmenu-menu-set{position:absolute;right:var(--ibiz-spacing-base-tight);bottom:calc(var(--ibiz-spacing-tight) + 32px);font-size:var(--ibiz-font-size-header-5);text-align:center;cursor:pointer}.ibiz-control-appmenu.is-collapse.is-show-menu-design>.el-menu{height:calc(100% - var(--ibiz-control-appmenu-collapse-height) - var(--ibiz-control-appmenu-collapse-height))}