ele-admin-plus 1.1.9-beta.2 → 1.1.9-beta.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.
- package/es/ele-app/el.d.ts +9 -0
- package/es/ele-app/style/overwrite/message-box/index.scss +5 -0
- package/es/ele-basic-select/index.d.ts +2 -2
- package/es/ele-check-card/index.d.ts +1 -1
- package/es/ele-drawer/index.d.ts +1 -1
- package/es/ele-dropdown/index.d.ts +2 -2
- package/es/ele-dropdown/index.js +1 -0
- package/es/ele-icon-select/index.d.ts +3 -3
- package/es/ele-map-picker/index.d.ts +1 -1
- package/es/ele-menus/index.d.ts +10 -2
- package/es/ele-menus/index.js +17 -4
- package/es/ele-menus/props.d.ts +8 -2
- package/es/ele-menus/props.js +9 -3
- package/es/ele-menus/style/index.scss +12 -11
- package/es/ele-menus/types.d.ts +9 -9
- package/es/ele-menus/util.d.ts +21 -15
- package/es/ele-menus/util.js +92 -83
- package/es/ele-modal/index.d.ts +2 -2
- package/es/ele-modal/index.js +27 -4
- package/es/ele-modal/style/index.scss +58 -12
- package/es/ele-modal/types.d.ts +2 -10
- package/es/ele-modal/util.d.ts +3 -3
- package/es/ele-modal/util.js +22 -57
- package/es/ele-printer/util.js +3 -1
- package/es/ele-pro-layout/components/pro-header.d.ts +23 -11
- package/es/ele-pro-layout/components/pro-header.js +68 -15
- package/es/ele-pro-layout/components/pro-iframe.js +46 -23
- package/es/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
- package/es/ele-pro-layout/components/pro-sidebar.js +36 -14
- package/es/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
- package/es/ele-pro-layout/components/pro-sidebox.js +46 -14
- package/es/ele-pro-layout/components/tab-dropdown.js +5 -1
- package/es/ele-pro-layout/index.d.ts +40 -27
- package/es/ele-pro-layout/index.js +269 -52
- package/es/ele-pro-layout/props.d.ts +5 -0
- package/es/ele-pro-layout/props.js +5 -0
- package/es/ele-pro-layout/types.d.ts +29 -3
- package/es/ele-segmented/index.d.ts +1 -1
- package/es/ele-table-select/index.d.ts +5 -5
- package/es/ele-tree-select/index.d.ts +5 -5
- package/es/ele-upload-list/components/list-item.d.ts +5 -1
- package/es/ele-upload-list/components/list-item.js +7 -4
- package/es/ele-upload-list/index.d.ts +10 -6
- package/es/ele-upload-list/index.js +7 -5
- package/es/ele-upload-list/props.d.ts +6 -2
- package/es/ele-upload-list/props.js +5 -1
- package/es/ele-virtual-table/components/body-cell.d.ts +1 -1
- package/es/ele-virtual-table/index.d.ts +1 -1
- package/lib/ele-app/el.d.ts +9 -0
- package/lib/ele-app/style/overwrite/message-box/index.scss +5 -0
- package/lib/ele-basic-select/index.d.ts +2 -2
- package/lib/ele-check-card/index.d.ts +1 -1
- package/lib/ele-drawer/index.d.ts +1 -1
- package/lib/ele-dropdown/index.cjs +1 -0
- package/lib/ele-dropdown/index.d.ts +2 -2
- package/lib/ele-icon-select/index.d.ts +3 -3
- package/lib/ele-map-picker/index.d.ts +1 -1
- package/lib/ele-menus/index.cjs +17 -4
- package/lib/ele-menus/index.d.ts +10 -2
- package/lib/ele-menus/props.cjs +9 -3
- package/lib/ele-menus/props.d.ts +8 -2
- package/lib/ele-menus/style/index.scss +12 -11
- package/lib/ele-menus/types.d.ts +9 -9
- package/lib/ele-menus/util.cjs +92 -83
- package/lib/ele-menus/util.d.ts +21 -15
- package/lib/ele-modal/index.cjs +27 -4
- package/lib/ele-modal/index.d.ts +2 -2
- package/lib/ele-modal/style/index.scss +58 -12
- package/lib/ele-modal/types.d.ts +2 -10
- package/lib/ele-modal/util.cjs +22 -57
- package/lib/ele-modal/util.d.ts +3 -3
- package/lib/ele-printer/util.cjs +3 -1
- package/lib/ele-pro-layout/components/pro-header.cjs +67 -14
- package/lib/ele-pro-layout/components/pro-header.d.ts +23 -11
- package/lib/ele-pro-layout/components/pro-iframe.cjs +45 -22
- package/lib/ele-pro-layout/components/pro-sidebar.cjs +36 -14
- package/lib/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
- package/lib/ele-pro-layout/components/pro-sidebox.cjs +46 -14
- package/lib/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
- package/lib/ele-pro-layout/components/tab-dropdown.cjs +5 -1
- package/lib/ele-pro-layout/index.cjs +269 -52
- package/lib/ele-pro-layout/index.d.ts +40 -27
- package/lib/ele-pro-layout/props.cjs +5 -0
- package/lib/ele-pro-layout/props.d.ts +5 -0
- package/lib/ele-pro-layout/types.d.ts +29 -3
- package/lib/ele-segmented/index.d.ts +1 -1
- package/lib/ele-table-select/index.d.ts +5 -5
- package/lib/ele-tree-select/index.d.ts +5 -5
- package/lib/ele-upload-list/components/list-item.cjs +6 -3
- package/lib/ele-upload-list/components/list-item.d.ts +5 -1
- package/lib/ele-upload-list/index.cjs +7 -5
- package/lib/ele-upload-list/index.d.ts +10 -6
- package/lib/ele-upload-list/props.cjs +5 -1
- package/lib/ele-upload-list/props.d.ts +6 -2
- package/lib/ele-virtual-table/components/body-cell.d.ts +1 -1
- package/lib/ele-virtual-table/index.d.ts +1 -1
- package/package.json +1 -1
package/lib/ele-modal/util.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Resizable,
|
|
1
|
+
import type { Resizable, PositionObject, MoveOut } from './types';
|
|
2
2
|
import type { ModalProps } from './props';
|
|
3
3
|
export declare const wrapperClass = "ele-modal";
|
|
4
4
|
export declare const containerId = "ele-modal-container";
|
|
@@ -58,7 +58,7 @@ export declare function resetModalStyle(modalEl?: HTMLElement, width?: string |
|
|
|
58
58
|
* @param resizable 是否可以拉伸
|
|
59
59
|
* @param moveOut 是否可以拉出容器
|
|
60
60
|
*/
|
|
61
|
-
export declare function setModalPosition(modalEl?: HTMLElement, resizable?: Resizable, position?:
|
|
61
|
+
export declare function setModalPosition(modalEl?: HTMLElement, resizable?: Resizable, position?: PositionObject, moveOut?: MoveOut): void;
|
|
62
62
|
/**
|
|
63
63
|
* 设置弹窗初始位置
|
|
64
64
|
* @param modalEl 弹窗节点
|
|
@@ -67,4 +67,4 @@ export declare function setModalPosition(modalEl?: HTMLElement, resizable?: Resi
|
|
|
67
67
|
* @param moveOut 是否可以拉出容器
|
|
68
68
|
* @param force 是否强制更新
|
|
69
69
|
*/
|
|
70
|
-
export declare function setInitPosition(modalEl?: HTMLElement, resizable?: Resizable, position?:
|
|
70
|
+
export declare function setInitPosition(modalEl?: HTMLElement, resizable?: Resizable, position?: PositionObject, moveOut?: MoveOut, force?: boolean): void;
|
package/lib/ele-printer/util.cjs
CHANGED
|
@@ -136,10 +136,12 @@ function usePrinter(done) {
|
|
|
136
136
|
function printPdf(option) {
|
|
137
137
|
const pFrame = getPrintFrame();
|
|
138
138
|
pFrame.onload = () => {
|
|
139
|
-
|
|
139
|
+
const url = pFrame.getAttribute("src");
|
|
140
|
+
if (!!url) {
|
|
140
141
|
pFrame.focus();
|
|
141
142
|
pFrame.contentWindow && pFrame.contentWindow.print(option.options);
|
|
142
143
|
option.done && option.done();
|
|
144
|
+
URL.revokeObjectURL(url);
|
|
143
145
|
}
|
|
144
146
|
};
|
|
145
147
|
const doPrint2 = (buffer) => {
|
|
@@ -21,17 +21,17 @@ const _sfc_main = vue.defineComponent({
|
|
|
21
21
|
ellipsis: Boolean,
|
|
22
22
|
/** 菜单省略项的属性 */
|
|
23
23
|
ellipsisProps: Object,
|
|
24
|
-
/**
|
|
24
|
+
/** 父级菜单展开触发方式 */
|
|
25
25
|
menuTrigger: String,
|
|
26
|
-
/**
|
|
26
|
+
/** 子菜单项触发模式 */
|
|
27
27
|
itemTrigger: String,
|
|
28
28
|
/** 侧栏是否折叠 */
|
|
29
29
|
collapse: Boolean,
|
|
30
30
|
/** 当前是否有侧栏 */
|
|
31
31
|
sidebar: Boolean,
|
|
32
|
-
/**
|
|
32
|
+
/** 菜单标题插槽名称 */
|
|
33
33
|
titleSlot: String,
|
|
34
|
-
/**
|
|
34
|
+
/** 菜单图标插槽名称 */
|
|
35
35
|
iconSlot: String,
|
|
36
36
|
/** 面包屑导航数据 */
|
|
37
37
|
levels: {
|
|
@@ -51,12 +51,20 @@ const _sfc_main = vue.defineComponent({
|
|
|
51
51
|
logoClick: () => true,
|
|
52
52
|
open: (_index, _indexPath) => true,
|
|
53
53
|
close: (_index, _indexPath) => true,
|
|
54
|
-
itemClick: (_item) => true
|
|
54
|
+
itemClick: (_item, _e) => true,
|
|
55
|
+
itemMouseenter: (_item, _e) => true,
|
|
56
|
+
itemMouseleave: (_item, _e) => true,
|
|
57
|
+
mouseEnter: (_e) => true,
|
|
58
|
+
mouseLeave: (_e) => true
|
|
55
59
|
},
|
|
56
60
|
setup(props, { emit }) {
|
|
61
|
+
const state = { hover: false, timer: null };
|
|
57
62
|
const levelItems = vue.shallowRef([]);
|
|
58
63
|
const menuItems = vue.computed(() => {
|
|
59
|
-
return util.getMenuItems(
|
|
64
|
+
return util.getMenuItems(
|
|
65
|
+
props.menus,
|
|
66
|
+
props.itemTrigger !== "click" && props.itemTrigger !== "hover"
|
|
67
|
+
);
|
|
60
68
|
});
|
|
61
69
|
const isDark = vue.computed(() => props.headerStyle === "dark");
|
|
62
70
|
const isPrimary = vue.computed(() => props.headerStyle === "primary");
|
|
@@ -72,8 +80,36 @@ const _sfc_main = vue.defineComponent({
|
|
|
72
80
|
const onClose = (index, indexPath) => {
|
|
73
81
|
emit("close", index, indexPath);
|
|
74
82
|
};
|
|
75
|
-
const onItemClick = (item) => {
|
|
76
|
-
emit("itemClick", item);
|
|
83
|
+
const onItemClick = (item, e) => {
|
|
84
|
+
emit("itemClick", item, e);
|
|
85
|
+
};
|
|
86
|
+
const onItemMouseenter = (item, e) => {
|
|
87
|
+
emit("itemMouseenter", item, e);
|
|
88
|
+
onMouseenter(e);
|
|
89
|
+
};
|
|
90
|
+
const onItemMouseleave = (item, e) => {
|
|
91
|
+
emit("itemMouseleave", item, e);
|
|
92
|
+
onMouseleave(e);
|
|
93
|
+
};
|
|
94
|
+
const onMouseenter = (e) => {
|
|
95
|
+
if (state.timer != null) {
|
|
96
|
+
clearTimeout(state.timer);
|
|
97
|
+
state.timer = null;
|
|
98
|
+
}
|
|
99
|
+
if (!state.hover) {
|
|
100
|
+
state.hover = true;
|
|
101
|
+
emit("mouseEnter", e);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const onMouseleave = (e) => {
|
|
105
|
+
if (state.timer != null) {
|
|
106
|
+
clearTimeout(state.timer);
|
|
107
|
+
}
|
|
108
|
+
state.timer = setTimeout(() => {
|
|
109
|
+
state.timer = null;
|
|
110
|
+
state.hover = false;
|
|
111
|
+
emit("mouseLeave", e);
|
|
112
|
+
}, 300);
|
|
77
113
|
};
|
|
78
114
|
vue.watch(
|
|
79
115
|
[() => props.isHome, () => props.homePath, () => props.levels],
|
|
@@ -95,8 +131,17 @@ const _sfc_main = vue.defineComponent({
|
|
|
95
131
|
});
|
|
96
132
|
levelItems.value = data;
|
|
97
133
|
},
|
|
98
|
-
{
|
|
134
|
+
{
|
|
135
|
+
immediate: true,
|
|
136
|
+
deep: true
|
|
137
|
+
}
|
|
99
138
|
);
|
|
139
|
+
vue.onBeforeUnmount(() => {
|
|
140
|
+
if (state.timer != null) {
|
|
141
|
+
clearTimeout(state.timer);
|
|
142
|
+
state.timer = null;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
100
145
|
return {
|
|
101
146
|
levelItems,
|
|
102
147
|
menuItems,
|
|
@@ -106,7 +151,11 @@ const _sfc_main = vue.defineComponent({
|
|
|
106
151
|
onLogoClick,
|
|
107
152
|
onOpen,
|
|
108
153
|
onClose,
|
|
109
|
-
onItemClick
|
|
154
|
+
onItemClick,
|
|
155
|
+
onItemMouseenter,
|
|
156
|
+
onItemMouseleave,
|
|
157
|
+
onMouseenter,
|
|
158
|
+
onMouseleave
|
|
110
159
|
};
|
|
111
160
|
}
|
|
112
161
|
});
|
|
@@ -138,7 +187,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
138
187
|
"ele-admin-header",
|
|
139
188
|
{ "is-dark": _ctx.isDark },
|
|
140
189
|
{ "is-primary": _ctx.isPrimary }
|
|
141
|
-
])
|
|
190
|
+
]),
|
|
191
|
+
onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseenter && _ctx.onMouseenter(...args)),
|
|
192
|
+
onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.onMouseleave && _ctx.onMouseleave(...args))
|
|
142
193
|
}, [
|
|
143
194
|
_ctx.$slots.logo ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
144
195
|
key: 0,
|
|
@@ -181,7 +232,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
181
232
|
menuTrigger: _ctx.menuTrigger,
|
|
182
233
|
onOpen: _ctx.onOpen,
|
|
183
234
|
onClose: _ctx.onClose,
|
|
184
|
-
onItemClick: _ctx.onItemClick
|
|
235
|
+
onItemClick: _ctx.onItemClick,
|
|
236
|
+
onItemMouseenter: _ctx.onItemMouseenter,
|
|
237
|
+
onItemMouseleave: _ctx.onItemMouseleave
|
|
185
238
|
}, vue.createSlots({ _: 2 }, [
|
|
186
239
|
_ctx.iconSlot && !["logo", "left", "right", "center", "breadcrumb"].includes(
|
|
187
240
|
_ctx.iconSlot
|
|
@@ -201,12 +254,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
201
254
|
]),
|
|
202
255
|
key: "1"
|
|
203
256
|
} : void 0
|
|
204
|
-
]), 1032, ["items", "theme", "popupTheme", "ellipsis", "ellipsisProps", "defaultActive", "menuTrigger", "onOpen", "onClose", "onItemClick"])) : vue.createCommentVNode("", true)
|
|
257
|
+
]), 1032, ["items", "theme", "popupTheme", "ellipsis", "ellipsisProps", "defaultActive", "menuTrigger", "onOpen", "onClose", "onItemClick", "onItemMouseenter", "onItemMouseleave"])) : vue.createCommentVNode("", true)
|
|
205
258
|
]),
|
|
206
259
|
_ctx.$slots.right ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
|
207
260
|
vue.renderSlot(_ctx.$slots, "right", { sidebar: _ctx.sidebar })
|
|
208
261
|
])) : vue.createCommentVNode("", true)
|
|
209
|
-
],
|
|
262
|
+
], 34);
|
|
210
263
|
}
|
|
211
264
|
const proHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
212
265
|
module.exports = proHeader;
|
|
@@ -16,17 +16,17 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
16
16
|
ellipsis: BooleanConstructor;
|
|
17
17
|
/** 菜单省略项的属性 */
|
|
18
18
|
ellipsisProps: PropType<EllipsisProps>;
|
|
19
|
-
/**
|
|
19
|
+
/** 父级菜单展开触发方式 */
|
|
20
20
|
menuTrigger: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "hover" | "click", unknown> | undefined>;
|
|
21
|
-
/**
|
|
21
|
+
/** 子菜单项触发模式 */
|
|
22
22
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
23
23
|
/** 侧栏是否折叠 */
|
|
24
24
|
collapse: BooleanConstructor;
|
|
25
25
|
/** 当前是否有侧栏 */
|
|
26
26
|
sidebar: BooleanConstructor;
|
|
27
|
-
/**
|
|
27
|
+
/** 菜单标题插槽名称 */
|
|
28
28
|
titleSlot: StringConstructor;
|
|
29
|
-
/**
|
|
29
|
+
/** 菜单图标插槽名称 */
|
|
30
30
|
iconSlot: StringConstructor;
|
|
31
31
|
/** 面包屑导航数据 */
|
|
32
32
|
levels: {
|
|
@@ -50,12 +50,20 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
50
50
|
onLogoClick: () => void;
|
|
51
51
|
onOpen: (index: string, indexPath: string[]) => void;
|
|
52
52
|
onClose: (index: string, indexPath: string[]) => void;
|
|
53
|
-
onItemClick: (item: MenuItemProps) => void;
|
|
53
|
+
onItemClick: (item: MenuItemProps, e: MouseEvent) => void;
|
|
54
|
+
onItemMouseenter: (item: MenuItemProps, e: MouseEvent) => void;
|
|
55
|
+
onItemMouseleave: (item: MenuItemProps, e: MouseEvent) => void;
|
|
56
|
+
onMouseenter: (e: MouseEvent) => void;
|
|
57
|
+
onMouseleave: (e: MouseEvent) => void;
|
|
54
58
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
55
59
|
logoClick: () => true;
|
|
56
60
|
open: (_index: string, _indexPath: string[]) => true;
|
|
57
61
|
close: (_index: string, _indexPath: string[]) => true;
|
|
58
|
-
itemClick: (_item: MenuItemProps) => true;
|
|
62
|
+
itemClick: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
63
|
+
itemMouseenter: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
64
|
+
itemMouseleave: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
65
|
+
mouseEnter: (_e: MouseEvent) => true;
|
|
66
|
+
mouseLeave: (_e: MouseEvent) => true;
|
|
59
67
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
60
68
|
/** 菜单数据 */
|
|
61
69
|
menus: {
|
|
@@ -70,17 +78,17 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
70
78
|
ellipsis: BooleanConstructor;
|
|
71
79
|
/** 菜单省略项的属性 */
|
|
72
80
|
ellipsisProps: PropType<EllipsisProps>;
|
|
73
|
-
/**
|
|
81
|
+
/** 父级菜单展开触发方式 */
|
|
74
82
|
menuTrigger: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "hover" | "click", unknown> | undefined>;
|
|
75
|
-
/**
|
|
83
|
+
/** 子菜单项触发模式 */
|
|
76
84
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
77
85
|
/** 侧栏是否折叠 */
|
|
78
86
|
collapse: BooleanConstructor;
|
|
79
87
|
/** 当前是否有侧栏 */
|
|
80
88
|
sidebar: BooleanConstructor;
|
|
81
|
-
/**
|
|
89
|
+
/** 菜单标题插槽名称 */
|
|
82
90
|
titleSlot: StringConstructor;
|
|
83
|
-
/**
|
|
91
|
+
/** 菜单图标插槽名称 */
|
|
84
92
|
iconSlot: StringConstructor;
|
|
85
93
|
/** 面包屑导航数据 */
|
|
86
94
|
levels: {
|
|
@@ -98,8 +106,12 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
98
106
|
}>> & {
|
|
99
107
|
onOpen?: ((_index: string, _indexPath: string[]) => any) | undefined;
|
|
100
108
|
onClose?: ((_index: string, _indexPath: string[]) => any) | undefined;
|
|
101
|
-
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem
|
|
109
|
+
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
110
|
+
onItemMouseenter?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
111
|
+
onItemMouseleave?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
102
112
|
onLogoClick?: (() => any) | undefined;
|
|
113
|
+
onMouseEnter?: ((_e: MouseEvent) => any) | undefined;
|
|
114
|
+
onMouseLeave?: ((_e: MouseEvent) => any) | undefined;
|
|
103
115
|
}, {
|
|
104
116
|
collapse: boolean;
|
|
105
117
|
ellipsis: boolean;
|
|
@@ -22,20 +22,22 @@ const _sfc_main = vue.defineComponent({
|
|
|
22
22
|
const visible = vue.ref(false);
|
|
23
23
|
const active = vue.ref(null);
|
|
24
24
|
const data = vue.computed(() => {
|
|
25
|
-
const
|
|
25
|
+
const list = [];
|
|
26
26
|
props.tabData.forEach((t) => {
|
|
27
27
|
var _a, _b;
|
|
28
28
|
const isAlive = ((_a = t.meta) == null ? void 0 : _a.keepAlive) !== false;
|
|
29
|
-
if (t.key && ((_b = t.meta) == null ? void 0 : _b.iframe) &&
|
|
30
|
-
|
|
29
|
+
if (t.key && ((_b = t.meta) == null ? void 0 : _b.iframe) && isAlive) {
|
|
30
|
+
list.push({ id: t.key, src: t.meta.iframe, refresh: t.refresh });
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
|
-
return
|
|
33
|
+
return list.sort((a, b) => a.id === b.id ? 0 : a.id > b.id ? 1 : -1);
|
|
34
34
|
});
|
|
35
35
|
const onAfterLeave = (delay) => {
|
|
36
36
|
if (props.tabActive && data.value.length && data.value.some((d) => d.id === props.tabActive)) {
|
|
37
37
|
if (delay) {
|
|
38
|
+
clearTimer();
|
|
38
39
|
state.timer = setTimeout(() => {
|
|
40
|
+
state.timer = null;
|
|
39
41
|
visible.value = true;
|
|
40
42
|
vue.nextTick(() => {
|
|
41
43
|
active.value = props.tabActive;
|
|
@@ -43,9 +45,7 @@ const _sfc_main = vue.defineComponent({
|
|
|
43
45
|
}, delay);
|
|
44
46
|
} else {
|
|
45
47
|
visible.value = true;
|
|
46
|
-
|
|
47
|
-
active.value = props.tabActive;
|
|
48
|
-
});
|
|
48
|
+
active.value = props.tabActive;
|
|
49
49
|
}
|
|
50
50
|
} else {
|
|
51
51
|
visible.value = false;
|
|
@@ -53,7 +53,7 @@ const _sfc_main = vue.defineComponent({
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
const clearTimer = () => {
|
|
56
|
-
if (state.timer) {
|
|
56
|
+
if (state.timer != null) {
|
|
57
57
|
clearTimeout(state.timer);
|
|
58
58
|
state.timer = null;
|
|
59
59
|
}
|
|
@@ -63,10 +63,14 @@ const _sfc_main = vue.defineComponent({
|
|
|
63
63
|
() => {
|
|
64
64
|
clearTimer();
|
|
65
65
|
if (visible.value) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
if (!props.transitionName) {
|
|
67
|
+
onAfterLeave();
|
|
68
|
+
} else {
|
|
69
|
+
active.value = null;
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
69
72
|
}
|
|
73
|
+
onAfterLeave(props.transitionName ? props.transitionDelay : void 0);
|
|
70
74
|
}
|
|
71
75
|
);
|
|
72
76
|
vue.onBeforeUnmount(() => {
|
|
@@ -88,28 +92,47 @@ const _export_sfc = (sfc, props) => {
|
|
|
88
92
|
return target;
|
|
89
93
|
};
|
|
90
94
|
const _hoisted_1 = { class: "ele-admin-iframe-wrap" };
|
|
91
|
-
const _hoisted_2 = ["id", "src"];
|
|
95
|
+
const _hoisted_2 = ["data-id", "src"];
|
|
96
|
+
const _hoisted_3 = ["data-id", "src"];
|
|
92
97
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
93
98
|
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
94
|
-
vue.
|
|
99
|
+
!_ctx.transitionName ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(_ctx.data, (item) => {
|
|
100
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
|
|
101
|
+
key: item.id
|
|
102
|
+
}, [
|
|
103
|
+
!item.refresh ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("iframe", {
|
|
104
|
+
key: 0,
|
|
105
|
+
"data-id": item.id,
|
|
106
|
+
src: item.src,
|
|
107
|
+
class: "ele-admin-iframe"
|
|
108
|
+
}, null, 8, _hoisted_2)), [
|
|
109
|
+
[vue.vShow, _ctx.active === item.id]
|
|
110
|
+
]) : vue.createCommentVNode("", true)
|
|
111
|
+
], 64);
|
|
112
|
+
}), 128)) : (vue.openBlock(), vue.createBlock(vue.TransitionGroup, {
|
|
113
|
+
key: 1,
|
|
95
114
|
appear: true,
|
|
96
115
|
name: _ctx.transitionName,
|
|
97
116
|
onAfterLeave: _cache[0] || (_cache[0] = ($event) => _ctx.onAfterLeave())
|
|
98
117
|
}, {
|
|
99
118
|
default: vue.withCtx(() => [
|
|
100
119
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.data, (item) => {
|
|
101
|
-
return vue.
|
|
102
|
-
key: item.id
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
120
|
+
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
|
|
121
|
+
key: item.id
|
|
122
|
+
}, [
|
|
123
|
+
!item.refresh ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("iframe", {
|
|
124
|
+
key: 0,
|
|
125
|
+
"data-id": item.id,
|
|
126
|
+
src: item.src,
|
|
127
|
+
class: "ele-admin-iframe"
|
|
128
|
+
}, null, 8, _hoisted_3)), [
|
|
129
|
+
[vue.vShow, _ctx.active === item.id]
|
|
130
|
+
]) : vue.createCommentVNode("", true)
|
|
131
|
+
], 64);
|
|
109
132
|
}), 128))
|
|
110
133
|
]),
|
|
111
134
|
_: 1
|
|
112
|
-
}, 8, ["name"])
|
|
135
|
+
}, 8, ["name"]))
|
|
113
136
|
], 512)), [
|
|
114
137
|
[vue.vShow, _ctx.visible]
|
|
115
138
|
]);
|
|
@@ -20,23 +20,25 @@ const _sfc_main = vue.defineComponent({
|
|
|
20
20
|
active: String,
|
|
21
21
|
/** 是否折叠 */
|
|
22
22
|
collapse: Boolean,
|
|
23
|
-
/**
|
|
23
|
+
/** 是否只保持一个父级菜单展开 */
|
|
24
24
|
uniqueOpened: Boolean,
|
|
25
|
-
/**
|
|
25
|
+
/** 默认展开的父级菜单 */
|
|
26
26
|
defaultOpeneds: Array,
|
|
27
|
-
/**
|
|
27
|
+
/** 菜单折叠提示气泡主题 */
|
|
28
28
|
popperEffect: String,
|
|
29
|
-
/**
|
|
29
|
+
/** 子菜单项触发模式 */
|
|
30
30
|
itemTrigger: String,
|
|
31
|
-
/**
|
|
31
|
+
/** 菜单标题插槽名称 */
|
|
32
32
|
titleSlot: String,
|
|
33
|
-
/**
|
|
33
|
+
/** 菜单图标插槽名称 */
|
|
34
34
|
iconSlot: String
|
|
35
35
|
},
|
|
36
36
|
emits: {
|
|
37
37
|
open: (_index, _indexPath) => true,
|
|
38
38
|
close: (_index, _indexPath) => true,
|
|
39
|
-
itemClick: (_item) => true
|
|
39
|
+
itemClick: (_item, _e) => true,
|
|
40
|
+
mouseEnter: (_e) => true,
|
|
41
|
+
mouseLeave: (_e) => true
|
|
40
42
|
},
|
|
41
43
|
setup(props, { emit }) {
|
|
42
44
|
const { scrollIntoView } = util.useMenuScroll(() => {
|
|
@@ -45,7 +47,10 @@ const _sfc_main = vue.defineComponent({
|
|
|
45
47
|
});
|
|
46
48
|
const menusRef = vue.ref(null);
|
|
47
49
|
const menuItems = vue.computed(() => {
|
|
48
|
-
return util.getMenuItems(
|
|
50
|
+
return util.getMenuItems(
|
|
51
|
+
props.menus,
|
|
52
|
+
props.itemTrigger !== "click" && props.itemTrigger !== "hover"
|
|
53
|
+
);
|
|
49
54
|
});
|
|
50
55
|
const onOpen = (index, indexPath) => {
|
|
51
56
|
emit("open", index, indexPath);
|
|
@@ -53,15 +58,29 @@ const _sfc_main = vue.defineComponent({
|
|
|
53
58
|
const onClose = (index, indexPath) => {
|
|
54
59
|
emit("close", index, indexPath);
|
|
55
60
|
};
|
|
56
|
-
const onItemClick = (item) => {
|
|
57
|
-
emit("itemClick", item);
|
|
61
|
+
const onItemClick = (item, e) => {
|
|
62
|
+
emit("itemClick", item, e);
|
|
63
|
+
};
|
|
64
|
+
const onMouseenter = (e) => {
|
|
65
|
+
emit("mouseEnter", e);
|
|
66
|
+
};
|
|
67
|
+
const onMouseleave = (e) => {
|
|
68
|
+
emit("mouseLeave", e);
|
|
58
69
|
};
|
|
59
70
|
vue.watch([() => props.active, () => props.collapse], () => {
|
|
60
71
|
vue.nextTick(() => {
|
|
61
72
|
scrollIntoView();
|
|
62
73
|
});
|
|
63
74
|
});
|
|
64
|
-
return {
|
|
75
|
+
return {
|
|
76
|
+
menusRef,
|
|
77
|
+
menuItems,
|
|
78
|
+
onOpen,
|
|
79
|
+
onClose,
|
|
80
|
+
onItemClick,
|
|
81
|
+
onMouseenter,
|
|
82
|
+
onMouseleave
|
|
83
|
+
};
|
|
65
84
|
}
|
|
66
85
|
});
|
|
67
86
|
const _export_sfc = (sfc, props) => {
|
|
@@ -71,11 +90,14 @@ const _export_sfc = (sfc, props) => {
|
|
|
71
90
|
}
|
|
72
91
|
return target;
|
|
73
92
|
};
|
|
74
|
-
const _hoisted_1 = { class: "ele-admin-sidebar" };
|
|
75
93
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
76
94
|
const _component_EleMenus = vue.resolveComponent("EleMenus");
|
|
77
95
|
const _component_ElScrollbar = vue.resolveComponent("ElScrollbar");
|
|
78
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
96
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
97
|
+
class: "ele-admin-sidebar",
|
|
98
|
+
onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.onMouseenter && _ctx.onMouseenter(...args)),
|
|
99
|
+
onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseleave && _ctx.onMouseleave(...args))
|
|
100
|
+
}, [
|
|
79
101
|
vue.renderSlot(_ctx.$slots, "top"),
|
|
80
102
|
vue.createVNode(_component_ElScrollbar, {
|
|
81
103
|
ref: "menusRef",
|
|
@@ -116,7 +138,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
116
138
|
_: 3
|
|
117
139
|
}, 512),
|
|
118
140
|
vue.renderSlot(_ctx.$slots, "bottom")
|
|
119
|
-
]);
|
|
141
|
+
], 32);
|
|
120
142
|
}
|
|
121
143
|
const proSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
122
144
|
module.exports = proSidebar;
|
|
@@ -15,28 +15,32 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
15
15
|
active: StringConstructor;
|
|
16
16
|
/** 是否折叠 */
|
|
17
17
|
collapse: BooleanConstructor;
|
|
18
|
-
/**
|
|
18
|
+
/** 是否只保持一个父级菜单展开 */
|
|
19
19
|
uniqueOpened: BooleanConstructor;
|
|
20
|
-
/**
|
|
20
|
+
/** 默认展开的父级菜单 */
|
|
21
21
|
defaultOpeneds: PropType<string[]>;
|
|
22
|
-
/**
|
|
22
|
+
/** 菜单折叠提示气泡主题 */
|
|
23
23
|
popperEffect: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
|
|
24
|
-
/**
|
|
24
|
+
/** 子菜单项触发模式 */
|
|
25
25
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
26
|
-
/**
|
|
26
|
+
/** 菜单标题插槽名称 */
|
|
27
27
|
titleSlot: StringConstructor;
|
|
28
|
-
/**
|
|
28
|
+
/** 菜单图标插槽名称 */
|
|
29
29
|
iconSlot: StringConstructor;
|
|
30
30
|
}, {
|
|
31
31
|
menusRef: import("vue").Ref<ElScrollbarInstance>;
|
|
32
32
|
menuItems: import("vue").ComputedRef<Partial<import("../../ele-menus/types").MenuItem>[]>;
|
|
33
33
|
onOpen: (index: string, indexPath: string[]) => void;
|
|
34
34
|
onClose: (index: string, indexPath: string[]) => void;
|
|
35
|
-
onItemClick: (item: MenuItemProps) => void;
|
|
35
|
+
onItemClick: (item: MenuItemProps, e: MouseEvent) => void;
|
|
36
|
+
onMouseenter: (e: MouseEvent) => void;
|
|
37
|
+
onMouseleave: (e: MouseEvent) => void;
|
|
36
38
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
37
39
|
open: (_index: string, _indexPath: string[]) => true;
|
|
38
40
|
close: (_index: string, _indexPath: string[]) => true;
|
|
39
|
-
itemClick: (_item: MenuItemProps) => true;
|
|
41
|
+
itemClick: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
42
|
+
mouseEnter: (_e: MouseEvent) => true;
|
|
43
|
+
mouseLeave: (_e: MouseEvent) => true;
|
|
40
44
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
41
45
|
/** 菜单数据 */
|
|
42
46
|
menus: {
|
|
@@ -51,22 +55,24 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
51
55
|
active: StringConstructor;
|
|
52
56
|
/** 是否折叠 */
|
|
53
57
|
collapse: BooleanConstructor;
|
|
54
|
-
/**
|
|
58
|
+
/** 是否只保持一个父级菜单展开 */
|
|
55
59
|
uniqueOpened: BooleanConstructor;
|
|
56
|
-
/**
|
|
60
|
+
/** 默认展开的父级菜单 */
|
|
57
61
|
defaultOpeneds: PropType<string[]>;
|
|
58
|
-
/**
|
|
62
|
+
/** 菜单折叠提示气泡主题 */
|
|
59
63
|
popperEffect: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
|
|
60
|
-
/**
|
|
64
|
+
/** 子菜单项触发模式 */
|
|
61
65
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
62
|
-
/**
|
|
66
|
+
/** 菜单标题插槽名称 */
|
|
63
67
|
titleSlot: StringConstructor;
|
|
64
|
-
/**
|
|
68
|
+
/** 菜单图标插槽名称 */
|
|
65
69
|
iconSlot: StringConstructor;
|
|
66
70
|
}>> & {
|
|
67
71
|
onOpen?: ((_index: string, _indexPath: string[]) => any) | undefined;
|
|
68
72
|
onClose?: ((_index: string, _indexPath: string[]) => any) | undefined;
|
|
69
|
-
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem
|
|
73
|
+
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
74
|
+
onMouseEnter?: ((_e: MouseEvent) => any) | undefined;
|
|
75
|
+
onMouseLeave?: ((_e: MouseEvent) => any) | undefined;
|
|
70
76
|
}, {
|
|
71
77
|
uniqueOpened: boolean;
|
|
72
78
|
collapse: boolean;
|