ele-admin-plus 1.1.9-beta.3 → 1.1.9-beta.5

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 (85) hide show
  1. package/es/ele-app/el.d.ts +3 -0
  2. package/es/ele-basic-select/index.d.ts +2 -2
  3. package/es/ele-check-card/index.d.ts +1 -1
  4. package/es/ele-drawer/index.d.ts +1 -1
  5. package/es/ele-drawer/style/index.scss +1 -1
  6. package/es/ele-icon-select/index.d.ts +3 -3
  7. package/es/ele-map-picker/index.d.ts +1 -1
  8. package/es/ele-menus/index.d.ts +6 -2
  9. package/es/ele-menus/index.js +17 -4
  10. package/es/ele-menus/props.d.ts +6 -2
  11. package/es/ele-menus/props.js +6 -2
  12. package/es/ele-menus/style/index.scss +12 -11
  13. package/es/ele-menus/types.d.ts +9 -9
  14. package/es/ele-menus/util.d.ts +21 -15
  15. package/es/ele-menus/util.js +92 -83
  16. package/es/ele-modal/style/index.scss +1 -1
  17. package/es/ele-printer/style/index.scss +1 -1
  18. package/es/ele-pro-layout/components/pro-header.d.ts +23 -11
  19. package/es/ele-pro-layout/components/pro-header.js +68 -15
  20. package/es/ele-pro-layout/components/pro-iframe.js +46 -23
  21. package/es/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
  22. package/es/ele-pro-layout/components/pro-sidebar.js +36 -14
  23. package/es/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
  24. package/es/ele-pro-layout/components/pro-sidebox.js +46 -14
  25. package/es/ele-pro-layout/components/tab-dropdown.js +5 -1
  26. package/es/ele-pro-layout/index.d.ts +40 -27
  27. package/es/ele-pro-layout/index.js +269 -52
  28. package/es/ele-pro-layout/props.d.ts +5 -0
  29. package/es/ele-pro-layout/props.js +5 -0
  30. package/es/ele-pro-layout/style/tabs.scss +1 -1
  31. package/es/ele-pro-layout/types.d.ts +29 -3
  32. package/es/ele-segmented/index.d.ts +1 -1
  33. package/es/ele-table-select/index.d.ts +5 -5
  34. package/es/ele-tree-select/index.d.ts +5 -5
  35. package/es/ele-upload-list/components/list-item.d.ts +5 -1
  36. package/es/ele-upload-list/components/list-item.js +7 -4
  37. package/es/ele-upload-list/index.d.ts +10 -6
  38. package/es/ele-upload-list/index.js +7 -5
  39. package/es/ele-upload-list/props.d.ts +6 -2
  40. package/es/ele-upload-list/props.js +5 -1
  41. package/es/ele-virtual-table/components/body-cell.d.ts +1 -1
  42. package/es/ele-virtual-table/index.d.ts +1 -1
  43. package/lib/ele-app/el.d.ts +3 -0
  44. package/lib/ele-basic-select/index.d.ts +2 -2
  45. package/lib/ele-check-card/index.d.ts +1 -1
  46. package/lib/ele-drawer/index.d.ts +1 -1
  47. package/lib/ele-drawer/style/index.scss +1 -1
  48. package/lib/ele-icon-select/index.d.ts +3 -3
  49. package/lib/ele-map-picker/index.d.ts +1 -1
  50. package/lib/ele-menus/index.cjs +17 -4
  51. package/lib/ele-menus/index.d.ts +6 -2
  52. package/lib/ele-menus/props.cjs +6 -2
  53. package/lib/ele-menus/props.d.ts +6 -2
  54. package/lib/ele-menus/style/index.scss +12 -11
  55. package/lib/ele-menus/types.d.ts +9 -9
  56. package/lib/ele-menus/util.cjs +92 -83
  57. package/lib/ele-menus/util.d.ts +21 -15
  58. package/lib/ele-modal/style/index.scss +1 -1
  59. package/lib/ele-printer/style/index.scss +1 -1
  60. package/lib/ele-pro-layout/components/pro-header.cjs +67 -14
  61. package/lib/ele-pro-layout/components/pro-header.d.ts +23 -11
  62. package/lib/ele-pro-layout/components/pro-iframe.cjs +45 -22
  63. package/lib/ele-pro-layout/components/pro-sidebar.cjs +36 -14
  64. package/lib/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
  65. package/lib/ele-pro-layout/components/pro-sidebox.cjs +46 -14
  66. package/lib/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
  67. package/lib/ele-pro-layout/components/tab-dropdown.cjs +5 -1
  68. package/lib/ele-pro-layout/index.cjs +269 -52
  69. package/lib/ele-pro-layout/index.d.ts +40 -27
  70. package/lib/ele-pro-layout/props.cjs +5 -0
  71. package/lib/ele-pro-layout/props.d.ts +5 -0
  72. package/lib/ele-pro-layout/style/tabs.scss +1 -1
  73. package/lib/ele-pro-layout/types.d.ts +29 -3
  74. package/lib/ele-segmented/index.d.ts +1 -1
  75. package/lib/ele-table-select/index.d.ts +5 -5
  76. package/lib/ele-tree-select/index.d.ts +5 -5
  77. package/lib/ele-upload-list/components/list-item.cjs +6 -3
  78. package/lib/ele-upload-list/components/list-item.d.ts +5 -1
  79. package/lib/ele-upload-list/index.cjs +7 -5
  80. package/lib/ele-upload-list/index.d.ts +10 -6
  81. package/lib/ele-upload-list/props.cjs +5 -1
  82. package/lib/ele-upload-list/props.d.ts +6 -2
  83. package/lib/ele-virtual-table/components/body-cell.d.ts +1 -1
  84. package/lib/ele-virtual-table/index.d.ts +1 -1
  85. 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>) => any) | undefined;
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(props.menus, props.itemTrigger != "click");
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
- { deep: true, immediate: true }
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
- ], 2);
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, createVNode, TransitionGroup, withCtx, Fragment, renderList, vShow } from "vue";
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 result = [];
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) && !t.refresh && isAlive) {
29
- result.push({ id: t.key, src: t.meta.iframe });
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 result;
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
- nextTick(() => {
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
- active.value = null;
66
- } else {
67
- onAfterLeave(props.transitionDelay);
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
- createVNode(TransitionGroup, {
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 withDirectives((openBlock(), createElementBlock("iframe", {
101
- key: item.id,
102
- id: item.id,
103
- src: item.src,
104
- class: "ele-admin-iframe"
105
- }, null, 8, _hoisted_2)), [
106
- [vShow, _ctx.active === item.id]
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
- /** tooltip 主题 */
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
- /** tooltip 主题 */
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>) => any) | undefined;
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
- /** tooltip 主题 */
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(props.menus, props.itemTrigger != "click");
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 { menusRef, menuItems, onOpen, onClose, onItemClick };
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", _hoisted_1, [
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
- /** tooltip 主题 */
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
- /** tooltip 主题 */
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>) => any) | undefined;
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;