tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 11 kB
Source Map (JSON)
{"version":3,"file":"menu-item.mjs","sources":["../../../components/menu/menu-item.tsx"],"sourcesContent":["import { defineComponent, computed, inject, onMounted, ref, toRefs, getCurrentInstance } from 'vue';\nimport props from './menu-item-props';\nimport { TdMenuInterface, TdSubMenuInterface } from './types';\nimport { useRipple, useContent, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport Tooltip from '../tooltip';\nimport type { TdMenuItemProps } from './type';\n\nexport default defineComponent({\n name: 'TMenuItem',\n props,\n emits: ['click'],\n setup(props: TdMenuItemProps, ctx) {\n const { href, target, to, disabled, value, onClick, routerLink, replace } = toRefs(props);\n const classPrefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n\n const menu = inject<TdMenuInterface>('TdMenu');\n const itemRef = ref<HTMLElement>();\n const instance = getCurrentInstance();\n\n useRipple(itemRef);\n const submenu = inject<TdSubMenuInterface>('TdSubmenu', null);\n const active = computed(() => menu.activeValue.value === props.value);\n const collapsed = computed(() => menu.collapsed?.value);\n const classes = computed(() => [\n `${classPrefix.value}-menu__item`,\n {\n [`${classPrefix.value}-is-active`]: active.value,\n [`${classPrefix.value}-is-disabled`]: props.disabled,\n [`${classPrefix.value}-menu__item--plain`]: !ctx.slots.icon && !props.icon,\n [`${classPrefix.value}-submenu__item`]: !!submenu && !menu.isHead,\n },\n ]);\n const router = computed(() => props.router || instance?.proxy.$router);\n\n const handleClick = (e: MouseEvent) => {\n e.stopPropagation();\n if (disabled.value) return;\n menu.select(value.value);\n onClick.value?.({ e, value: value.value });\n if (to.value || (routerLink.value && href.value)) {\n const methods = replace.value ? 'replace' : 'push';\n router.value[methods](to.value || href.value).catch((err: Error) => {\n // vue-router 3.1.0+ push/replace cause NavigationDuplicated error\n // https://github.com/vuejs/vue-router/issues/2872\n // 当前path和目标path相同时,会抛出NavigationDuplicated的错误\n if (\n err.name !== 'NavigationDuplicated' &&\n !err.message.includes('Avoided redundant navigation to current location')\n ) {\n throw err;\n }\n });\n }\n submenu?.closeParentPopup?.(e);\n };\n\n // lifetimes\n onMounted(() => {\n menu?.vMenu?.add({ value: props.value, parent: submenu?.value, vnode: ctx.slots.default, ...props });\n const activeValues = menu.activeValues.value;\n if (activeValues.includes(props.value) && !activeValues.includes(submenu?.value)) {\n activeValues.push(submenu?.value);\n }\n });\n\n return () => {\n const liContent = (\n <li ref={itemRef} class={classes.value} onClick={handleClick}>\n {renderTNodeJSX('icon')}\n {routerLink.value ? (\n <a\n href={href.value ? href.value : to.value ? router.value?.resolve(to.value).href : ''}\n target={target.value}\n class={`${classPrefix.value}-menu__item-link`}\n onClick={(e) => e.preventDefault()}\n >\n <span class={`${classPrefix.value}-menu__content`}>{renderContent('default', 'content')}</span>\n </a>\n ) : href.value ? (\n <a\n href={href.value}\n target={target.value}\n class={`${classPrefix.value}-menu__item-link`}\n onClick={(e) => disabled.value && e.preventDefault()}\n >\n <span class={`${classPrefix.value}-menu__content`}>{renderContent('default', 'content')}</span>\n </a>\n ) : (\n <span class={`${classPrefix.value}-menu__content`}>{renderContent('default', 'content')}</span>\n )}\n </li>\n );\n\n const node = instance?.parent;\n // 菜单收起,且只有本身为一级菜单才需要显示 tooltip\n if (collapsed.value && /tmenu/i.test(node?.type.name)) {\n return (\n <Tooltip content={() => renderContent('default', 'content')} placement=\"right\">\n {liContent}\n </Tooltip>\n );\n }\n return liContent;\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","emits","setup","ctx","_toRefs","toRefs","href","target","to","disabled","value","onClick","routerLink","replace","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","menu","inject","itemRef","ref","instance","getCurrentInstance","useRipple","submenu","active","computed","activeValue","collapsed","_menu$collapsed","classes","concat","_defineProperty","slots","icon","isHead","router","proxy","$router","handleClick","e","_onClick$value","_submenu$closeParentP","stopPropagation","select","methods","err","message","includes","closeParentPopup","onMounted","_menu$vMenu","vMenu","add","_objectSpread","parent","vnode","activeValues","push","_router$value","liContent","_createVNode","resolve","preventDefault","node","test","type","Tooltip","content","_default"],"mappings":"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"}