{"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    // @ts-ignore\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      // 菜单收起，且只有本身为一级菜单才需要显示 tooltip\n      // 判断条件：菜单折叠 + 没有父级 submenu（即为一级菜单项）\n      if (collapsed.value && !submenu) {\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","Tooltip","content","_default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKoB,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAA,KAAA,UAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,IAAA,CAAAJ,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,OAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAGpB,gBAAeM,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,WAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;EACAC,KAAA,EAAO,CAAC,OAAO,CAAA;AACfC,EAAAA,KAAA,WAAAA,KAAAA,CAAMF,QAAwBG,GAAK,EAAA;AAC3B,IAAA,IAAAC,OAAA,GAAsEC,MAAA,CAAOL,MAAK,CAAA;MAAhFM,IAAM,GAAAF,OAAA,CAANE,IAAM;MAAAC,MAAA,GAAAH,OAAA,CAAAG,MAAA;MAAQC,EAAI,GAAAJ,OAAA,CAAJI,EAAI;MAAAC,QAAA,GAAAL,OAAA,CAAAK,QAAA;MAAUC,KAAO,GAAAN,OAAA,CAAPM,KAAO;MAAAC,OAAA,GAAAP,OAAA,CAAAO,OAAA;MAASC,UAAY,GAAAR,OAAA,CAAZQ,UAAY;MAAAC,OAAA,GAAAT,OAAA,CAAAS,OAAA,CAAA;AAChE,IAAA,IAAMC,cAAcC,cAAe,EAAA,CAAA;AACnC,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;AACnC,IAAA,IAAMC,gBAAgBC,UAAW,EAAA,CAAA;AAE3B,IAAA,IAAAC,IAAA,GAAOC,OAAwB,QAAQ,CAAA,CAAA;AAC7C,IAAA,IAAMC,UAAUC,GAAiB,EAAA,CAAA;AACjC,IAAA,IAAMC,WAAWC,kBAAmB,EAAA,CAAA;IAEpCC,SAAA,CAAUJ,OAAO,CAAA,CAAA;AACX,IAAA,IAAAK,OAAA,GAAUN,MAA2B,CAAA,WAAA,EAAa,IAAI,CAAA,CAAA;IAC5D,IAAMO,SAASC,QAAS,CAAA,YAAA;MAAA,OAAMT,KAAKU,WAAY,CAAApB,KAAA,KAAUV,OAAMU,KAAK,CAAA;KAAA,CAAA,CAAA;IACpE,IAAMqB,SAAY,GAAAF,QAAA,CAAS,YAAA;AAAA,MAAA,IAAAG,eAAA,CAAA;MAAA,OAAAA,CAAAA,eAAA,GAAMZ,IAAA,CAAKW,6DAALC,eAAA,CAAgBtB,KAAK,CAAA;KAAA,CAAA,CAAA;IAChD,IAAAuB,OAAA,GAAUJ,SAAS,YAAA;AAAA,MAAA,OAAM,CAAAK,EAAAA,CAAAA,MAAA,CAC1BpB,WAAY,CAAAJ,KAAA,EAAAyB,aAAAA,CAAAA,EAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAD,MAAA,CAETpB,WAAY,CAAAJ,KAAA,EAAA,YAAA,CAAA,EAAoBkB,MAAO,CAAAlB,KAAA,CAAAwB,EAAAA,EAAAA,CAAAA,MAAA,CACvCpB,WAAY,CAAAJ,KAAA,mBAAsBV,MAAM,CAAAS,QAAA,CAAA,EAAA,EAAA,CAAAyB,MAAA,CACxCpB,WAAY,CAAAJ,KAAA,EAA4B,oBAAA,CAAA,EAAA,CAACP,GAAI,CAAAiC,KAAA,CAAMC,IAAQ,IAAA,CAACrC,MAAM,CAAAqC,IAAA,CAAA,EAAA,EAAA,CAAAH,MAAA,CAClEpB,WAAY,CAAAJ,KAAA,EAAwB,gBAAA,CAAA,EAAA,CAAC,CAACiB,OAAA,IAAW,CAACP,IAAK,CAAAkB,MAAA,CAE9D,CAAA,CAAA;KAAA,CAAA,CAAA;IAED,IAAMC,SAASV,QAAS,CAAA,YAAA;AAAA,MAAA,OAAM7B,OAAMuC,MAAU,KAAAf,QAAA,KAAA,IAAA,IAAAA,QAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAA,CAAUgB,MAAMC,OAAO,CAAA,CAAA;KAAA,CAAA,CAAA;AAE/D,IAAA,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAeC,CAAkB,EAAA;MAAA,IAAAC,cAAA,EAAAC,qBAAA,CAAA;MACrCF,CAAA,CAAEG,eAAgB,EAAA,CAAA;MAClB,IAAIrC,QAAS,CAAAC,KAAA,EAAO,OAAA;AACfU,MAAAA,IAAA,CAAA2B,MAAA,CAAOrC,MAAMA,KAAK,CAAA,CAAA;AACvB,MAAA,CAAAkC,cAAA,GAAAjC,OAAA,CAAQD,gDAARkC,cAAA,CAAAhD,IAAA,CAAAe,OAAA,EAAgB;AAAEgC,QAAAA,CAAA,EAAAA,CAAA;QAAGjC,KAAO,EAAAA,KAAA,CAAMA,KAAAA;AAAM,OAAC,CAAA,CAAA;MACzC,IAAIF,EAAG,CAAAE,KAAA,IAAUE,UAAW,CAAAF,KAAA,IAASJ,KAAKI,KAAQ,EAAA;QAC1C,IAAAsC,OAAA,GAAUnC,OAAQ,CAAAH,KAAA,GAAQ,SAAY,GAAA,MAAA,CAAA;AACrC6B,QAAAA,MAAA,CAAA7B,KAAA,CAAMsC,SAASxC,EAAG,CAAAE,KAAA,IAASJ,KAAKI,KAAK,CAAA,SAAQ,CAAA,UAACuC,GAAe,EAAA;AAKhE,UAAA,IAAAA,GAAA,CAAIlD,SAAS,sBACb,IAAA,CAACkD,IAAIC,OAAQ,CAAAC,QAAA,CAAS,kDAAkD,CACxE,EAAA;AACM,YAAA,MAAAF,GAAA,CAAA;AACR,WAAA;AACF,SAAC,CAAA,CAAA;AACH,OAAA;AACAtB,MAAAA,OAAA,aAAAA,OAAA,KAAA,KAAA,CAAA,IAAA,CAAAkB,qBAAA,GAAAlB,OAAA,CAASyB,kEAATP,qBAAA,CAAAjD,IAAA,CAAA+B,OAAA,EAA4BgB,CAAC,CAAA,CAAA;KAC/B,CAAA;AAGAU,IAAAA,SAAA,CAAU,YAAM;AAAA,MAAA,IAAAC,WAAA,CAAA;AACdlC,MAAAA,IAAA,KAAAA,IAAAA,IAAAA,IAAA,KAAAkC,KAAAA,CAAAA,IAAAA,CAAAA,WAAA,GAAAlC,IAAA,CAAMmC,KAAO,MAAA,IAAA,IAAAD,WAAA,KAAbA,KAAAA,CAAAA,IAAAA,WAAA,CAAaE,GAAA,CAAAC,aAAA,CAAA;QAAM/C,KAAA,EAAOV,OAAMU,KAAO;AAAAgD,QAAAA,MAAA,EAAQ/B,OAAS,KAAA,IAAA,IAATA,OAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAAjB,KAAA;QAAOiD,OAAOxD,GAAI,CAAAiC,KAAA,CAAA,SAAA,CAAA;OAAkBpC,EAAAA,OAAO,CAAA,CAAA;AAC7F,MAAA,IAAA4D,YAAA,GAAexC,KAAKwC,YAAa,CAAAlD,KAAA,CAAA;MACnC,IAAAkD,YAAA,CAAaT,QAASnD,CAAAA,MAAAA,CAAMU,KAAK,CAAA,IAAK,CAACkD,YAAa,CAAAT,QAAA,CAASxB,OAAS,KAATA,IAAAA,IAAAA,OAAS,uBAATA,OAAS,CAAAjB,KAAK,CAAG,EAAA;QACnEkD,YAAA,CAAAC,IAAA,CAAKlC,oBAAAA,YAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAASjB,KAAK,CAAA,CAAA;AAClC,OAAA;AACF,KAAC,CAAA,CAAA;AAED,IAAA,OAAO,YAAM;AAAA,MAAA,IAAAoD,aAAA,CAAA;MACL,IAAAC,SAAA,GAAAC,WAAA,CAAA,IAAA,EAAA;AAAA,QAAA,KAAA,EACK1C;eAAgBW,EAAAA,OAAA,CAAQvB;iBAAgBgC,EAAAA,WAAAA;OAC9C1B,EAAAA,CAAAA,eAAe,MAAM,CAAA,EACrBJ,UAAA,CAAWF;gBAEFJ,IAAK,CAAAI,KAAA,GAAQJ,KAAKI,KAAQ,GAAAF,EAAA,CAAGE,yBAAQ6B,MAAO,CAAA7B,KAAA,MAAAoD,IAAAA,IAAAA,aAAA,KAAPA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAAcG,QAAQzD,EAAG,CAAAE,KAAK,EAAEJ,IAAO,GAAA,EAAA;QAAA,QAC1EC,EAAAA,MAAO,CAAAG,KAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAwB,MAAA,CACLpB,WAAA,CAAYJ;iBACb,EAAA,SAAAC,QAACgC;iBAAMA,CAAE,CAAAuB,cAAA;;;2BAEFpD,WAAA,CAAYJ;OAAwBQ,EAAAA,CAAAA,aAAc,CAAA,SAAA,EAAW,SAAS,CAAE,CAAA,CAAA,CAAA,CAAA,GAExFZ,KAAKI,KACP,GAAAsD,WAAA,CAAA,GAAA,EAAA;QAAA,MACQ1D,EAAAA,IAAA,CAAKI;gBACHH,EAAAA,MAAA,CAAOG;2BACLI,YAAYJ,KACtB,EAAA,kBAAA,CAAA;QAAA,SAAS,EAAA,SAAAC,QAACgC,CAAM,EAAA;UAAA,OAAAlC,QAAA,CAASC,SAASiC,CAAE,CAAAuB,cAAA;;;2BAEpBpD,WAAA,CAAYJ;UAAwBQ,aAAc,CAAA,SAAA,EAAW,SAAS,CAAE,OAAA8C,WAAA,CAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAA9B,MAAA,CAG1EpB,WAAY,CAAAJ,KAAA,EAAA,gBAAA,CAAA;AAAA,OAAA,EAAA,CAAwBQ,cAAc,SAAW,EAAA,SAAS,GAArF,CArBJ,CAAA,CAAA;AA4BC,MAAA,IAAAa,SAAA,CAAUrB,KAAS,IAAA,CAACiB,OAAS,EAAA;QAE7B,OAAAqC,WAAA,CAAAG,OAAA,EAAA;AAAA,UAAA,SAAA,EAAkB,SAAAC,OAAA,GAAA;AAAA,YAAA,OAAMlD,aAAA,CAAc,SAAW,EAAA,SAAS,CAAG,CAAA;AAAA,WAAA;AAAA,UAAA,WAAA,EAAA,OAAA;AAAA,SAAA,EAAA3B,OAAA,CAC1DwE,SAAA,CAAA,GAAAA,SAAA,GAAA;AAAA,UAAA,SAAA,EAAA,SAAAM,QAAA,GAAA;AAAA,YAAA,OAAA,CAAAN,SAAA,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,CAAA,CAAA;AAGP,OAAA;AACO,MAAA,OAAAA,SAAA,CAAA;KACT,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}