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