974c743b68b6724a9aaf8e0a7cf4a56b0e5449854390e7977ec91e7bb5c5748d9e7dd62c6ca3d5afdd8517a747fd2c5d563b1f5406d0f7ce575b46b15af5b0 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var index$1 = require('../../tooltip/index.js');
  5. var useMenu = require('./use-menu.js');
  6. var menuItem = require('./menu-item.js');
  7. var tokens = require('./tokens.js');
  8. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  9. var types = require('../../../utils/types.js');
  10. var error = require('../../../utils/error.js');
  11. var index = require('../../../hooks/use-namespace/index.js');
  12. const COMPONENT_NAME = "ElMenuItem";
  13. const __default__ = vue.defineComponent({
  14. name: COMPONENT_NAME
  15. });
  16. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  17. ...__default__,
  18. props: menuItem.menuItemProps,
  19. emits: menuItem.menuItemEmits,
  20. setup(__props, { expose, emit }) {
  21. const props = __props;
  22. types.isPropAbsent(props.index) && error.debugWarn();
  23. const instance = vue.getCurrentInstance();
  24. const rootMenu = vue.inject(tokens.MENU_INJECTION_KEY);
  25. const nsMenu = index.useNamespace("menu");
  26. const nsMenuItem = index.useNamespace("menu-item");
  27. if (!rootMenu)
  28. error.throwError(COMPONENT_NAME, "can not inject root menu");
  29. const { parentMenu, indexPath } = useMenu["default"](instance, vue.toRef(props, "index"));
  30. const subMenu = vue.inject(`${tokens.SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`);
  31. if (!subMenu)
  32. error.throwError(COMPONENT_NAME, "can not inject sub menu");
  33. const active = vue.computed(() => props.index === rootMenu.activeIndex);
  34. const item = vue.reactive({
  35. index: props.index,
  36. indexPath,
  37. active
  38. });
  39. const handleClick = () => {
  40. if (!props.disabled) {
  41. rootMenu.handleMenuItemClick({
  42. index: props.index,
  43. indexPath: indexPath.value,
  44. route: props.route
  45. });
  46. emit("click", item);
  47. }
  48. };
  49. vue.onMounted(() => {
  50. subMenu.addSubMenu(item);
  51. rootMenu.addMenuItem(item);
  52. });
  53. vue.onBeforeUnmount(() => {
  54. subMenu.removeSubMenu(item);
  55. rootMenu.removeMenuItem(item);
  56. });
  57. expose({
  58. parentMenu,
  59. rootMenu,
  60. active,
  61. nsMenu,
  62. nsMenuItem,
  63. handleClick
  64. });
  65. return (_ctx, _cache) => {
  66. return vue.openBlock(), vue.createElementBlock("li", {
  67. class: vue.normalizeClass([
  68. vue.unref(nsMenuItem).b(),
  69. vue.unref(nsMenuItem).is("active", vue.unref(active)),
  70. vue.unref(nsMenuItem).is("disabled", _ctx.disabled)
  71. ]),
  72. role: "menuitem",
  73. tabindex: "-1",
  74. onClick: handleClick
  75. }, [
  76. vue.unref(parentMenu).type.name === "ElMenu" && vue.unref(rootMenu).props.collapse && _ctx.$slots.title ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.ElTooltip), {
  77. key: 0,
  78. effect: vue.unref(rootMenu).props.popperEffect,
  79. placement: "right",
  80. "fallback-placements": ["left"],
  81. persistent: vue.unref(rootMenu).props.persistent,
  82. "focus-on-target": ""
  83. }, {
  84. content: vue.withCtx(() => [
  85. vue.renderSlot(_ctx.$slots, "title")
  86. ]),
  87. default: vue.withCtx(() => [
  88. vue.createElementVNode("div", {
  89. class: vue.normalizeClass(vue.unref(nsMenu).be("tooltip", "trigger"))
  90. }, [
  91. vue.renderSlot(_ctx.$slots, "default")
  92. ], 2)
  93. ]),
  94. _: 3
  95. }, 8, ["effect", "persistent"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
  96. vue.renderSlot(_ctx.$slots, "default"),
  97. vue.renderSlot(_ctx.$slots, "title")
  98. ], 64))
  99. ], 2);
  100. };
  101. }
  102. });
  103. var MenuItem = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "menu-item.vue"]]);
  104. exports["default"] = MenuItem;
  105. //# sourceMappingURL=menu-item2.js.map