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
@@ -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 result = [];
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) && !t.refresh && isAlive) {
30
- result.push({ id: t.key, src: t.meta.iframe });
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 result;
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
- vue.nextTick(() => {
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
- active.value = null;
67
- } else {
68
- onAfterLeave(props.transitionDelay);
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.createVNode(vue.TransitionGroup, {
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.withDirectives((vue.openBlock(), vue.createElementBlock("iframe", {
102
- key: item.id,
103
- id: item.id,
104
- src: item.src,
105
- class: "ele-admin-iframe"
106
- }, null, 8, _hoisted_2)), [
107
- [vue.vShow, _ctx.active === item.id]
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
- /** tooltip 主题 */
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(props.menus, props.itemTrigger != "click");
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 { menusRef, menuItems, onOpen, onClose, onItemClick };
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", _hoisted_1, [
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
- /** 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;
@@ -22,17 +22,21 @@ const _sfc_main = vue.defineComponent({
22
22
  compact: Boolean,
23
23
  /** 二级侧栏是否折叠 */
24
24
  collapse: Boolean,
25
- /** tooltip 主题 */
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(props.menus, props.itemTrigger != "click");
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 { menusRef, menuItems, onItemClick };
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", _hoisted_1, [
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
- /** 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;
@@ -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
- state.timer && clearTimeout(state.timer);
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
  }