@ibiz-template/vue3-components 0.7.41-alpha.6 → 0.7.41-alpha.8

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 (148) hide show
  1. package/dist/{index-4CBJktLS.js → index-CsiyXR27.js} +1 -1
  2. package/dist/index-bg15JdWL.js +4 -0
  3. package/dist/{index-QL7Ukex9.js → index-tjsobxd3.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{wang-editor-kEzIt0zV.js → wang-editor-7B_U_6_C.js} +1 -1
  7. package/dist/{xlsx-util-_VPcoWqm.js → xlsx-util-J0IypI5_.js} +1 -1
  8. package/es/common/editor-empty-text/editor-empty-text.css +1 -0
  9. package/es/common/editor-empty-text/editor-empty-text.d.ts +25 -0
  10. package/es/common/editor-empty-text/editor-empty-text.mjs +31 -0
  11. package/es/common/index.mjs +2 -0
  12. package/es/control/data-view/data-view.css +1 -1
  13. package/es/control/data-view/data-view.mjs +4 -4
  14. package/es/control/drbar/drbar.controller.mjs +3 -1
  15. package/es/control/drtab/drtab-control.util.mjs +1 -1
  16. package/es/control/drtab/drtab.controller.mjs +3 -5
  17. package/es/control/drtab/drtab.d.ts +13 -0
  18. package/es/control/drtab/drtab.mjs +7 -1
  19. package/es/control/drtab/index.d.ts +7 -0
  20. package/es/control/kanban/kanban.css +1 -1
  21. package/es/control/kanban/kanban.d.ts +2 -2
  22. package/es/control/kanban/kanban.mjs +14 -9
  23. package/es/control/kanban/lane-kanban/lane-kanban.css +1 -0
  24. package/es/control/kanban/lane-kanban/lane-kanban.d.ts +27 -0
  25. package/es/control/kanban/lane-kanban/lane-kanban.mjs +409 -0
  26. package/es/control/toolbar/toolbar.css +1 -1
  27. package/es/control/toolbar/toolbar.mjs +232 -132
  28. package/es/control/tree/el-tree-util.d.ts +11 -0
  29. package/es/control/tree/el-tree-util.mjs +35 -1
  30. package/es/control/tree/index.d.ts +1 -0
  31. package/es/control/tree/tree.css +1 -1
  32. package/es/control/tree/tree.d.ts +2 -2
  33. package/es/control/tree/tree.mjs +61 -5
  34. package/es/control/wizard-panel/wizard-panel.css +1 -1
  35. package/es/control/wizard-panel/wizard-panel.mjs +24 -8
  36. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +4 -1
  37. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.mjs +4 -1
  38. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +4 -1
  39. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +11 -12
  40. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +17 -17
  41. package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +10 -9
  42. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.mjs +4 -1
  43. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +4 -1
  44. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +4 -1
  45. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +4 -1
  46. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs +4 -1
  47. package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.mjs +4 -1
  48. package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.mjs +4 -1
  49. package/es/editor/raw/ibiz-raw/ibiz-raw.d.ts +2 -2
  50. package/es/editor/raw/ibiz-raw/ibiz-raw.mjs +2 -0
  51. package/es/editor/span/span/span.d.ts +3 -3
  52. package/es/editor/span/span/span.mjs +7 -4
  53. package/es/editor/stepper/ibiz-stepper/ibiz-stepper.mjs +2 -1
  54. package/es/editor/switch/ibiz-switch/ibiz-switch.d.ts +1 -1
  55. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.d.ts +2 -2
  56. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +5 -2
  57. package/es/editor/text-box/input/input.d.ts +4 -3
  58. package/es/editor/text-box/input/input.mjs +6 -3
  59. package/es/locale/en/index.d.ts +6 -0
  60. package/es/locale/en/index.mjs +5 -0
  61. package/es/locale/zh-CN/index.d.ts +6 -0
  62. package/es/locale/zh-CN/index.mjs +5 -0
  63. package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
  64. package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.d.ts +1 -0
  65. package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.mjs +25 -4
  66. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
  67. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.d.ts +2030 -0
  68. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.mjs +231 -0
  69. package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.d.ts +166 -0
  70. package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.mjs +339 -0
  71. package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
  72. package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
  73. package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
  74. package/es/util/app-util/app-util.d.ts +6 -0
  75. package/es/util/app-util/app-util.mjs +8 -0
  76. package/es/util/fullscreen/fullscreen-util.mjs +1 -1
  77. package/es/view-engine/app-start-view.engine.d.ts +12 -0
  78. package/es/view-engine/app-start-view.engine.mjs +11 -0
  79. package/es/view-engine/app-welcome-view.engine.d.ts +12 -0
  80. package/es/view-engine/app-welcome-view.engine.mjs +11 -0
  81. package/es/view-engine/edit-view.engine.d.ts +11 -2
  82. package/es/view-engine/edit-view.engine.mjs +23 -8
  83. package/es/view-engine/edit-view4.engine.mjs +4 -0
  84. package/es/view-engine/index.mjs +10 -0
  85. package/es/view-engine/opt-view.engine.d.ts +11 -2
  86. package/es/view-engine/opt-view.engine.mjs +23 -8
  87. package/es/view-engine/tab-exp-view.engine.mjs +1 -0
  88. package/lib/common/editor-empty-text/editor-empty-text.cjs +33 -0
  89. package/lib/common/editor-empty-text/editor-empty-text.css +1 -0
  90. package/lib/common/index.cjs +2 -0
  91. package/lib/control/data-view/data-view.cjs +4 -4
  92. package/lib/control/data-view/data-view.css +1 -1
  93. package/lib/control/drbar/drbar.controller.cjs +3 -1
  94. package/lib/control/drtab/drtab-control.util.cjs +1 -1
  95. package/lib/control/drtab/drtab.cjs +7 -1
  96. package/lib/control/drtab/drtab.controller.cjs +3 -5
  97. package/lib/control/kanban/kanban.cjs +14 -9
  98. package/lib/control/kanban/kanban.css +1 -1
  99. package/lib/control/kanban/lane-kanban/lane-kanban.cjs +411 -0
  100. package/lib/control/kanban/lane-kanban/lane-kanban.css +1 -0
  101. package/lib/control/toolbar/toolbar.cjs +232 -132
  102. package/lib/control/toolbar/toolbar.css +1 -1
  103. package/lib/control/tree/el-tree-util.cjs +35 -0
  104. package/lib/control/tree/tree.cjs +59 -3
  105. package/lib/control/tree/tree.css +1 -1
  106. package/lib/control/wizard-panel/wizard-panel.cjs +23 -7
  107. package/lib/control/wizard-panel/wizard-panel.css +1 -1
  108. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +4 -1
  109. package/lib/editor/cascader/ibiz-cascader/ibiz-cascader.cjs +4 -1
  110. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +4 -1
  111. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +11 -12
  112. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +17 -17
  113. package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +9 -8
  114. package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs +4 -1
  115. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +4 -1
  116. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +4 -1
  117. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +4 -1
  118. package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs +4 -1
  119. package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.cjs +4 -1
  120. package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs +4 -1
  121. package/lib/editor/raw/ibiz-raw/ibiz-raw.cjs +2 -0
  122. package/lib/editor/span/span/span.cjs +7 -4
  123. package/lib/editor/stepper/ibiz-stepper/ibiz-stepper.cjs +2 -1
  124. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +5 -2
  125. package/lib/editor/text-box/input/input.cjs +6 -3
  126. package/lib/locale/en/index.cjs +5 -0
  127. package/lib/locale/zh-CN/index.cjs +5 -0
  128. package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
  129. package/lib/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.cjs +24 -3
  130. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.cjs +233 -0
  131. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
  132. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.cjs +344 -0
  133. package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
  134. package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
  135. package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
  136. package/lib/util/app-util/app-util.cjs +8 -0
  137. package/lib/util/fullscreen/fullscreen-util.cjs +1 -1
  138. package/lib/view-engine/app-start-view.engine.cjs +13 -0
  139. package/lib/view-engine/app-welcome-view.engine.cjs +13 -0
  140. package/lib/view-engine/edit-view.engine.cjs +23 -8
  141. package/lib/view-engine/edit-view4.engine.cjs +4 -0
  142. package/lib/view-engine/index.cjs +10 -0
  143. package/lib/view-engine/opt-view.engine.cjs +23 -8
  144. package/lib/view-engine/tab-exp-view.engine.cjs +1 -0
  145. package/package.json +8 -8
  146. package/dist/index-2Djp0sQl.js +0 -4
  147. /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
  148. /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
@@ -3,10 +3,14 @@
3
3
  var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
5
  require('./common-extend-menu.css');
6
+ var extendButtonMenu = require('../extend-button-menu/extend-button-menu.cjs');
6
7
 
7
8
  "use strict";
8
9
  const CommonExtendMenu = /* @__PURE__ */ vue.defineComponent({
9
10
  name: "IBizCommonExtendMenu",
11
+ components: {
12
+ ExtendButtonMenu: extendButtonMenu.ExtendButtonMenu
13
+ },
10
14
  props: {
11
15
  /**
12
16
  * @description 绘制模式,'BUTTON' | 'MENU': 按钮态(仅识别一层) | 常规菜单态
@@ -63,16 +67,33 @@ const CommonExtendMenu = /* @__PURE__ */ vue.defineComponent({
63
67
  */
64
68
  menuItemClick: (item, event) => true
65
69
  },
66
- setup(props) {
70
+ setup(props, {
71
+ emit
72
+ }) {
67
73
  const ns = vue3Util.useNamespace("common-extend-menu");
74
+ const handleMenuItemClick = (menuItem, event) => {
75
+ if (!menuItem || (menuItem == null ? void 0 : menuItem.itemType) === "RAWITEM") {
76
+ return;
77
+ }
78
+ emit("menuItemClick", menuItem, event);
79
+ };
68
80
  return {
69
- ns
81
+ ns,
82
+ handleMenuItemClick
70
83
  };
71
84
  },
72
85
  render() {
73
86
  return vue.createVNode("div", {
74
87
  "class": this.ns.b()
75
- }, [this.position, vue.createTextVNode("\u901A\u7528\u83DC\u5355")]);
88
+ }, [vue.createVNode(extendButtonMenu.ExtendButtonMenu, {
89
+ "items": this.items,
90
+ "menuItemsState": this.menuItemsState,
91
+ "providers": this.providers,
92
+ "position": this.position,
93
+ "layoutMode": this.layoutMode,
94
+ "layout": this.layout,
95
+ "onMenuItemClick": this.handleMenuItemClick
96
+ }, null)]);
76
97
  }
77
98
  });
78
99
 
@@ -0,0 +1,233 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var core = require('@ibiz-template/core');
6
+ var extendMenuBase_util = require('../extend-menu-base.util.cjs');
7
+ require('./extend-button-menu.css');
8
+
9
+ "use strict";
10
+ const rightArrow = () => vue.createVNode("svg", {
11
+ "xmlns": "http://www.w3.org/2000/svg",
12
+ "viewBox": "0 0 1024 1024",
13
+ "width": "1em",
14
+ "height": "1em",
15
+ "fill": "currentColor"
16
+ }, [vue.createVNode("path", {
17
+ "fill": "currentColor",
18
+ "d": "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
19
+ }, null)]);
20
+ function renderMenuItem(params) {
21
+ var _a, _b, _c;
22
+ const {
23
+ ns,
24
+ menu,
25
+ menuAlign,
26
+ menuItemsState
27
+ } = params;
28
+ if (!menu.id || !((_a = menuItemsState[menu.id]) == null ? void 0 : _a.visible))
29
+ return;
30
+ if (menu.itemType === "MENUITEM") {
31
+ return vue.createVNode(vue.resolveComponent("el-button"), {
32
+ "class": [ns.e("menuitem"), "".concat(((_b = menu.sysCss) == null ? void 0 : _b.cssName) || "")],
33
+ "index": menu.id
34
+ }, {
35
+ default: () => [menu.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
36
+ "class": ns.e("icon"),
37
+ "icon": menu.sysImage
38
+ }, null), menu.caption && vue.createVNode("span", {
39
+ "class": ns.e("caption"),
40
+ "title": core.showTitle(menu.tooltip)
41
+ }, [menu.caption])]
42
+ });
43
+ }
44
+ if (menu.itemType === "SEPERATOR") {
45
+ const direction = menuAlign === "horizontal" ? "vertical" : "horizontal";
46
+ return vue.createVNode(vue.resolveComponent("el-divider"), {
47
+ "direction": direction,
48
+ "class": [ns.em("separator"), ns.em("separator", direction)],
49
+ "id": menu.id
50
+ }, null);
51
+ }
52
+ if (menu.itemType === "RAWITEM") {
53
+ return vue.createVNode(vue.resolveComponent("el-button"), {
54
+ "index": menu.id,
55
+ "title": core.showTitle(menu.tooltip),
56
+ "class": [ns.e("rawitem"), "".concat(((_c = menu.sysCss) == null ? void 0 : _c.cssName) || "")]
57
+ }, {
58
+ default: () => [vue.createVNode(vue.resolveComponent("iBizRawItem"), {
59
+ "rawItem": menu
60
+ }, null)]
61
+ });
62
+ }
63
+ }
64
+ function renderMenuContent(_params) {
65
+ const {
66
+ ns,
67
+ isLayout,
68
+ position,
69
+ menuAlign,
70
+ menus,
71
+ menuItemsState,
72
+ showCascaderArrow,
73
+ handleMenuItemClick,
74
+ handleMenuItemMouseEnter,
75
+ handleMenuItemMouseLeave
76
+ } = _params;
77
+ return vue.createVNode(vue.resolveComponent("el-row"), {
78
+ "class": [ns.e("content"), ns.is(menuAlign, !!menuAlign), ns.is(position == null ? void 0 : position.toLowerCase(), !!position)]
79
+ }, {
80
+ default: () => menus.map((menu) => {
81
+ var _a, _b;
82
+ const menuItem = renderMenuItem({
83
+ menu,
84
+ ns,
85
+ menuAlign,
86
+ menuItemsState
87
+ });
88
+ if (!menuItem)
89
+ return;
90
+ const style = {};
91
+ if (isLayout && ((_a = menu.layoutPos) == null ? void 0 : _a.layout) === "FLEX") {
92
+ const pos = menu.layoutPos;
93
+ Object.assign(style, {
94
+ flexGrow: pos.grow,
95
+ flexShrink: pos.shrink === 1 ? void 0 : pos.shrink,
96
+ flexBasis: pos.basis
97
+ });
98
+ }
99
+ const isShowArrow = !!(showCascaderArrow && menu.children);
100
+ return vue.createVNode("div", {
101
+ "class": [ns.em("content", "item"), ns.em("content", (_b = menu.itemType) == null ? void 0 : _b.toLowerCase()), ns.is("show-arrow", isShowArrow)],
102
+ "style": style
103
+ }, [vue.createVNode("div", {
104
+ "class": ns.em("content", "item-container"),
105
+ "onMouseenter": (_e) => handleMenuItemMouseEnter(menu, _e),
106
+ "onMouseleave": (_e) => handleMenuItemMouseLeave(menu, _e),
107
+ "onClick": (_e) => handleMenuItemClick(menu, _e)
108
+ }, [menuItem]), isShowArrow && vue.createVNode("span", {
109
+ "class": ns.em("content", "item-arrow")
110
+ }, [rightArrow()])]);
111
+ })
112
+ });
113
+ }
114
+ const ExtendButtonMenu = /* @__PURE__ */ vue.defineComponent({
115
+ name: "IBizExtendButtonMenu",
116
+ props: {
117
+ items: {
118
+ type: Object,
119
+ required: true
120
+ },
121
+ menuItemsState: {
122
+ type: Object,
123
+ required: true
124
+ },
125
+ providers: {
126
+ type: Object,
127
+ required: true
128
+ },
129
+ position: {
130
+ type: String,
131
+ required: true
132
+ },
133
+ layoutMode: {
134
+ type: String,
135
+ required: true
136
+ },
137
+ layout: {
138
+ type: Object
139
+ }
140
+ },
141
+ emits: {
142
+ menuItemClick: (item, event) => true
143
+ },
144
+ setup(props, {
145
+ emit
146
+ }) {
147
+ const ns = vue3Util.useNamespace("extend-menu-button");
148
+ const buttonMenuRef = vue.ref();
149
+ const menuAlign = vue.computed(() => ["TOP", "BOTTOM"].includes(props.position) ? "horizontal" : "vertical");
150
+ const isLayout = vue.computed(() => props.layoutMode !== "BORDER" && ["TOP", "BOTTOM"].includes(props.position));
151
+ const menus = vue.ref(extendMenuBase_util.getMenus(props.items));
152
+ const renderCascaderContent = (_menu) => {
153
+ return renderMenuContent({
154
+ ns,
155
+ menuAlign: "vertical",
156
+ position: props.position,
157
+ menus: _menu.children,
158
+ menuItemsState: props.menuItemsState,
159
+ handleMenuItemClick,
160
+ handleMenuItemMouseEnter,
161
+ handleMenuItemMouseLeave,
162
+ showCascaderArrow: true,
163
+ isLayout: false
164
+ });
165
+ };
166
+ const renderBorderContent = () => {
167
+ return renderMenuContent({
168
+ ns,
169
+ menuAlign: menuAlign.value,
170
+ position: props.position,
171
+ menus: menus.value,
172
+ menuItemsState: props.menuItemsState,
173
+ handleMenuItemClick,
174
+ handleMenuItemMouseEnter,
175
+ handleMenuItemMouseLeave,
176
+ showCascaderArrow: true,
177
+ isLayout: false
178
+ });
179
+ };
180
+ const {
181
+ getOverlayNum,
182
+ clearAllCascader,
183
+ handleMenuItemMouseEnter,
184
+ handleMenuItemMouseLeave
185
+ } = extendMenuBase_util.useCascaderPopover(props, ns, menuAlign, renderCascaderContent);
186
+ let closeBorderPopover;
187
+ if (props.layoutMode === "BORDER") {
188
+ const borderLayout = extendMenuBase_util.useBorderLayout(buttonMenuRef, ns, props.position, menuAlign, getOverlayNum, renderBorderContent);
189
+ closeBorderPopover = borderLayout.closeBorderPopover;
190
+ }
191
+ const handleMenuItemClick = async (_menu, _event) => {
192
+ if (_menu.children)
193
+ return;
194
+ clearAllCascader();
195
+ if (closeBorderPopover)
196
+ closeBorderPopover();
197
+ if (!_menu.appFuncId) {
198
+ ibiz.log.warn(ibiz.i18n.t("runtime.controller.control.menu.noConfigured"));
199
+ return;
200
+ }
201
+ const menuItem = extendMenuBase_util.findMenuItem(_menu.id, props.items);
202
+ emit("menuItemClick", menuItem, _event);
203
+ };
204
+ return {
205
+ ns,
206
+ menus,
207
+ menuAlign,
208
+ isLayout,
209
+ buttonMenuRef,
210
+ handleMenuItemClick,
211
+ handleMenuItemMouseEnter,
212
+ handleMenuItemMouseLeave
213
+ };
214
+ },
215
+ render() {
216
+ return vue.createVNode("div", {
217
+ "ref": "buttonMenuRef",
218
+ "class": [this.ns.b(), this.ns.is(this.layoutMode.toLowerCase(), !!this.layoutMode), this.ns.is(this.position.toLowerCase(), !!this.position), this.ns.is(this.menuAlign, !!this.menuAlign)]
219
+ }, [this.layoutMode !== "BORDER" && renderMenuContent({
220
+ ns: this.ns,
221
+ menuAlign: this.menuAlign,
222
+ isLayout: this.isLayout,
223
+ position: this.position,
224
+ menus: this.menus,
225
+ menuItemsState: this.menuItemsState,
226
+ handleMenuItemClick: this.handleMenuItemClick,
227
+ handleMenuItemMouseEnter: this.handleMenuItemMouseEnter,
228
+ handleMenuItemMouseLeave: this.handleMenuItemMouseLeave
229
+ })]);
230
+ }
231
+ });
232
+
233
+ exports.ExtendButtonMenu = ExtendButtonMenu;
@@ -0,0 +1 @@
1
+ .ibiz-extend-menu-button{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;width:100%;height:100%;padding:var(--ibiz-extend-menu-button-padding)}.ibiz-extend-menu-button__menuitem{width:100%;height:100%;font-size:var(--ibiz-extend-menu-button-font-size)}.ibiz-extend-menu-button__rawitem{width:100%;height:100%}.ibiz-extend-menu-button__rawitem .ibiz-rawitem{min-width:var(--ibiz-extend-menu-button-rawitem-min-width);font-size:initial;color:var(--ibiz-color-primary-text)}.ibiz-extend-menu-button__separator--horizontal{margin:0}.ibiz-extend-menu-button__separator--vertical{margin:0}.ibiz-extend-menu-button__icon{display:flex;align-items:center;width:var(--ibiz-extend-menu-button-icon-width);height:var(--ibiz-extend-menu-button-icon-height)}.ibiz-extend-menu-button__icon+.ibiz-extend-menu-button__caption{margin:var(--ibiz-extend-menu-button-text-margin)}.ibiz-extend-menu-button__content{display:flex;flex-wrap:nowrap;height:100%;padding:var(--ibiz-extend-menu-button-content-padding);overflow:auto}.ibiz-extend-menu-button__content--item{display:flex;align-items:center}.ibiz-extend-menu-button__content--item.is-show-arrow{position:relative}.ibiz-extend-menu-button__content--item.is-show-arrow .ibiz-extend-menu-button__menuitem::after{display:block;width:1em;height:1em;margin-left:auto;content:""}.ibiz-extend-menu-button__content--item.is-rotate-arrow svg{transform:rotate(180deg)}.ibiz-extend-menu-button__content--item-container{display:flex;align-items:center;height:100%}.ibiz-extend-menu-button__content--menuitem{height:var(--ibiz-extend-menu-button-item-height)}.ibiz-extend-menu-button__content--rawitem{height:var(--ibiz-extend-menu-button-item-height)}.ibiz-extend-menu-button__content--item-arrow{position:absolute;top:50%;right:15px;display:flex;align-items:center;justify-content:center;color:var(--ibiz-color-primary-text);transform:translateY(-50%)}.ibiz-extend-menu-button__content--item-arrow svg{transition:transform .3s ease}.ibiz-extend-menu-button__content.is-horizontal{align-items:center}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item{margin:var(--ibiz-extend-menu-button-item-horizontal-margin)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item:first-child{margin-left:0}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item-container:not(:has(.el-divider)){min-width:var(--ibiz-extend-menu-button-item-horizontal-min-width)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--seperator{width:auto;margin:var(--ibiz-extend-menu-button-item-horizontal-separator-margin)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--seperator+.ibiz-extend-menu-button__content--item{margin-left:0}.ibiz-extend-menu-button__content.is-vertical{flex-direction:column}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--item{margin:var(--ibiz-extend-menu-button-item-vertical-margin)}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--item:first-child{margin-top:0}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--seperator{margin:var(--ibiz-extend-menu-button-item-vertical-separator-margin)}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--seperator+.ibiz-extend-menu-button__content--item{margin-top:0}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__menuitem{justify-content:flex-start}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__rawitem{justify-content:flex-start}.ibiz-extend-menu-button__content .el-button{--ibiz-color-primary-hover:var(--ibiz-extend-menu-button-active-bg-color);--ibiz-color-primary-hover-text:var(--ibiz-extend-menu-button-active-color);--ibiz-color-primary-active:var(--ibiz-extend-menu-button-hover-bg-color);--ibiz-color-primary-active-text:var(--ibiz-extend-menu-button-hover-color)}.ibiz-extend-menu-button__content .el-button:focus{background-color:var(--ibiz-color-primary-active)}.ibiz-extend-menu-button__content .el-button:hover{background-color:var(--ibiz-color-primary-hover)}.ibiz-extend-menu-button.is-vertical{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-tight) 0}.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content,.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-cascader-popover{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;--ibiz-extend-menu-button-popover-padding:var(--ibiz-spacing-super-tight) var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-popover-min-width:200px;--ibiz-extend-menu-button-popover-z-index:3;--ibiz-extend-menu-button-popover-background:var(--ibiz-color-primary);--ibiz-extend-menu-button-content-padding:0;--ibiz-extend-menu-button-item-vertical-margin:0;z-index:var(--ibiz-extend-menu-button-popover-z-index);width:auto;padding:var(--ibiz-extend-menu-button-popover-padding);background-color:var(--ibiz-extend-menu-button-popover-background);box-shadow:var(--ibiz-shadow-elevated)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content{min-width:var(--ibiz-extend-menu-button-popover-min-width)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__separator--horizontal{border-color:var(--ibiz-color-primary-hover)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content,.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-border-popover{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;--ibiz-extend-menu-button-popover-padding:var(--ibiz-spacing-super-tight) var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-popover-min-width:200px;--ibiz-extend-menu-button-popover-z-index:3;--ibiz-extend-menu-button-popover-background:var(--ibiz-color-primary);--ibiz-extend-menu-button-content-padding:0;--ibiz-extend-menu-button-item-vertical-margin:0;z-index:var(--ibiz-extend-menu-button-popover-z-index);width:auto;padding:var(--ibiz-extend-menu-button-popover-padding);background-color:var(--ibiz-extend-menu-button-popover-background);box-shadow:var(--ibiz-shadow-elevated)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content{min-width:var(--ibiz-extend-menu-button-popover-min-width)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__separator--horizontal{border-color:var(--ibiz-color-primary-hover)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content,.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item-arrow{transform:translateY(-50%) rotate(90deg)}.ibiz-extend-menu-button-placehold{--ibiz-extend-menu-button-placehold-z-index:3;position:fixed;z-index:var(--ibiz-extend-menu-button-placehold-z-index);display:flex;align-items:center;justify-content:center;cursor:pointer}.ibiz-extend-menu-button-placehold__line{position:absolute}.ibiz-extend-menu-button-placehold__arrow{color:var(--ibiz-color-text-2)}.ibiz-extend-menu-button-placehold.is-left .ibiz-extend-menu-button-placehold__line{top:0;left:0;width:1px;height:100%}.ibiz-extend-menu-button-placehold.is-right .ibiz-extend-menu-button-placehold__line{top:0;right:0;width:1px;height:100%}.ibiz-extend-menu-button-placehold.is-right svg{transform:rotate(180deg)}.ibiz-extend-menu-button-placehold.is-top .ibiz-extend-menu-button-placehold__line{top:0;left:0;width:100%;height:1px}.ibiz-extend-menu-button-placehold.is-top svg{transform:rotate(90deg)}.ibiz-extend-menu-button-placehold.is-bottom .ibiz-extend-menu-button-placehold__line{bottom:0;left:0;width:100%;height:1px}.ibiz-extend-menu-button-placehold.is-bottom svg{transform:rotate(-90deg)}
@@ -0,0 +1,344 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+
5
+ "use strict";
6
+ function useCascaderPopover(props, ns, menuAlign, renderCascaderContent) {
7
+ let hoverCount = 0;
8
+ let closeTimer = null;
9
+ const overlayInstances = /* @__PURE__ */ new Map();
10
+ const activeMenuIdStack = vue.ref([]);
11
+ const rotatedArrowElements = /* @__PURE__ */ new Map();
12
+ const getOverlayNum = () => {
13
+ return overlayInstances.size;
14
+ };
15
+ const getPopoverPlacement = (level) => {
16
+ switch (props.position) {
17
+ case "TOP":
18
+ return level > 0 ? "right-start" : "bottom-start";
19
+ case "BOTTOM":
20
+ return level > 0 ? "right-end" : "top-start";
21
+ case "RIGHT":
22
+ return "left-start";
23
+ case "LEFT":
24
+ return "right-start";
25
+ default:
26
+ return void 0;
27
+ }
28
+ };
29
+ const clearCloseTimer = () => {
30
+ if (closeTimer) {
31
+ clearTimeout(closeTimer);
32
+ closeTimer = null;
33
+ }
34
+ };
35
+ const resetArrowRotation = (ns2, key) => {
36
+ const arrow = rotatedArrowElements.get(key);
37
+ if (!arrow)
38
+ return;
39
+ arrow.classList.remove(ns2.is("rotate-arrow", true));
40
+ rotatedArrowElements.delete(key);
41
+ };
42
+ const rotateArrowIcon = (el, ns2, key) => {
43
+ if (el) {
44
+ el.classList.add(ns2.is("rotate-arrow", true));
45
+ rotatedArrowElements.set(key, el);
46
+ }
47
+ };
48
+ const closePopoverAtLevel = (key) => {
49
+ const overlay = overlayInstances.get(key);
50
+ if (overlay) {
51
+ overlay.dismiss();
52
+ overlayInstances.delete(key);
53
+ resetArrowRotation(ns, key);
54
+ }
55
+ };
56
+ const closeSubsequentPopovers = (currentLevel) => {
57
+ let level = currentLevel;
58
+ while (overlayInstances.get(level + 1)) {
59
+ level++;
60
+ }
61
+ for (let i = level; i >= currentLevel; i--) {
62
+ closePopoverAtLevel(i);
63
+ }
64
+ };
65
+ const closeAllPopovers = () => {
66
+ for (const key of overlayInstances.keys()) {
67
+ closePopoverAtLevel(key);
68
+ }
69
+ overlayInstances.clear();
70
+ activeMenuIdStack.value = [];
71
+ hoverCount = 0;
72
+ };
73
+ const scheduleDelayedClose = () => {
74
+ clearCloseTimer();
75
+ closeTimer = setTimeout(() => {
76
+ if (hoverCount <= 0) {
77
+ closeAllPopovers();
78
+ }
79
+ }, 300);
80
+ };
81
+ const clearAllCascader = () => {
82
+ closeAllPopovers();
83
+ clearCloseTimer();
84
+ };
85
+ const handleMenuItemMouseEnter = (_menu, event) => {
86
+ if (activeMenuIdStack.value.includes(_menu.id))
87
+ return;
88
+ activeMenuIdStack.value.push(_menu.id);
89
+ closeSubsequentPopovers(_menu.level);
90
+ if (_menu.children) {
91
+ openCascaderPopover(_menu, event);
92
+ }
93
+ clearCloseTimer();
94
+ };
95
+ const handleMenuItemMouseLeave = (_menu) => {
96
+ const index = activeMenuIdStack.value.indexOf(_menu.id);
97
+ if (index !== -1) {
98
+ activeMenuIdStack.value.splice(index, 1);
99
+ }
100
+ scheduleDelayedClose();
101
+ };
102
+ const onPopoverMouseEnter = () => {
103
+ hoverCount++;
104
+ clearCloseTimer();
105
+ };
106
+ const onPopoverMouseLeave = (_menu, _event) => {
107
+ hoverCount = Math.max(0, hoverCount - 1);
108
+ scheduleDelayedClose();
109
+ };
110
+ const openCascaderPopover = (menu, evt, opts) => {
111
+ var _a;
112
+ const overlay = ibiz.overlay.createPopover(
113
+ () => vue.h(renderCascaderContent(menu), {
114
+ onMouseenter: onPopoverMouseEnter,
115
+ onMouseleave: onPopoverMouseLeave
116
+ }),
117
+ void 0,
118
+ {
119
+ width: "auto",
120
+ height: "auto",
121
+ noArrow: true,
122
+ placement: getPopoverPlacement(menu.level),
123
+ offsetOpts: 10,
124
+ ...opts,
125
+ modalClass: "".concat(ns.b("cascader-popover"), " ").concat(ns.is(
126
+ menuAlign.value,
127
+ true
128
+ ), " ").concat((opts == null ? void 0 : opts.modalClass) || "")
129
+ }
130
+ );
131
+ overlayInstances.set(menu.level, overlay);
132
+ overlay == null ? void 0 : overlay.present(evt.currentTarget);
133
+ rotateArrowIcon(
134
+ (_a = evt.currentTarget) == null ? void 0 : _a.parentElement,
135
+ ns,
136
+ menu.level
137
+ );
138
+ };
139
+ return {
140
+ getOverlayNum,
141
+ openCascaderPopover,
142
+ clearAllCascader,
143
+ handleMenuItemMouseEnter,
144
+ handleMenuItemMouseLeave
145
+ };
146
+ }
147
+ function useBorderLayout(menuRef, ns, position, menuAlign, getOverlayNum, renderBorderContent) {
148
+ let overlay;
149
+ const getElementAbsolutePosition = (element) => {
150
+ let x = 0;
151
+ let y = 0;
152
+ let current = element;
153
+ while (current) {
154
+ x += current.offsetLeft;
155
+ y += current.offsetTop;
156
+ current = current.offsetParent;
157
+ }
158
+ return {
159
+ x,
160
+ y,
161
+ width: element.offsetWidth,
162
+ height: element.offsetHeight
163
+ };
164
+ };
165
+ const resolvePopoverPlacement = () => {
166
+ switch (position) {
167
+ case "TOP":
168
+ return "bottom";
169
+ case "BOTTOM":
170
+ return "top";
171
+ case "RIGHT":
172
+ return "left";
173
+ case "LEFT":
174
+ return "right";
175
+ default:
176
+ return void 0;
177
+ }
178
+ };
179
+ let popoverEl;
180
+ const closeBorderPopover = () => {
181
+ overlay == null ? void 0 : overlay.dismiss();
182
+ overlay = null;
183
+ document.removeEventListener("mousemove", handleMouseTrackOut);
184
+ popoverEl = void 0;
185
+ };
186
+ const handleMouseTrackOut = (e) => {
187
+ if (!popoverEl) {
188
+ popoverEl = document.querySelector(
189
+ ".".concat(ns.b("border-popover"))
190
+ );
191
+ }
192
+ const pos = getElementAbsolutePosition(popoverEl);
193
+ const isInside = e.pageX >= pos.x && e.pageX <= pos.x + pos.width && e.pageY >= pos.y && e.pageY <= pos.y + pos.height;
194
+ if (!isInside && getOverlayNum() <= 0) {
195
+ closeBorderPopover();
196
+ }
197
+ };
198
+ const handlePlaceholderMouseEnter = async (evt) => {
199
+ var _a;
200
+ if (overlay)
201
+ return;
202
+ overlay = ibiz.overlay.createPopover(
203
+ () => vue.h(renderBorderContent()),
204
+ void 0,
205
+ {
206
+ width: "auto",
207
+ height: "auto",
208
+ noArrow: true,
209
+ placement: resolvePopoverPlacement(),
210
+ offsetOpts: -1,
211
+ modalClass: "".concat(ns.b("border-popover"), " ").concat(ns.is(menuAlign.value, true))
212
+ }
213
+ );
214
+ const triggerEl = (_a = evt.currentTarget) == null ? void 0 : _a.querySelector(
215
+ ".".concat(ns.be("placehold", "line"))
216
+ );
217
+ await (overlay == null ? void 0 : overlay.present(triggerEl));
218
+ setTimeout(() => {
219
+ document.addEventListener("mousemove", handleMouseTrackOut);
220
+ }, 200);
221
+ };
222
+ let placeholderEl = null;
223
+ let resizeObserver = null;
224
+ let frameLoopId = null;
225
+ const minWidth = 20;
226
+ const minHeight = 20;
227
+ const computeTop = (top, height) => {
228
+ return position === "BOTTOM" ? top + height - minHeight : top;
229
+ };
230
+ const computeLeft = (left, width) => {
231
+ return position === "RIGHT" ? left + width - minWidth : left;
232
+ };
233
+ const computeWidth = (width) => {
234
+ return ["RIGHT", "LEFT"].includes(position) ? minWidth : width;
235
+ };
236
+ const computeHeight = (height) => {
237
+ return ["TOP", "BOTTOM"].includes(position) ? minHeight : height;
238
+ };
239
+ function createFixedPlaceholder(el) {
240
+ const container = document.createElement("div");
241
+ container.classList.add(ns.b("placehold"));
242
+ container.classList.add(ns.is(position.toLowerCase(), !!position));
243
+ const line = document.createElement("div");
244
+ line.classList.add(ns.be("placehold", "line"));
245
+ const arrow = document.createElement("div");
246
+ arrow.classList.add(ns.be("placehold", "arrow"));
247
+ container.appendChild(line);
248
+ container.appendChild(arrow);
249
+ document.body.appendChild(container);
250
+ placeholderEl = container;
251
+ placeholderEl.addEventListener("mouseenter", handlePlaceholderMouseEnter);
252
+ arrow.innerHTML = '\n <svg xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 1024 1024"\n width="1em"\n height="1em"\n fill="currentColor">\n <path fill="currentColor"\n d="M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z">\n </path>\n </svg>\n ';
253
+ updatePlaceholderPosition(el);
254
+ }
255
+ function updatePlaceholderPosition(el) {
256
+ if (!placeholderEl)
257
+ return;
258
+ const rect = el.getBoundingClientRect();
259
+ placeholderEl.style.top = "".concat(computeTop(rect.top, rect.height), "px");
260
+ placeholderEl.style.left = "".concat(computeLeft(rect.left, rect.width), "px");
261
+ placeholderEl.style.width = "".concat(computeWidth(rect.width), "px");
262
+ placeholderEl.style.height = "".concat(computeHeight(rect.height), "px");
263
+ }
264
+ function startTracking() {
265
+ const el = menuRef.value;
266
+ if (!el)
267
+ return;
268
+ createFixedPlaceholder(el);
269
+ resizeObserver = new ResizeObserver(() => updatePlaceholderPosition(el));
270
+ resizeObserver.observe(el);
271
+ const updateLoop = () => {
272
+ updatePlaceholderPosition(el);
273
+ frameLoopId = requestAnimationFrame(updateLoop);
274
+ };
275
+ frameLoopId = requestAnimationFrame(updateLoop);
276
+ }
277
+ function stopTrackingAndDestroy() {
278
+ if (resizeObserver) {
279
+ const el = menuRef.value;
280
+ if (el)
281
+ resizeObserver.unobserve(el);
282
+ resizeObserver.disconnect();
283
+ resizeObserver = null;
284
+ }
285
+ if (frameLoopId !== null) {
286
+ cancelAnimationFrame(frameLoopId);
287
+ frameLoopId = null;
288
+ }
289
+ if (placeholderEl && placeholderEl.parentNode) {
290
+ placeholderEl.removeEventListener(
291
+ "mouseenter",
292
+ handlePlaceholderMouseEnter
293
+ );
294
+ placeholderEl.parentNode.removeChild(placeholderEl);
295
+ placeholderEl = null;
296
+ }
297
+ }
298
+ vue.onMounted(startTracking);
299
+ vue.onUnmounted(stopTrackingAndDestroy);
300
+ return { closeBorderPopover };
301
+ }
302
+ function getMenus(items, _parentItem, level = 0) {
303
+ return items.map((item) => {
304
+ var _a;
305
+ const data = {
306
+ ...item,
307
+ value: item.id,
308
+ label: item.caption,
309
+ parentId: _parentItem == null ? void 0 : _parentItem.id,
310
+ level
311
+ };
312
+ if ((_a = item.appMenuItems) == null ? void 0 : _a.length) {
313
+ data.children = getMenus(item.appMenuItems, item, level + 1);
314
+ }
315
+ return data;
316
+ });
317
+ }
318
+ function findMenuItem(_id, items) {
319
+ let temp;
320
+ if (items) {
321
+ items.some((item) => {
322
+ if (!item.id)
323
+ return true;
324
+ if (item.id === _id) {
325
+ temp = item;
326
+ return true;
327
+ }
328
+ if (item.appMenuItems && item.appMenuItems.length > 0) {
329
+ temp = findMenuItem(_id, item.appMenuItems);
330
+ if (!temp) {
331
+ return false;
332
+ }
333
+ return true;
334
+ }
335
+ return false;
336
+ });
337
+ }
338
+ return temp;
339
+ }
340
+
341
+ exports.findMenuItem = findMenuItem;
342
+ exports.getMenus = getMenus;
343
+ exports.useBorderLayout = useBorderLayout;
344
+ exports.useCascaderPopover = useCascaderPopover;
@@ -1 +1 @@
1
- .ibiz-left-side-menu{width:100%;height:100%}
1
+ .ibiz-left-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-left-side-menu{width:100%;height:100%}
@@ -1 +1 @@
1
- .ibiz-right-side-menu{width:100%;height:100%}
1
+ .ibiz-right-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-right-side-menu{width:100%;height:100%}
@@ -1 +1 @@
1
- .ibiz-top-side-menu{width:100%;height:100%}
1
+ .ibiz-top-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-top-side-menu{width:100%;height:100%}
@@ -17,6 +17,14 @@ class AppUtil {
17
17
  constructor(router) {
18
18
  this.router = router;
19
19
  }
20
+ /**
21
+ * @description 路由是否初始化构建完成
22
+ * @returns {*} {Promise<void>}
23
+ * @memberof AppUtil
24
+ */
25
+ async onRouteIsReady() {
26
+ return this.router.isReady();
27
+ }
20
28
  /**
21
29
  * 登录
22
30
  *
@@ -2,7 +2,7 @@
2
2
 
3
3
  var vue = require('vue');
4
4
  var ElementPlus = require('element-plus');
5
- var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs');
5
+ var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs');
6
6
  var fullscreenToolbar = require('../../common/fullscreen-toolbar/fullscreen-toolbar.cjs');
7
7
 
8
8
  "use strict";