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
|
@@ -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;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, shallowRef, computed, watch, resolveComponent, openBlock, createElementBlock, normalizeClass, renderSlot, createCommentVNode, createVNode, createElementVNode, createBlock, createSlots, withCtx, normalizeProps, guardReactiveProps } from "vue";
|
|
1
|
+
import { defineComponent, shallowRef, computed, watch, onBeforeUnmount, resolveComponent, openBlock, createElementBlock, normalizeClass, renderSlot, createCommentVNode, createVNode, createElementVNode, createBlock, createSlots, withCtx, normalizeProps, guardReactiveProps } from "vue";
|
|
2
2
|
import { HomeOutlined } from "../../icons";
|
|
3
3
|
import EleBreadcrumb from "../../ele-breadcrumb/index";
|
|
4
4
|
import EleMenus from "../../ele-menus/index";
|
|
@@ -20,17 +20,17 @@ const _sfc_main = defineComponent({
|
|
|
20
20
|
ellipsis: Boolean,
|
|
21
21
|
/** 菜单省略项的属性 */
|
|
22
22
|
ellipsisProps: Object,
|
|
23
|
-
/**
|
|
23
|
+
/** 父级菜单展开触发方式 */
|
|
24
24
|
menuTrigger: String,
|
|
25
|
-
/**
|
|
25
|
+
/** 子菜单项触发模式 */
|
|
26
26
|
itemTrigger: String,
|
|
27
27
|
/** 侧栏是否折叠 */
|
|
28
28
|
collapse: Boolean,
|
|
29
29
|
/** 当前是否有侧栏 */
|
|
30
30
|
sidebar: Boolean,
|
|
31
|
-
/**
|
|
31
|
+
/** 菜单标题插槽名称 */
|
|
32
32
|
titleSlot: String,
|
|
33
|
-
/**
|
|
33
|
+
/** 菜单图标插槽名称 */
|
|
34
34
|
iconSlot: String,
|
|
35
35
|
/** 面包屑导航数据 */
|
|
36
36
|
levels: {
|
|
@@ -50,12 +50,20 @@ const _sfc_main = defineComponent({
|
|
|
50
50
|
logoClick: () => true,
|
|
51
51
|
open: (_index, _indexPath) => true,
|
|
52
52
|
close: (_index, _indexPath) => true,
|
|
53
|
-
itemClick: (_item) => true
|
|
53
|
+
itemClick: (_item, _e) => true,
|
|
54
|
+
itemMouseenter: (_item, _e) => true,
|
|
55
|
+
itemMouseleave: (_item, _e) => true,
|
|
56
|
+
mouseEnter: (_e) => true,
|
|
57
|
+
mouseLeave: (_e) => true
|
|
54
58
|
},
|
|
55
59
|
setup(props, { emit }) {
|
|
60
|
+
const state = { hover: false, timer: null };
|
|
56
61
|
const levelItems = shallowRef([]);
|
|
57
62
|
const menuItems = computed(() => {
|
|
58
|
-
return getMenuItems(
|
|
63
|
+
return getMenuItems(
|
|
64
|
+
props.menus,
|
|
65
|
+
props.itemTrigger !== "click" && props.itemTrigger !== "hover"
|
|
66
|
+
);
|
|
59
67
|
});
|
|
60
68
|
const isDark = computed(() => props.headerStyle === "dark");
|
|
61
69
|
const isPrimary = computed(() => props.headerStyle === "primary");
|
|
@@ -71,8 +79,36 @@ const _sfc_main = defineComponent({
|
|
|
71
79
|
const onClose = (index, indexPath) => {
|
|
72
80
|
emit("close", index, indexPath);
|
|
73
81
|
};
|
|
74
|
-
const onItemClick = (item) => {
|
|
75
|
-
emit("itemClick", item);
|
|
82
|
+
const onItemClick = (item, e) => {
|
|
83
|
+
emit("itemClick", item, e);
|
|
84
|
+
};
|
|
85
|
+
const onItemMouseenter = (item, e) => {
|
|
86
|
+
emit("itemMouseenter", item, e);
|
|
87
|
+
onMouseenter(e);
|
|
88
|
+
};
|
|
89
|
+
const onItemMouseleave = (item, e) => {
|
|
90
|
+
emit("itemMouseleave", item, e);
|
|
91
|
+
onMouseleave(e);
|
|
92
|
+
};
|
|
93
|
+
const onMouseenter = (e) => {
|
|
94
|
+
if (state.timer != null) {
|
|
95
|
+
clearTimeout(state.timer);
|
|
96
|
+
state.timer = null;
|
|
97
|
+
}
|
|
98
|
+
if (!state.hover) {
|
|
99
|
+
state.hover = true;
|
|
100
|
+
emit("mouseEnter", e);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const onMouseleave = (e) => {
|
|
104
|
+
if (state.timer != null) {
|
|
105
|
+
clearTimeout(state.timer);
|
|
106
|
+
}
|
|
107
|
+
state.timer = setTimeout(() => {
|
|
108
|
+
state.timer = null;
|
|
109
|
+
state.hover = false;
|
|
110
|
+
emit("mouseLeave", e);
|
|
111
|
+
}, 300);
|
|
76
112
|
};
|
|
77
113
|
watch(
|
|
78
114
|
[() => props.isHome, () => props.homePath, () => props.levels],
|
|
@@ -94,8 +130,17 @@ const _sfc_main = defineComponent({
|
|
|
94
130
|
});
|
|
95
131
|
levelItems.value = data;
|
|
96
132
|
},
|
|
97
|
-
{
|
|
133
|
+
{
|
|
134
|
+
immediate: true,
|
|
135
|
+
deep: true
|
|
136
|
+
}
|
|
98
137
|
);
|
|
138
|
+
onBeforeUnmount(() => {
|
|
139
|
+
if (state.timer != null) {
|
|
140
|
+
clearTimeout(state.timer);
|
|
141
|
+
state.timer = null;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
99
144
|
return {
|
|
100
145
|
levelItems,
|
|
101
146
|
menuItems,
|
|
@@ -105,7 +150,11 @@ const _sfc_main = defineComponent({
|
|
|
105
150
|
onLogoClick,
|
|
106
151
|
onOpen,
|
|
107
152
|
onClose,
|
|
108
|
-
onItemClick
|
|
153
|
+
onItemClick,
|
|
154
|
+
onItemMouseenter,
|
|
155
|
+
onItemMouseleave,
|
|
156
|
+
onMouseenter,
|
|
157
|
+
onMouseleave
|
|
109
158
|
};
|
|
110
159
|
}
|
|
111
160
|
});
|
|
@@ -137,7 +186,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
137
186
|
"ele-admin-header",
|
|
138
187
|
{ "is-dark": _ctx.isDark },
|
|
139
188
|
{ "is-primary": _ctx.isPrimary }
|
|
140
|
-
])
|
|
189
|
+
]),
|
|
190
|
+
onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseenter && _ctx.onMouseenter(...args)),
|
|
191
|
+
onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.onMouseleave && _ctx.onMouseleave(...args))
|
|
141
192
|
}, [
|
|
142
193
|
_ctx.$slots.logo ? (openBlock(), createElementBlock("div", {
|
|
143
194
|
key: 0,
|
|
@@ -180,7 +231,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
180
231
|
menuTrigger: _ctx.menuTrigger,
|
|
181
232
|
onOpen: _ctx.onOpen,
|
|
182
233
|
onClose: _ctx.onClose,
|
|
183
|
-
onItemClick: _ctx.onItemClick
|
|
234
|
+
onItemClick: _ctx.onItemClick,
|
|
235
|
+
onItemMouseenter: _ctx.onItemMouseenter,
|
|
236
|
+
onItemMouseleave: _ctx.onItemMouseleave
|
|
184
237
|
}, createSlots({ _: 2 }, [
|
|
185
238
|
_ctx.iconSlot && !["logo", "left", "right", "center", "breadcrumb"].includes(
|
|
186
239
|
_ctx.iconSlot
|
|
@@ -200,12 +253,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
200
253
|
]),
|
|
201
254
|
key: "1"
|
|
202
255
|
} : void 0
|
|
203
|
-
]), 1032, ["items", "theme", "popupTheme", "ellipsis", "ellipsisProps", "defaultActive", "menuTrigger", "onOpen", "onClose", "onItemClick"])) : createCommentVNode("", true)
|
|
256
|
+
]), 1032, ["items", "theme", "popupTheme", "ellipsis", "ellipsisProps", "defaultActive", "menuTrigger", "onOpen", "onClose", "onItemClick", "onItemMouseenter", "onItemMouseleave"])) : createCommentVNode("", true)
|
|
204
257
|
]),
|
|
205
258
|
_ctx.$slots.right ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
206
259
|
renderSlot(_ctx.$slots, "right", { sidebar: _ctx.sidebar })
|
|
207
260
|
])) : createCommentVNode("", true)
|
|
208
|
-
],
|
|
261
|
+
], 34);
|
|
209
262
|
}
|
|
210
263
|
const proHeader = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
211
264
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, watch, onBeforeUnmount, nextTick, withDirectives, openBlock, createElementBlock,
|
|
1
|
+
import { defineComponent, ref, computed, watch, onBeforeUnmount, nextTick, withDirectives, openBlock, createElementBlock, Fragment, renderList, vShow, createCommentVNode, createBlock, TransitionGroup, withCtx } from "vue";
|
|
2
2
|
const _sfc_main = defineComponent({
|
|
3
3
|
name: "ProIframe",
|
|
4
4
|
props: {
|
|
@@ -21,20 +21,22 @@ const _sfc_main = defineComponent({
|
|
|
21
21
|
const visible = ref(false);
|
|
22
22
|
const active = ref(null);
|
|
23
23
|
const data = computed(() => {
|
|
24
|
-
const
|
|
24
|
+
const list = [];
|
|
25
25
|
props.tabData.forEach((t) => {
|
|
26
26
|
var _a, _b;
|
|
27
27
|
const isAlive = ((_a = t.meta) == null ? void 0 : _a.keepAlive) !== false;
|
|
28
|
-
if (t.key && ((_b = t.meta) == null ? void 0 : _b.iframe) &&
|
|
29
|
-
|
|
28
|
+
if (t.key && ((_b = t.meta) == null ? void 0 : _b.iframe) && isAlive) {
|
|
29
|
+
list.push({ id: t.key, src: t.meta.iframe, refresh: t.refresh });
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
-
return
|
|
32
|
+
return list.sort((a, b) => a.id === b.id ? 0 : a.id > b.id ? 1 : -1);
|
|
33
33
|
});
|
|
34
34
|
const onAfterLeave = (delay) => {
|
|
35
35
|
if (props.tabActive && data.value.length && data.value.some((d) => d.id === props.tabActive)) {
|
|
36
36
|
if (delay) {
|
|
37
|
+
clearTimer();
|
|
37
38
|
state.timer = setTimeout(() => {
|
|
39
|
+
state.timer = null;
|
|
38
40
|
visible.value = true;
|
|
39
41
|
nextTick(() => {
|
|
40
42
|
active.value = props.tabActive;
|
|
@@ -42,9 +44,7 @@ const _sfc_main = defineComponent({
|
|
|
42
44
|
}, delay);
|
|
43
45
|
} else {
|
|
44
46
|
visible.value = true;
|
|
45
|
-
|
|
46
|
-
active.value = props.tabActive;
|
|
47
|
-
});
|
|
47
|
+
active.value = props.tabActive;
|
|
48
48
|
}
|
|
49
49
|
} else {
|
|
50
50
|
visible.value = false;
|
|
@@ -52,7 +52,7 @@ const _sfc_main = defineComponent({
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
const clearTimer = () => {
|
|
55
|
-
if (state.timer) {
|
|
55
|
+
if (state.timer != null) {
|
|
56
56
|
clearTimeout(state.timer);
|
|
57
57
|
state.timer = null;
|
|
58
58
|
}
|
|
@@ -62,10 +62,14 @@ const _sfc_main = defineComponent({
|
|
|
62
62
|
() => {
|
|
63
63
|
clearTimer();
|
|
64
64
|
if (visible.value) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
if (!props.transitionName) {
|
|
66
|
+
onAfterLeave();
|
|
67
|
+
} else {
|
|
68
|
+
active.value = null;
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
68
71
|
}
|
|
72
|
+
onAfterLeave(props.transitionName ? props.transitionDelay : void 0);
|
|
69
73
|
}
|
|
70
74
|
);
|
|
71
75
|
onBeforeUnmount(() => {
|
|
@@ -87,28 +91,47 @@ const _export_sfc = (sfc, props) => {
|
|
|
87
91
|
return target;
|
|
88
92
|
};
|
|
89
93
|
const _hoisted_1 = { class: "ele-admin-iframe-wrap" };
|
|
90
|
-
const _hoisted_2 = ["id", "src"];
|
|
94
|
+
const _hoisted_2 = ["data-id", "src"];
|
|
95
|
+
const _hoisted_3 = ["data-id", "src"];
|
|
91
96
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
92
97
|
return withDirectives((openBlock(), createElementBlock("div", _hoisted_1, [
|
|
93
|
-
|
|
98
|
+
!_ctx.transitionName ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.data, (item) => {
|
|
99
|
+
return openBlock(), createElementBlock(Fragment, {
|
|
100
|
+
key: item.id
|
|
101
|
+
}, [
|
|
102
|
+
!item.refresh ? withDirectives((openBlock(), createElementBlock("iframe", {
|
|
103
|
+
key: 0,
|
|
104
|
+
"data-id": item.id,
|
|
105
|
+
src: item.src,
|
|
106
|
+
class: "ele-admin-iframe"
|
|
107
|
+
}, null, 8, _hoisted_2)), [
|
|
108
|
+
[vShow, _ctx.active === item.id]
|
|
109
|
+
]) : createCommentVNode("", true)
|
|
110
|
+
], 64);
|
|
111
|
+
}), 128)) : (openBlock(), createBlock(TransitionGroup, {
|
|
112
|
+
key: 1,
|
|
94
113
|
appear: true,
|
|
95
114
|
name: _ctx.transitionName,
|
|
96
115
|
onAfterLeave: _cache[0] || (_cache[0] = ($event) => _ctx.onAfterLeave())
|
|
97
116
|
}, {
|
|
98
117
|
default: withCtx(() => [
|
|
99
118
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.data, (item) => {
|
|
100
|
-
return
|
|
101
|
-
key: item.id
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
119
|
+
return openBlock(), createElementBlock(Fragment, {
|
|
120
|
+
key: item.id
|
|
121
|
+
}, [
|
|
122
|
+
!item.refresh ? withDirectives((openBlock(), createElementBlock("iframe", {
|
|
123
|
+
key: 0,
|
|
124
|
+
"data-id": item.id,
|
|
125
|
+
src: item.src,
|
|
126
|
+
class: "ele-admin-iframe"
|
|
127
|
+
}, null, 8, _hoisted_3)), [
|
|
128
|
+
[vShow, _ctx.active === item.id]
|
|
129
|
+
]) : createCommentVNode("", true)
|
|
130
|
+
], 64);
|
|
108
131
|
}), 128))
|
|
109
132
|
]),
|
|
110
133
|
_: 1
|
|
111
|
-
}, 8, ["name"])
|
|
134
|
+
}, 8, ["name"]))
|
|
112
135
|
], 512)), [
|
|
113
136
|
[vShow, _ctx.visible]
|
|
114
137
|
]);
|
|
@@ -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;
|
|
@@ -19,23 +19,25 @@ const _sfc_main = defineComponent({
|
|
|
19
19
|
active: String,
|
|
20
20
|
/** 是否折叠 */
|
|
21
21
|
collapse: Boolean,
|
|
22
|
-
/**
|
|
22
|
+
/** 是否只保持一个父级菜单展开 */
|
|
23
23
|
uniqueOpened: Boolean,
|
|
24
|
-
/**
|
|
24
|
+
/** 默认展开的父级菜单 */
|
|
25
25
|
defaultOpeneds: Array,
|
|
26
|
-
/**
|
|
26
|
+
/** 菜单折叠提示气泡主题 */
|
|
27
27
|
popperEffect: String,
|
|
28
|
-
/**
|
|
28
|
+
/** 子菜单项触发模式 */
|
|
29
29
|
itemTrigger: String,
|
|
30
|
-
/**
|
|
30
|
+
/** 菜单标题插槽名称 */
|
|
31
31
|
titleSlot: String,
|
|
32
|
-
/**
|
|
32
|
+
/** 菜单图标插槽名称 */
|
|
33
33
|
iconSlot: String
|
|
34
34
|
},
|
|
35
35
|
emits: {
|
|
36
36
|
open: (_index, _indexPath) => true,
|
|
37
37
|
close: (_index, _indexPath) => true,
|
|
38
|
-
itemClick: (_item) => true
|
|
38
|
+
itemClick: (_item, _e) => true,
|
|
39
|
+
mouseEnter: (_e) => true,
|
|
40
|
+
mouseLeave: (_e) => true
|
|
39
41
|
},
|
|
40
42
|
setup(props, { emit }) {
|
|
41
43
|
const { scrollIntoView } = useMenuScroll(() => {
|
|
@@ -44,7 +46,10 @@ const _sfc_main = defineComponent({
|
|
|
44
46
|
});
|
|
45
47
|
const menusRef = ref(null);
|
|
46
48
|
const menuItems = computed(() => {
|
|
47
|
-
return getMenuItems(
|
|
49
|
+
return getMenuItems(
|
|
50
|
+
props.menus,
|
|
51
|
+
props.itemTrigger !== "click" && props.itemTrigger !== "hover"
|
|
52
|
+
);
|
|
48
53
|
});
|
|
49
54
|
const onOpen = (index, indexPath) => {
|
|
50
55
|
emit("open", index, indexPath);
|
|
@@ -52,15 +57,29 @@ const _sfc_main = defineComponent({
|
|
|
52
57
|
const onClose = (index, indexPath) => {
|
|
53
58
|
emit("close", index, indexPath);
|
|
54
59
|
};
|
|
55
|
-
const onItemClick = (item) => {
|
|
56
|
-
emit("itemClick", item);
|
|
60
|
+
const onItemClick = (item, e) => {
|
|
61
|
+
emit("itemClick", item, e);
|
|
62
|
+
};
|
|
63
|
+
const onMouseenter = (e) => {
|
|
64
|
+
emit("mouseEnter", e);
|
|
65
|
+
};
|
|
66
|
+
const onMouseleave = (e) => {
|
|
67
|
+
emit("mouseLeave", e);
|
|
57
68
|
};
|
|
58
69
|
watch([() => props.active, () => props.collapse], () => {
|
|
59
70
|
nextTick(() => {
|
|
60
71
|
scrollIntoView();
|
|
61
72
|
});
|
|
62
73
|
});
|
|
63
|
-
return {
|
|
74
|
+
return {
|
|
75
|
+
menusRef,
|
|
76
|
+
menuItems,
|
|
77
|
+
onOpen,
|
|
78
|
+
onClose,
|
|
79
|
+
onItemClick,
|
|
80
|
+
onMouseenter,
|
|
81
|
+
onMouseleave
|
|
82
|
+
};
|
|
64
83
|
}
|
|
65
84
|
});
|
|
66
85
|
const _export_sfc = (sfc, props) => {
|
|
@@ -70,11 +89,14 @@ const _export_sfc = (sfc, props) => {
|
|
|
70
89
|
}
|
|
71
90
|
return target;
|
|
72
91
|
};
|
|
73
|
-
const _hoisted_1 = { class: "ele-admin-sidebar" };
|
|
74
92
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
75
93
|
const _component_EleMenus = resolveComponent("EleMenus");
|
|
76
94
|
const _component_ElScrollbar = resolveComponent("ElScrollbar");
|
|
77
|
-
return openBlock(), createElementBlock("div",
|
|
95
|
+
return openBlock(), createElementBlock("div", {
|
|
96
|
+
class: "ele-admin-sidebar",
|
|
97
|
+
onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.onMouseenter && _ctx.onMouseenter(...args)),
|
|
98
|
+
onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseleave && _ctx.onMouseleave(...args))
|
|
99
|
+
}, [
|
|
78
100
|
renderSlot(_ctx.$slots, "top"),
|
|
79
101
|
createVNode(_component_ElScrollbar, {
|
|
80
102
|
ref: "menusRef",
|
|
@@ -115,7 +137,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
115
137
|
_: 3
|
|
116
138
|
}, 512),
|
|
117
139
|
renderSlot(_ctx.$slots, "bottom")
|
|
118
|
-
]);
|
|
140
|
+
], 32);
|
|
119
141
|
}
|
|
120
142
|
const proSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
121
143
|
export {
|
|
@@ -17,20 +17,28 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
17
17
|
compact: BooleanConstructor;
|
|
18
18
|
/** 二级侧栏是否折叠 */
|
|
19
19
|
collapse: BooleanConstructor;
|
|
20
|
-
/**
|
|
20
|
+
/** 菜单折叠提示气泡主题 */
|
|
21
21
|
popperEffect: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
|
|
22
|
-
/**
|
|
22
|
+
/** 子菜单项触发模式 */
|
|
23
23
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
24
|
-
/**
|
|
24
|
+
/** 菜单标题插槽名称 */
|
|
25
25
|
titleSlot: StringConstructor;
|
|
26
|
-
/**
|
|
26
|
+
/** 菜单图标插槽名称 */
|
|
27
27
|
iconSlot: StringConstructor;
|
|
28
28
|
}, {
|
|
29
29
|
menusRef: import("vue").Ref<ElScrollbarInstance>;
|
|
30
30
|
menuItems: import("vue").ComputedRef<Partial<import("../../ele-menus/types").MenuItem>[]>;
|
|
31
|
-
onItemClick: (item: MenuItemProps) => void;
|
|
31
|
+
onItemClick: (item: MenuItemProps, e: MouseEvent) => void;
|
|
32
|
+
onItemMouseenter: (item: MenuItemProps, e: MouseEvent) => void;
|
|
33
|
+
onItemMouseleave: (item: MenuItemProps, e: MouseEvent) => void;
|
|
34
|
+
onMouseenter: (e: MouseEvent) => void;
|
|
35
|
+
onMouseleave: (e: MouseEvent) => void;
|
|
32
36
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
33
|
-
itemClick: (_item: MenuItemProps) => true;
|
|
37
|
+
itemClick: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
38
|
+
itemMouseenter: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
39
|
+
itemMouseleave: (_item: MenuItemProps, _e: MouseEvent) => true;
|
|
40
|
+
mouseEnter: (_e: MouseEvent) => true;
|
|
41
|
+
mouseLeave: (_e: MouseEvent) => true;
|
|
34
42
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
35
43
|
/** 菜单数据 */
|
|
36
44
|
menus: {
|
|
@@ -47,16 +55,20 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
47
55
|
compact: BooleanConstructor;
|
|
48
56
|
/** 二级侧栏是否折叠 */
|
|
49
57
|
collapse: BooleanConstructor;
|
|
50
|
-
/**
|
|
58
|
+
/** 菜单折叠提示气泡主题 */
|
|
51
59
|
popperEffect: PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
|
|
52
|
-
/**
|
|
60
|
+
/** 子菜单项触发模式 */
|
|
53
61
|
itemTrigger: PropType<MenuItemTrigger>;
|
|
54
|
-
/**
|
|
62
|
+
/** 菜单标题插槽名称 */
|
|
55
63
|
titleSlot: StringConstructor;
|
|
56
|
-
/**
|
|
64
|
+
/** 菜单图标插槽名称 */
|
|
57
65
|
iconSlot: StringConstructor;
|
|
58
66
|
}>> & {
|
|
59
|
-
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem
|
|
67
|
+
onItemClick?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
68
|
+
onItemMouseenter?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
69
|
+
onItemMouseleave?: ((_item: Partial<import("../../ele-menus/types").MenuItem>, _e: MouseEvent) => any) | undefined;
|
|
70
|
+
onMouseEnter?: ((_e: MouseEvent) => any) | undefined;
|
|
71
|
+
onMouseLeave?: ((_e: MouseEvent) => any) | undefined;
|
|
60
72
|
}, {
|
|
61
73
|
collapse: boolean;
|
|
62
74
|
compact: boolean;
|