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.
Files changed (77) 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-icon-select/index.d.ts +3 -3
  6. package/es/ele-map-picker/index.d.ts +1 -1
  7. package/es/ele-menus/index.d.ts +10 -2
  8. package/es/ele-menus/index.js +17 -4
  9. package/es/ele-menus/props.d.ts +8 -2
  10. package/es/ele-menus/props.js +9 -3
  11. package/es/ele-menus/style/index.scss +12 -11
  12. package/es/ele-menus/types.d.ts +9 -9
  13. package/es/ele-menus/util.d.ts +21 -15
  14. package/es/ele-menus/util.js +92 -83
  15. package/es/ele-pro-layout/components/pro-header.d.ts +23 -11
  16. package/es/ele-pro-layout/components/pro-header.js +68 -15
  17. package/es/ele-pro-layout/components/pro-iframe.js +46 -23
  18. package/es/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
  19. package/es/ele-pro-layout/components/pro-sidebar.js +36 -14
  20. package/es/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
  21. package/es/ele-pro-layout/components/pro-sidebox.js +46 -14
  22. package/es/ele-pro-layout/components/tab-dropdown.js +5 -1
  23. package/es/ele-pro-layout/index.d.ts +40 -27
  24. package/es/ele-pro-layout/index.js +269 -52
  25. package/es/ele-pro-layout/props.d.ts +5 -0
  26. package/es/ele-pro-layout/props.js +5 -0
  27. package/es/ele-pro-layout/types.d.ts +29 -3
  28. package/es/ele-segmented/index.d.ts +1 -1
  29. package/es/ele-table-select/index.d.ts +5 -5
  30. package/es/ele-tree-select/index.d.ts +5 -5
  31. package/es/ele-upload-list/components/list-item.d.ts +5 -1
  32. package/es/ele-upload-list/components/list-item.js +7 -4
  33. package/es/ele-upload-list/index.d.ts +10 -6
  34. package/es/ele-upload-list/index.js +7 -5
  35. package/es/ele-upload-list/props.d.ts +6 -2
  36. package/es/ele-upload-list/props.js +5 -1
  37. package/es/ele-virtual-table/components/body-cell.d.ts +1 -1
  38. package/es/ele-virtual-table/index.d.ts +1 -1
  39. package/lib/ele-app/el.d.ts +3 -0
  40. package/lib/ele-basic-select/index.d.ts +2 -2
  41. package/lib/ele-check-card/index.d.ts +1 -1
  42. package/lib/ele-drawer/index.d.ts +1 -1
  43. package/lib/ele-icon-select/index.d.ts +3 -3
  44. package/lib/ele-map-picker/index.d.ts +1 -1
  45. package/lib/ele-menus/index.cjs +17 -4
  46. package/lib/ele-menus/index.d.ts +10 -2
  47. package/lib/ele-menus/props.cjs +9 -3
  48. package/lib/ele-menus/props.d.ts +8 -2
  49. package/lib/ele-menus/style/index.scss +12 -11
  50. package/lib/ele-menus/types.d.ts +9 -9
  51. package/lib/ele-menus/util.cjs +92 -83
  52. package/lib/ele-menus/util.d.ts +21 -15
  53. package/lib/ele-pro-layout/components/pro-header.cjs +67 -14
  54. package/lib/ele-pro-layout/components/pro-header.d.ts +23 -11
  55. package/lib/ele-pro-layout/components/pro-iframe.cjs +45 -22
  56. package/lib/ele-pro-layout/components/pro-sidebar.cjs +36 -14
  57. package/lib/ele-pro-layout/components/pro-sidebar.d.ts +21 -15
  58. package/lib/ele-pro-layout/components/pro-sidebox.cjs +46 -14
  59. package/lib/ele-pro-layout/components/pro-sidebox.d.ts +23 -11
  60. package/lib/ele-pro-layout/components/tab-dropdown.cjs +5 -1
  61. package/lib/ele-pro-layout/index.cjs +269 -52
  62. package/lib/ele-pro-layout/index.d.ts +40 -27
  63. package/lib/ele-pro-layout/props.cjs +5 -0
  64. package/lib/ele-pro-layout/props.d.ts +5 -0
  65. package/lib/ele-pro-layout/types.d.ts +29 -3
  66. package/lib/ele-segmented/index.d.ts +1 -1
  67. package/lib/ele-table-select/index.d.ts +5 -5
  68. package/lib/ele-tree-select/index.d.ts +5 -5
  69. package/lib/ele-upload-list/components/list-item.cjs +6 -3
  70. package/lib/ele-upload-list/components/list-item.d.ts +5 -1
  71. package/lib/ele-upload-list/index.cjs +7 -5
  72. package/lib/ele-upload-list/index.d.ts +10 -6
  73. package/lib/ele-upload-list/props.cjs +5 -1
  74. package/lib/ele-upload-list/props.d.ts +6 -2
  75. package/lib/ele-virtual-table/components/body-cell.d.ts +1 -1
  76. package/lib/ele-virtual-table/index.d.ts +1 -1
  77. package/package.json +1 -1
