ele-admin-plus 1.1.9-beta.3 → 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 +3 -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-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-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 +3 -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-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-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
|
@@ -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;
|
|
@@ -22,17 +22,21 @@ const _sfc_main = vue.defineComponent({
|
|
|
22
22
|
compact: Boolean,
|
|
23
23
|
/** 二级侧栏是否折叠 */
|
|
24
24
|
collapse: Boolean,
|
|
25
|
-
/**
|
|
25
|
+
/** 菜单折叠提示气泡主题 */
|
|
26
26
|
popperEffect: String,
|
|
27
|
-
/**
|
|
27
|
+
/** 子菜单项触发模式 */
|
|
28
28
|
itemTrigger: String,
|
|
29
|
-
/**
|
|
29
|
+
/** 菜单标题插槽名称 */
|
|
30
30
|
titleSlot: String,
|
|
31
|
-
/**
|
|
31
|
+
/** 菜单图标插槽名称 */
|
|
32
32
|
iconSlot: String
|
|
33
33
|
},
|
|
34
34
|
emits: {
|
|
35
|
-
itemClick: (_item) => true
|
|
35
|
+
itemClick: (_item, _e) => true,
|
|
36
|
+
itemMouseenter: (_item, _e) => true,
|
|
37
|
+
itemMouseleave: (_item, _e) => true,
|
|
38
|
+
mouseEnter: (_e) => true,
|
|
39
|
+
mouseLeave: (_e) => true
|
|
36
40
|
},
|
|
37
41
|
setup(props, { emit }) {
|
|
38
42
|
const { scrollIntoView } = util.useMenuScroll(() => {
|
|
@@ -41,17 +45,40 @@ const _sfc_main = vue.defineComponent({
|
|
|
41
45
|
});
|
|
42
46
|
const menusRef = vue.ref(null);
|
|
43
47
|
const menuItems = vue.computed(() => {
|
|
44
|
-
return util.getMenuItems(
|
|
48
|
+
return util.getMenuItems(
|
|
49
|
+
props.menus,
|
|
50
|
+
props.itemTrigger !== "click" && props.itemTrigger !== "hover"
|
|
51
|
+
);
|
|
45
52
|
});
|
|
46
|
-
const onItemClick = (item) => {
|
|
47
|
-
emit("itemClick", item);
|
|
53
|
+
const onItemClick = (item, e) => {
|
|
54
|
+
emit("itemClick", item, e);
|
|
55
|
+
};
|
|
56
|
+
const onItemMouseenter = (item, e) => {
|
|
57
|
+
emit("itemMouseenter", item, e);
|
|
58
|
+
};
|
|
59
|
+
const onItemMouseleave = (item, e) => {
|
|
60
|
+
emit("itemMouseleave", item, e);
|
|
61
|
+
};
|
|
62
|
+
const onMouseenter = (e) => {
|
|
63
|
+
emit("mouseEnter", e);
|
|
64
|
+
};
|
|
65
|
+
const onMouseleave = (e) => {
|
|
66
|
+
emit("mouseLeave", e);
|
|
48
67
|
};
|
|
49
68
|
vue.watch([() => props.active, () => props.compact], () => {
|
|
50
69
|
vue.nextTick(() => {
|
|
51
70
|
scrollIntoView();
|
|
52
71
|
});
|
|
53
72
|
});
|
|
54
|
-
return {
|
|
73
|
+
return {
|
|
74
|
+
menusRef,
|
|
75
|
+
menuItems,
|
|
76
|
+
onItemClick,
|
|
77
|
+
onItemMouseenter,
|
|
78
|
+
onItemMouseleave,
|
|
79
|
+
onMouseenter,
|
|
80
|
+
onMouseleave
|
|
81
|
+
};
|
|
55
82
|
}
|
|
56
83
|
});
|
|
57
84
|
const _export_sfc = (sfc, props) => {
|
|
@@ -61,11 +88,14 @@ const _export_sfc = (sfc, props) => {
|
|
|
61
88
|
}
|
|
62
89
|
return target;
|
|
63
90
|
};
|
|
64
|
-
const _hoisted_1 = { class: "ele-admin-sidebox" };
|
|
65
91
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
66
92
|
const _component_EleMenus = vue.resolveComponent("EleMenus");
|
|
67
93
|
const _component_ElScrollbar = vue.resolveComponent("ElScrollbar");
|
|
68
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
94
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
95
|
+
class: "ele-admin-sidebox",
|
|
96
|
+
onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.onMouseenter && _ctx.onMouseenter(...args)),
|
|
97
|
+
onMouseleave: _cache[1] || (_cache[1] = (...args) => _ctx.onMouseleave && _ctx.onMouseleave(...args))
|
|
98
|
+
}, [
|
|
69
99
|
vue.renderSlot(_ctx.$slots, "boxTop"),
|
|
70
100
|
vue.createVNode(_component_ElScrollbar, {
|
|
71
101
|
ref: "menusRef",
|
|
@@ -84,7 +114,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
84
114
|
collapseTransition: false,
|
|
85
115
|
firstPopperClass: "ele-admin-sidebox-popup",
|
|
86
116
|
tooltipDisabled: !_ctx.compact,
|
|
87
|
-
onItemClick: _ctx.onItemClick
|
|
117
|
+
onItemClick: _ctx.onItemClick,
|
|
118
|
+
onItemMouseenter: _ctx.onItemMouseenter,
|
|
119
|
+
onItemMouseleave: _ctx.onItemMouseleave
|
|
88
120
|
}, vue.createSlots({ _: 2 }, [
|
|
89
121
|
_ctx.iconSlot && !["boxTop", "boxBottom"].includes(_ctx.iconSlot) && _ctx.$slots[_ctx.iconSlot] ? {
|
|
90
122
|
name: "icon",
|
|
@@ -100,12 +132,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
100
132
|
]),
|
|
101
133
|
key: "1"
|
|
102
134
|
} : void 0
|
|
103
|
-
]), 1032, ["items", "theme", "popupColorful", "collapse", "defaultActive", "popperEffect", "tooltipDisabled", "onItemClick"])) : vue.createCommentVNode("", true)
|
|
135
|
+
]), 1032, ["items", "theme", "popupColorful", "collapse", "defaultActive", "popperEffect", "tooltipDisabled", "onItemClick", "onItemMouseenter", "onItemMouseleave"])) : vue.createCommentVNode("", true)
|
|
104
136
|
]),
|
|
105
137
|
_: 3
|
|
106
138
|
}, 512),
|
|
107
139
|
vue.renderSlot(_ctx.$slots, "boxBottom")
|
|
108
|
-
]);
|
|
140
|
+
], 32);
|
|
109
141
|
}
|
|
110
142
|
const proSidebox = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
111
143
|
module.exports = proSidebox;
|
|
@@ -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;
|
|
@@ -25,13 +25,17 @@ const _sfc_main = vue.defineComponent({
|
|
|
25
25
|
const state = { timer: null };
|
|
26
26
|
const dropdownRef = vue.ref(null);
|
|
27
27
|
const clearTimer = () => {
|
|
28
|
-
|
|
28
|
+
if (state.timer) {
|
|
29
|
+
clearTimeout(state.timer);
|
|
30
|
+
state.timer = null;
|
|
31
|
+
}
|
|
29
32
|
};
|
|
30
33
|
const onCommand = (command) => {
|
|
31
34
|
emit("menuClick", command);
|
|
32
35
|
clearTimer();
|
|
33
36
|
if (props.autoClose) {
|
|
34
37
|
state.timer = setTimeout(() => {
|
|
38
|
+
state.timer = null;
|
|
35
39
|
if (dropdownRef.value) {
|
|
36
40
|
dropdownRef.value.handleClose();
|
|
37
41
|
}
|