element-plus
Version:
A Component Library for Vue 3
1 lines • 6.09 kB
Source Map (JSON)
{"version":3,"file":"menu-item.vue2.mjs","sources":["../../../../../../packages/components/menu/src/menu-item.vue"],"sourcesContent":["<template>\n <li\n :class=\"[\n nsMenuItem.b(),\n nsMenuItem.is('active', active),\n nsMenuItem.is('disabled', disabled),\n ]\"\n role=\"menuitem\"\n tabindex=\"-1\"\n @click=\"handleClick\"\n >\n <el-tooltip\n v-if=\"\n parentMenu.type.name === 'ElMenu' &&\n rootMenu.props.collapse &&\n $slots.title\n \"\n :effect=\"rootMenu.props.popperEffect\"\n placement=\"right\"\n :fallback-placements=\"['left']\"\n :popper-class=\"rootMenu.props.popperClass\"\n :popper-style=\"rootMenu.props.popperStyle\"\n :persistent=\"rootMenu.props.persistent\"\n focus-on-target\n >\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </el-tooltip>\n <template v-else>\n <slot />\n <slot name=\"title\" />\n </template>\n </li>\n</template>\n\n<script lang=\"ts\" setup>\n// @ts-nocheck\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onMounted,\n reactive,\n toRef,\n} from 'vue'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { debugWarn, isPropAbsent, throwError } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport useMenu from './use-menu'\nimport { menuItemEmits } from './menu-item'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { MenuItemProps } from './menu-item'\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types'\n\nconst COMPONENT_NAME = 'ElMenuItem'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<MenuItemProps>(), {\n index: null,\n})\nconst emit = defineEmits(menuItemEmits)\n\nisPropAbsent(props.index) &&\n debugWarn(COMPONENT_NAME, 'Missing required prop: \"index\"')\n\nconst instance = getCurrentInstance()!\nconst rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\nconst nsMenu = useNamespace('menu')\nconst nsMenuItem = useNamespace('menu-item')\nif (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\nconst { parentMenu, indexPath } = useMenu(instance, toRef(props, 'index'))\n\nconst subMenu = inject<SubMenuProvider>(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value.uid}`\n)\nif (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\nconst active = computed(() => props.index === rootMenu.activeIndex)\nconst item: MenuItemRegistered = reactive({\n index: props.index,\n indexPath,\n active,\n})\n\nconst handleClick = () => {\n if (!props.disabled) {\n rootMenu.handleMenuItemClick({\n index: props.index,\n indexPath: indexPath.value,\n route: props.route,\n })\n emit('click', item)\n }\n}\n\nonMounted(() => {\n subMenu.addSubMenu(item)\n rootMenu.addMenuItem(item)\n})\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeMenuItem(item)\n})\n\ndefineExpose({\n parentMenu,\n rootMenu,\n active,\n nsMenu,\n nsMenuItem,\n handleClick,\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","$slots","_createBlock","_renderSlot","_createElementVNode","_Fragment"],"mappings":"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"}