@@ -29,6 +29,13 @@ const _sfc_main = vue.defineComponent({
29
29
  const { authenticated } = receiver.useLicense();
30
30
  const { currentRoute, push } = vueRouter.useRouter();
31
31
  const { disableTransition } = util.useDisableTransition();
32
+ const state = {
33
+ headerData: [],
34
+ sideboxData: [],
35
+ sidebarData: [],
36
+ menuTimer: null,
37
+ isHover: false
38
+ };
32
39
  const contentRef = vue.ref(null);
33
40
  const levelData = vue.shallowRef([]);
34
41
  const tabData = vue.shallowRef([]);
@@ -216,6 +223,9 @@ const _sfc_main = vue.defineComponent({
216
223
  sideboxActive.value = active1;
217
224
  }
218
225
  sidebarActive.value = active;
226
+ state.headerActive = headerActive.value;
227
+ state.sideboxActive = sideboxActive.value;
228
+ state.sidebarActive = sidebarActive.value;
219
229
  };
220
230
  const splitMenuData = () => {
221
231
  var _a;
@@ -292,6 +302,9 @@ const _sfc_main = vue.defineComponent({
292
302
  sidebarData.value = menuData.value;
293
303
  }
294
304
  }
305
+ state.headerData = headerData.value;
306
+ state.sideboxData = sideboxData.value;
307
+ state.sidebarData = sidebarData.value;
295
308
  };
296
309
  const updateMenuData = () => {
297
310
  let temp;
@@ -337,90 +350,276 @@ const _sfc_main = vue.defineComponent({
337
350
  });
338
351
  }
339
352
  };
340
- const onNavItemClick = (item) => {
341
- if (!item.index || props2.navTrigger != "click") {
342
- return;
343
- }
344
- if (props2.beforeClick && props2.beforeClick(item) === false) {
353
+ const onNavItemClick = (item, e) => {
354
+ const path = item.index;
355
+ const trigger = props2.navTrigger;
356
+ if (!path || trigger !== "click" && trigger !== "hover") {
345
357
  return;
346
358
  }
347
359
  if (core.isExternalLink(item.index)) {
348
- window.open(item.index);
360
+ e.stopPropagation();
361
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
362
+ return;
363
+ }
364
+ window.open(path);
349
365
  return;
350
366
  }
351
- headerActive.value = item.index;
352
- const temp = util.getActiveChilds(
353
- headerData.value,
354
- headerActive.value,
355
- "tempChildren"
356
- );
367
+ const temp = util.getActiveChilds(headerData.value, path, "tempChildren");
357
368
  const isChild = !temp.some((d) => {
358
369
  var _a;
359
370
  return !((_a = d.meta) == null ? void 0 : _a.hide);
360
371
  });
361
- if (isChild && item.index !== vue.unref(currentRoute).fullPath) {
362
- push(item.index);
372
+ if (trigger !== "click" && !isChild) {
373
+ e.stopPropagation();
363
374
  return;
364
375
  }
365
- if (mixSidebar.value) {
376
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
377
+ return;
378
+ }
379
+ if (isChild) {
380
+ if (path !== vue.unref(currentRoute).fullPath) {
381
+ push(path);
382
+ }
383
+ return;
384
+ }
385
+ if (headerActive.value !== path) {
386
+ headerActive.value = path;
387
+ if (!mixSidebar.value) {
388
+ sidebarData.value = temp;
389
+ return;
390
+ }
366
391
  sideboxData.value = temp.map((d) => {
367
392
  return {
368
- name: d.name,
369
- path: d.path,
370
- component: d.component,
371
- redirect: d.redirect,
372
- meta: d.meta,
393
+ ...d,
373
394
  children: props2.collapse ? d.children : void 0,
374
395
  tempChildren: d.children
375
396
  };
376
397
  });
398
+ }
399
+ };
400
+ const onNavItemMouseenter = (item, e) => {
401
+ if (!mixLayout.value) {
402
+ return;
403
+ }
404
+ if (state.menuTimer != null) {
405
+ clearTimeout(state.menuTimer);
406
+ state.menuTimer = null;
407
+ }
408
+ const path = item.index;
409
+ const trigger = props2.navTrigger;
410
+ if (trigger !== "hover" || !path || core.isExternalLink(path)) {
377
411
  return;
378
412
  }
379
- sidebarData.value = temp;
413
+ const temp = util.getActiveChilds(headerData.value, path, "tempChildren");
414
+ if (!temp.some((d) => {
415
+ var _a;
416
+ return !((_a = d.meta) == null ? void 0 : _a.hide);
417
+ })) {
418
+ return;
419
+ }
420
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
421
+ return;
422
+ }
423
+ if (headerActive.value !== path) {
424
+ state.isHover = true;
425
+ headerActive.value = path;
426
+ if (!mixSidebar.value) {
427
+ sidebarData.value = temp;
428
+ return;
429
+ }
430
+ sideboxData.value = temp.map((d) => {
431
+ return {
432
+ ...d,
433
+ children: props2.collapse ? d.children : void 0,
434
+ tempChildren: d.children
435
+ };
436
+ });
437
+ }
438
+ };
439
+ const onNavMouseEnter = () => {
440
+ if (state.menuTimer != null) {
441
+ clearTimeout(state.menuTimer);
442
+ state.menuTimer = null;
443
+ }
444
+ };
445
+ const onNavMouseLeave = () => {
446
+ if (!state.isHover) {
447
+ return;
448
+ }
449
+ if (state.menuTimer != null) {
450
+ clearTimeout(state.menuTimer);
451
+ state.menuTimer = null;
452
+ }
453
+ state.menuTimer = setTimeout(() => {
454
+ state.isHover = false;
455
+ if (headerActive.value !== state.headerActive) {
456
+ headerActive.value = state.headerActive;
457
+ if (mixSidebar.value) {
458
+ sideboxData.value = state.sideboxData;
459
+ } else {
460
+ sidebarData.value = state.sidebarData;
461
+ }
462
+ }
463
+ if (mixSidebar.value && sideboxActive.value !== state.sideboxActive) {
464
+ sideboxActive.value = state.sideboxActive;
465
+ sidebarData.value = state.sidebarData;
466
+ }
467
+ }, props2.menuHoverTimeout);
380
468
  };
381
- const onBoxItemClick = (item) => {
382
- if (!item.index || props2.boxTrigger != "click") {
469
+ const onBoxItemClick = (item, e) => {
470
+ const path = item.index;
471
+ const trigger = props2.boxTrigger;
472
+ if (!path || trigger !== "click" && trigger !== "hover") {
383
473
  return;
384
474
  }
385
- if (props2.beforeClick && props2.beforeClick(item) === false) {
475
+ if (core.isExternalLink(path)) {
476
+ e.stopPropagation();
477
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
478
+ return;
479
+ }
480
+ window.open(path);
386
481
  return;
387
482
  }
388
- if (core.isExternalLink(item.index)) {
389
- window.open(item.index);
483
+ if (props2.collapse) {
484
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
485
+ return;
486
+ }
487
+ if (path !== vue.unref(currentRoute).fullPath) {
488
+ push(path);
489
+ }
390
490
  return;
391
491
  }
392
- sideboxActive.value = item.index;
393
- const temp = util.getActiveChilds(
394
- sideboxData.value,
395
- sideboxActive.value,
396
- "tempChildren"
397
- );
492
+ const temp = util.getActiveChilds(sideboxData.value, path, "tempChildren");
398
493
  const isChild = !temp.some((d) => {
399
494
  var _a;
400
495
  return !((_a = d.meta) == null ? void 0 : _a.hide);
401
496
  });
402
- if (isChild && item.index !== vue.unref(currentRoute).fullPath) {
403
- push(item.index);
497
+ if (trigger !== "click" && !isChild) {
498
+ e.stopPropagation();
499
+ return;
500
+ }
501
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
502
+ return;
503
+ }
504
+ if (isChild) {
505
+ if (path !== vue.unref(currentRoute).fullPath) {
506
+ push(path);
507
+ }
404
508
  return;
405
509
  }
406
- sidebarData.value = temp;
510
+ if (sideboxActive.value !== path) {
511
+ sideboxActive.value = path;
512
+ sidebarData.value = temp;
513
+ }
407
514
  };
408
- const onMenuItemClick = (item) => {
409
- if (!item.index || props2.itemTrigger != "click") {
515
+ const onBoxItemMouseenter = (item, e) => {
516
+ if (props2.collapse) {
410
517
  return;
411
518
  }
412
- if (props2.beforeClick && props2.beforeClick(item) === false) {
519
+ if (state.menuTimer != null) {
520
+ clearTimeout(state.menuTimer);
521
+ state.menuTimer = null;
522
+ }
523
+ const path = item.index;
524
+ const trigger = props2.boxTrigger;
525
+ if (trigger !== "hover" || !path || core.isExternalLink(path)) {
413
526
  return;
414
527
  }
415
- if (core.isExternalLink(item.index)) {
416
- window.open(item.index);
528
+ const temp = util.getActiveChilds(sideboxData.value, path, "tempChildren");
529
+ if (!temp.some((d) => {
530
+ var _a;
531
+ return !((_a = d.meta) == null ? void 0 : _a.hide);
532
+ })) {
533
+ return;
534
+ }
535
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
417
536
  return;
418
537
  }
419
- sidebarActive.value = item.index;
420
- if (item.index !== vue.unref(currentRoute).fullPath) {
421
- push(item.index);
538
+ if (sideboxActive.value !== path) {
539
+ state.isHover = true;
540
+ sideboxActive.value = path;
541
+ sidebarData.value = temp;
422
542
  }
423
543
  };
544
+ const onBoxMouseEnter = () => {
545
+ if (state.menuTimer != null) {
546
+ clearTimeout(state.menuTimer);
547
+ state.menuTimer = null;
548
+ }
549
+ };
550
+ const onBoxMouseLeave = () => {
551
+ if (!state.isHover) {
552
+ return;
553
+ }
554
+ if (state.menuTimer != null) {
555
+ clearTimeout(state.menuTimer);
556
+ state.menuTimer = null;
557
+ }
558
+ state.menuTimer = setTimeout(() => {
559
+ state.isHover = false;
560
+ if (headerActive.value !== state.headerActive) {
561
+ headerActive.value = state.headerActive;
562
+ if (mixSidebar.value) {
563
+ sideboxData.value = state.sideboxData;
564
+ } else {
565
+ sidebarData.value = state.sidebarData;
566
+ }
567
+ }
568
+ if (mixSidebar.value && sideboxActive.value !== state.sideboxActive) {
569
+ sideboxActive.value = state.sideboxActive;
570
+ sidebarData.value = state.sidebarData;
571
+ }
572
+ }, props2.menuHoverTimeout);
573
+ };
574
+ const onMenuItemClick = (item, e) => {
575
+ const path = item.index;
576
+ const trigger = props2.itemTrigger;
577
+ if (!path || trigger !== "click" && trigger !== "hover") {
578
+ return;
579
+ }
580
+ if (props2.beforeClick && props2.beforeClick(item, e) === false) {
581
+ return;
582
+ }
583
+ if (core.isExternalLink(path)) {
584
+ e.stopPropagation();
585
+ window.open(path);
586
+ return;
587
+ }
588
+ sidebarActive.value = path;
589
+ if (path !== vue.unref(currentRoute).fullPath) {
590
+ push(path);
591
+ }
592
+ };
593
+ const onSideMouseEnter = () => {
594
+ if (state.menuTimer != null) {
595
+ clearTimeout(state.menuTimer);
596
+ state.menuTimer = null;
597
+ }
598
+ };
599
+ const onSideMouseLeave = () => {
600
+ if (!state.isHover) {
601
+ return;
602
+ }
603
+ if (state.menuTimer != null) {
604
+ clearTimeout(state.menuTimer);
605
+ state.menuTimer = null;
606
+ }
607
+ state.menuTimer = setTimeout(() => {
608
+ state.isHover = false;
609
+ if (headerActive.value !== state.headerActive) {
610
+ headerActive.value = state.headerActive;
611
+ if (mixSidebar.value) {
612
+ sideboxData.value = state.sideboxData;
613
+ } else {
614
+ sidebarData.value = state.sidebarData;
615
+ }
616
+ }
617
+ if (mixSidebar.value && sideboxActive.value !== state.sideboxActive) {
618
+ sideboxActive.value = state.sideboxActive;
619
+ sidebarData.value = state.sidebarData;
620
+ }
621
+ }, props2.menuHoverTimeout);
622
+ };
424
623
  vue.watch(
425
624
  () => props2.menus,
426
625
  () => {
@@ -463,11 +662,13 @@ const _sfc_main = vue.defineComponent({
463
662
  sideboxData.value = sideboxData.value.map((d) => {
464
663
  return { ...d, children: d.tempChildren };
465
664
  });
665
+ state.sideboxData = sideboxData.value;
466
666
  return;
467
667
  }
468
668
  sideboxData.value = sideboxData.value.map((d) => {
469
669
  return { ...d, children: void 0 };
470
670
  });
671
+ state.sideboxData = sideboxData.value;
471
672
  }
472
673
  );
473
674
  vue.watch(
@@ -528,7 +729,7 @@ const _sfc_main = vue.defineComponent({
528
729
  props2
529
730
  );
530
731
  const layoutProvide = vue.computed(() => {
531
- const state = {
732
+ const state2 = {
532
733
  mobile: mobile.value,
533
734
  collapse: props2.collapse,
534
735
  compact: props2.compact,
@@ -541,7 +742,7 @@ const _sfc_main = vue.defineComponent({
541
742
  keepAlive: props2.tabBar && props2.keepAlive,
542
743
  responsive: props2.responsive
543
744
  };
544
- return state;
745
+ return state2;
545
746
  });
546
747
  vue.provide(receiver.LAYOUT_KEY, layoutProvide);
547
748
  return {
@@ -577,8 +778,16 @@ const _sfc_main = vue.defineComponent({
577
778
  onHeadMenuOpen,
578
779
  onHeadMenuClose,
579
780
  onNavItemClick,
781
+ onNavItemMouseenter,
782
+ onNavMouseEnter,
783
+ onNavMouseLeave,
580
784
  onBoxItemClick,
581
- onMenuItemClick
785
+ onBoxItemMouseenter,
786
+ onBoxMouseEnter,
787
+ onBoxMouseLeave,
788
+ onMenuItemClick,
789
+ onSideMouseEnter,
790
+ onSideMouseLeave
582
791
  };
583
792
  }
584
793
  });
@@ -625,7 +834,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
625
834
  onLogoClick: _ctx.onLogoClick,
626
835
  onOpen: _ctx.onHeadMenuOpen,
627
836
  onClsoe: _ctx.onHeadMenuClose,
628
- onItemClick: _ctx.onNavItemClick
837
+ onItemClick: _ctx.onNavItemClick,
838
+ onItemMouseenter: _ctx.onNavItemMouseenter,
839
+ onMouseEnter: _ctx.onNavMouseEnter,
840
+ onMouseLeave: _ctx.onNavMouseLeave
629
841
  }, vue.createSlots({ _: 2 }, [
630
842
  vue.renderList(Object.keys(_ctx.$slots).filter(
631
843
  (k) => ![
@@ -648,7 +860,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
648
860
  ])
649
861
  };
650
862
  })
651
- ]), 1032, ["menus", "headerStyle", "active", "ellipsis", "ellipsisProps", "menuTrigger", "itemTrigger", "collapse", "sidebar", "titleSlot", "iconSlot", "levels", "breadcrumb", "breadcrumbSeparator", "homePath", "isHome", "onLogoClick", "onOpen", "onClsoe", "onItemClick"]),
863
+ ]), 1032, ["menus", "headerStyle", "active", "ellipsis", "ellipsisProps", "menuTrigger", "itemTrigger", "collapse", "sidebar", "titleSlot", "iconSlot", "levels", "breadcrumb", "breadcrumbSeparator", "homePath", "isHome", "onLogoClick", "onOpen", "onClsoe", "onItemClick", "onItemMouseenter", "onMouseEnter", "onMouseLeave"]),
652
864
  vue.createVNode(_component_EleWatermark, {
653
865
  class: "ele-admin-main",
654
866
  height: 68,
@@ -669,7 +881,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
669
881
  itemTrigger: _ctx.boxTrigger,
670
882
  titleSlot: _ctx.sideboxTitleSlot,
671
883
  iconSlot: _ctx.sideboxIconSlot,
672
- onItemClick: _ctx.onBoxItemClick
884
+ onItemClick: _ctx.onBoxItemClick,
885
+ onItemMouseenter: _ctx.onBoxItemMouseenter,
886
+ onMouseEnter: _ctx.onBoxMouseEnter,
887
+ onMouseLeave: _ctx.onBoxMouseLeave
673
888
  }, vue.createSlots({ _: 2 }, [
674
889
  vue.renderList(Object.keys(_ctx.$slots).filter(
675
890
  (k) => ![
@@ -695,7 +910,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
695
910
  ])
696
911
  };
697
912
  })
698
- ]), 1032, ["menus", "sidebarStyle", "colorfulIcon", "active", "compact", "collapse", "popperEffect", "itemTrigger", "titleSlot", "iconSlot", "onItemClick"])) : vue.createCommentVNode("", true),
913
+ ]), 1032, ["menus", "sidebarStyle", "colorfulIcon", "active", "compact", "collapse", "popperEffect", "itemTrigger", "titleSlot", "iconSlot", "onItemClick", "onItemMouseenter", "onMouseEnter", "onMouseLeave"])) : vue.createCommentVNode("", true),
699
914
  _ctx.sidebar ? (vue.openBlock(), vue.createBlock(_component_ProSidebar, {
700
915
  key: 1,
701
916
  menus: _ctx.sidebarData,
@@ -711,7 +926,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
711
926
  iconSlot: _ctx.sidebarIconSlot,
712
927
  onOpen: _ctx.onSideMenuOpen,
713
928
  onClsoe: _ctx.onSideMenuClose,
714
- onItemClick: _ctx.onMenuItemClick
929
+ onItemClick: _ctx.onMenuItemClick,
930
+ onMouseEnter: _ctx.onSideMouseEnter,
931
+ onMouseLeave: _ctx.onSideMouseLeave
715
932
  }, vue.createSlots({ _: 2 }, [
716
933
  vue.renderList(Object.keys(_ctx.$slots).filter(
717
934
  (k) => ![
@@ -737,7 +954,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
737
954
  ])
738
955
  };
739
956
  })
740
- ]), 1032, ["menus", "sidebarStyle", "colorfulIcon", "active", "collapse", "uniqueOpened", "defaultOpeneds", "popperEffect", "itemTrigger", "titleSlot", "iconSlot", "onOpen", "onClsoe", "onItemClick"])) : vue.createCommentVNode("", true),
957
+ ]), 1032, ["menus", "sidebarStyle", "colorfulIcon", "active", "collapse", "uniqueOpened", "defaultOpeneds", "popperEffect", "itemTrigger", "titleSlot", "iconSlot", "onOpen", "onClsoe", "onItemClick", "onMouseEnter", "onMouseLeave"])) : vue.createCommentVNode("", true),
741
958
  vue.createElementVNode("div", _hoisted_1, [
742
959
  _ctx.tabBar ? (vue.openBlock(), vue.createBlock(_component_ProTabs, {
743
960
  key: 0,
@@ -58,15 +58,14 @@ declare const _default: import("vue").DefineComponent<{
58
58
  default: string;
59
59
  };
60
60
  sidebarStyle: {
61
- type: import("vue").PropType<import("./types").SidebarStyle>; /** 页签选中 */
61
+ type: import("vue").PropType<import("./types").SidebarStyle>;
62
62
  default: string;
63
63
  };
64
64
  tabStyle: {
65
65
  type: import("vue").PropType<import("./types").TabStyle>;
66
- default: string;
67
- };
66
+ default: string; /** 页签数据 */
67
+ }; /** 页签数据 */
68
68
  fixedHeader: {
69
- /** 顶栏菜单数据 */
70
69
  type: BooleanConstructor;
71
70
  default: boolean;
72
71
  };
@@ -74,13 +73,13 @@ declare const _default: import("vue").DefineComponent<{
74
73
  fixedBody: BooleanConstructor;
75
74
  fluid: {
76
75
  type: BooleanConstructor;
77
- default: boolean;
76
+ default: boolean; /** 顶栏菜单数据 */
78
77
  };
79
78
  logoInHeader: BooleanConstructor;
80
- colorfulIcon: BooleanConstructor; /** 侧栏一级菜单数据 */
79
+ colorfulIcon: BooleanConstructor;
81
80
  uniqueOpened: {
82
81
  type: BooleanConstructor;
83
- default: boolean; /** 侧栏一级菜单选中 */
82
+ default: boolean;
84
83
  };
85
84
  expanded: BooleanConstructor;
86
85
  compressOnEsc: BooleanConstructor;
@@ -90,20 +89,20 @@ declare const _default: import("vue").DefineComponent<{
90
89
  };
91
90
  homePath: StringConstructor;
92
91
  redirectPath: {
92
+ /** 侧栏是否隐藏 */
93
93
  type: StringConstructor;
94
94
  default: string;
95
95
  };
96
96
  locale: StringConstructor;
97
- i18n: import("vue").PropType<import("./types").MenuI18n>;
98
- sidebarOpeneds: import("vue").PropType<string[]>;
97
+ i18n: import("vue").PropType<import("./types").MenuI18n>; /** 页脚是否隐藏 */
98
+ sidebarOpeneds: import("vue").PropType<string[]>; /** 主页地址 */
99
99
  tabContextMenu: import("vue").PropType<boolean | import("../ele-app/plus").EleDropdownProps>;
100
100
  tabContextMenus: import("vue").PropType<import("../ele-tabs/types").ContextMenus>;
101
- tabSortable: BooleanConstructor;
101
+ tabSortable: BooleanConstructor; /** 水印文本 */
102
102
  autoScrollTop: {
103
103
  type: BooleanConstructor;
104
104
  default: boolean;
105
105
  };
106
- /** 是否双侧栏布局 */
107
106
  headerTitleSlot: {
108
107
  type: StringConstructor;
109
108
  default: string;
@@ -126,7 +125,6 @@ declare const _default: import("vue").DefineComponent<{
126
125
  };
127
126
  sideboxIconSlot: {
128
127
  type: StringConstructor;
129
- /** 布局类名 */
130
128
  default: string;
131
129
  };
132
130
  tooltipEffect: import("vue").PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
@@ -144,6 +142,10 @@ declare const _default: import("vue").DefineComponent<{
144
142
  type: BooleanConstructor;
145
143
  default: boolean;
146
144
  };
145
+ menuHoverTimeout: {
146
+ type: NumberConstructor;
147
+ default: number;
148
+ };
147
149
  }, {
148
150
  authenticated: Ref<boolean>;
149
151
  watermark: Ref<string[]>;
@@ -176,9 +178,17 @@ declare const _default: import("vue").DefineComponent<{
176
178
  onSideMenuClose: (index: string, indexPath: string[]) => void;
177
179
  onHeadMenuOpen: (index: string, indexPath: string[]) => void;
178
180
  onHeadMenuClose: (index: string, indexPath: string[]) => void;
179
- onNavItemClick: (item: MenuItemProps) => void;
180
- onBoxItemClick: (item: MenuItemProps) => void;
181
- onMenuItemClick: (item: MenuItemProps) => void;
181
+ onNavItemClick: (item: MenuItemProps, e: MouseEvent) => void;
182
+ onNavItemMouseenter: (item: MenuItemProps, e: MouseEvent) => void;
183
+ onNavMouseEnter: () => void;
184
+ onNavMouseLeave: () => void;
185
+ onBoxItemClick: (item: MenuItemProps, e: MouseEvent) => void;
186
+ onBoxItemMouseenter: (item: MenuItemProps, e: MouseEvent) => void;
187
+ onBoxMouseEnter: () => void;
188
+ onBoxMouseLeave: () => void;
189
+ onMenuItemClick: (item: MenuItemProps, e: MouseEvent) => void;
190
+ onSideMouseEnter: () => void;
191
+ onSideMouseLeave: () => void;
182
192
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
183
193
  'update:collapse': (_collapse: boolean) => boolean;
184
194
  'update:maximized': (_val: boolean) => boolean;
@@ -250,15 +260,14 @@ declare const _default: import("vue").DefineComponent<{
250
260
  default: string;
251
261
  };
252
262
  sidebarStyle: {
253
- type: import("vue").PropType<import("./types").SidebarStyle>; /** 页签选中 */
263
+ type: import("vue").PropType<import("./types").SidebarStyle>;
254
264
  default: string;
255
265
  };
256
266
  tabStyle: {
257
267
  type: import("vue").PropType<import("./types").TabStyle>;
258
- default: string;
259
- };
268
+ default: string; /** 页签数据 */
269
+ }; /** 页签数据 */
260
270
  fixedHeader: {
261
- /** 顶栏菜单数据 */
262
271
  type: BooleanConstructor;
263
272
  default: boolean;
264
273
  };
@@ -266,13 +275,13 @@ declare const _default: import("vue").DefineComponent<{
266
275
  fixedBody: BooleanConstructor;
267
276
  fluid: {
268
277
  type: BooleanConstructor;
269
- default: boolean;
278
+ default: boolean; /** 顶栏菜单数据 */
270
279
  };
271
280
  logoInHeader: BooleanConstructor;
272
- colorfulIcon: BooleanConstructor; /** 侧栏一级菜单数据 */
281
+ colorfulIcon: BooleanConstructor;
273
282
  uniqueOpened: {
274
283
  type: BooleanConstructor;
275
- default: boolean; /** 侧栏一级菜单选中 */
284
+ default: boolean;
276
285
  };
277
286
  expanded: BooleanConstructor;
278
287
  compressOnEsc: BooleanConstructor;
@@ -282,20 +291,20 @@ declare const _default: import("vue").DefineComponent<{
282
291
  };
283
292
  homePath: StringConstructor;
284
293
  redirectPath: {
294
+ /** 侧栏是否隐藏 */
285
295
  type: StringConstructor;
286
296
  default: string;
287
297
  };
288
298
  locale: StringConstructor;
289
- i18n: import("vue").PropType<import("./types").MenuI18n>;
290
- sidebarOpeneds: import("vue").PropType<string[]>;
299
+ i18n: import("vue").PropType<import("./types").MenuI18n>; /** 页脚是否隐藏 */
300
+ sidebarOpeneds: import("vue").PropType<string[]>; /** 主页地址 */
291
301
  tabContextMenu: import("vue").PropType<boolean | import("../ele-app/plus").EleDropdownProps>;
292
302
  tabContextMenus: import("vue").PropType<import("../ele-tabs/types").ContextMenus>;
293
- tabSortable: BooleanConstructor;
303
+ tabSortable: BooleanConstructor; /** 水印文本 */
294
304
  autoScrollTop: {
295
305
  type: BooleanConstructor;
296
306
  default: boolean;
297
307
  };
298
- /** 是否双侧栏布局 */
299
308
  headerTitleSlot: {
300
309
  type: StringConstructor;
301
310
  default: string;
@@ -318,7 +327,6 @@ declare const _default: import("vue").DefineComponent<{
318
327
  };
319
328
  sideboxIconSlot: {
320
329
  type: StringConstructor;
321
- /** 布局类名 */
322
330
  default: string;
323
331
  };
324
332
  tooltipEffect: import("vue").PropType<import("element-plus/es/utils/index").EpPropMergeType<StringConstructor, "light" | "dark", unknown> | undefined>;
@@ -336,6 +344,10 @@ declare const _default: import("vue").DefineComponent<{
336
344
  type: BooleanConstructor;
337
345
  default: boolean;
338
346
  };
347
+ menuHoverTimeout: {
348
+ type: NumberConstructor;
349
+ default: number;
350
+ };
339
351
  }>> & {
340
352
  onTabClick?: ((_option: TabItemEventOption) => any) | undefined;
341
353
  onTabRemove?: ((_option: TabItemEventOption) => any) | undefined;
@@ -390,5 +402,6 @@ declare const _default: import("vue").DefineComponent<{
390
402
  sidebarIconSlot: string;
391
403
  sideboxTitleSlot: string;
392
404
  sideboxIconSlot: string;
405
+ menuHoverTimeout: number;
393
406
  }, {}>;
394
407
  export default _default;
@@ -194,6 +194,11 @@ const proLayoutProps = {
194
194
  responsive: {
195
195
  type: Boolean,
196
196
  default: true
197
+ },
198
+ /** 菜单切换超时 */
199
+ menuHoverTimeout: {
200
+ type: Number,
201
+ default: 600
197
202
  }
198
203
  };
199
204
  const proLayoutEmits = {
@@ -201,6 +201,11 @@ export declare const proLayoutProps: {
201
201
  type: BooleanConstructor;
202
202
  default: boolean;
203
203
  };
204
+ /** 菜单切换超时 */
205
+ menuHoverTimeout: {
206
+ type: NumberConstructor;
207
+ default: number;
208
+ };
204
209
  };
205
210
  export type ProLayoutProps = ExtractPropTypes<typeof proLayoutProps>;
206
211
  /**