{"version":3,"file":"tab-nav-item.mjs","sources":["../../../components/tabs/tab-nav-item.tsx"],"sourcesContent":["import { computed, defineComponent, ref, PropType } from 'vue';\nimport { CloseIcon as TdCloseIcon } from 'tdesign-icons-vue-next';\nimport tabProps from './props';\nimport tabPanelProps from './tab-panel-props';\nimport { TdTabsProps, TdTabPanelProps } from './type';\n\n// hooks\nimport { useRipple, useGlobalIcon, usePrefixClass, useCommonClassName } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n  name: 'TTabNavItem',\n  props: {\n    index: Number,\n    active: {\n      type: Boolean,\n    },\n    theme: tabProps.theme,\n    size: tabProps.size,\n    placement: tabProps.placement,\n    label: {\n      type: null,\n    },\n    disabled: tabPanelProps.disabled,\n    removable: tabPanelProps.removable,\n    value: tabPanelProps.value,\n    onClick: Function as PropType<Function>,\n    onTabRemove: Function as PropType<TdTabsProps['onRemove']>,\n    onTabPanelRemove: Function as PropType<TdTabPanelProps['onRemove']>,\n  },\n\n  setup(props) {\n    const itemRef = ref<HTMLElement>();\n    useRipple(itemRef);\n\n    const COMPONENT_NAME = usePrefixClass('tabs__nav-item');\n    const { CloseIcon } = useGlobalIcon({ CloseIcon: TdCloseIcon });\n    const classPrefix = usePrefixClass();\n    const { STATUS, SIZE } = useCommonClassName();\n\n    const removeBtnClick = ({ e }: { e: MouseEvent }) => {\n      if (e) e.stopPropagation();\n      props.onTabRemove({ e, value: props.value, index: props.index });\n      props.onTabPanelRemove?.({ e, value: props.value });\n    };\n    const onClickNav = (e: MouseEvent) => {\n      if (props.disabled) return;\n      props.onClick(e);\n    };\n\n    const navItemClass = computed(() => {\n      return {\n        [COMPONENT_NAME.value]: true,\n        [`${classPrefix.value}-tabs__nav--card`]: props.theme === 'card',\n        [STATUS.value.disabled]: props.disabled,\n        [STATUS.value.active]: props.active,\n        [`${classPrefix.value}-is-left`]: props.placement === 'left',\n        [`${classPrefix.value}-is-right`]: props.placement === 'right',\n        [SIZE.value.medium]: props.size === 'medium',\n        [SIZE.value.large]: props.size === 'large',\n      };\n    });\n\n    const removeBtn = () =>\n      props.removable && !props.disabled ? (\n        <span onClick={(e) => removeBtnClick({ e })} class=\"remove-btn\">\n          <CloseIcon />\n        </span>\n      ) : null;\n\n    const renderCardItem = () => {\n      return (\n        <div class={navItemClass.value} onClick={onClickNav} ref={itemRef}>\n          <span class={`${COMPONENT_NAME.value}-text-wrapper`}>{props.label}</span>\n          {removeBtn()}\n        </div>\n      );\n    };\n    const renderNormalItem = () => {\n      return (\n        <div class={navItemClass.value} onClick={onClickNav}>\n          <div\n            class={[\n              `${COMPONENT_NAME.value}-wrapper`,\n              {\n                [STATUS.value.disabled]: props.disabled,\n                [STATUS.value.active]: props.active,\n              },\n            ]}\n            ref={itemRef}\n          >\n            <span class={`${COMPONENT_NAME.value}-text-wrapper`}>{props.label}</span>\n          </div>\n          {removeBtn()}\n        </div>\n      );\n    };\n\n    return () => {\n      return props.theme === 'card' ? renderCardItem() : renderNormalItem();\n    };\n  },\n});\n"],"names":["defineComponent","name","props","index","Number","active","type","Boolean","theme","tabProps","size","placement","label","disabled","tabPanelProps","removable","value","onClick","Function","onTabRemove","onTabPanelRemove","setup","itemRef","ref","useRipple","COMPONENT_NAME","usePrefixClass","_useGlobalIcon","useGlobalIcon","CloseIcon","TdCloseIcon","classPrefix","_useCommonClassName","useCommonClassName","STATUS","SIZE","removeBtnClick","_ref","_props$onTabPanelRemo","e","stopPropagation","call","onClickNav","navItemClass","computed","_defineProperty","concat","medium","large","removeBtn","_createVNode","renderCardItem","renderNormalItem"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAAeA,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,aAAA;AACNC,EAAAA,KAAO,EAAA;AACLC,IAAAA,KAAO,EAAAC,MAAA;AACPC,IAAAA,MAAQ,EAAA;AACNC,MAAAA,IAAM,EAAAC,OAAAA;KACR;IACAC,OAAOC,KAAS,CAAAD,KAAA;IAChBE,MAAMD,KAAS,CAAAC,IAAA;IACfC,WAAWF,KAAS,CAAAE,SAAA;AACpBC,IAAAA,KAAO,EAAA;AACLN,MAAAA,IAAM,EAAA,IAAA;KACR;IACAO,UAAUC,aAAc,CAAAD,QAAA;IACxBE,WAAWD,aAAc,CAAAC,SAAA;IACzBC,OAAOF,aAAc,CAAAE,KAAA;AACrBC,IAAAA,OAAS,EAAAC,QAAA;AACTC,IAAAA,WAAa,EAAAD,QAAA;AACbE,IAAAA,gBAAkB,EAAAF,QAAAA;GACpB;AAEAG,EAAAA,OAAAA,SAAAA,MAAMnB,KAAO,EAAA;AACX,IAAA,IAAMoB,UAAUC,GAAiB,EAAA,CAAA;IACjCC,SAAA,CAAUF,OAAO,CAAA,CAAA;AAEX,IAAA,IAAAG,cAAA,GAAiBC,eAAe,gBAAgB,CAAA,CAAA;IACtD,IAAAC,cAAA,GAAsBC,cAAc;AAAEC,QAAAA,SAAA,EAAWC,SAAAA;AAAY,OAAC,CAAA;MAAtDD,WAAU,GAAAF,cAAA,CAAVE,SAAU,CAAA;AAClB,IAAA,IAAME,cAAcL,cAAe,EAAA,CAAA;AACnC,IAAA,IAAAM,mBAAA,GAAyBC,kBAAmB,EAAA;MAApCC,MAAA,GAAAF,mBAAA,CAAAE,MAAA;MAAQC,IAAK,GAAAH,mBAAA,CAALG,IAAK,CAAA;AAErB,IAAA,IAAMC,cAAiB,GAAA,SAAjBA,cAAiBA,CAAAC,IAAA,EAA8B;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAAA,MAAA,IAA3BC,CAAA,GAAAF,IAAA,CAAAE,CAAA,CAAA;AACpB,MAAA,IAAAA,CAAA,EAAGA,CAAA,CAAEC,eAAgB,EAAA,CAAA;MACnBtC,KAAA,CAAAiB,WAAA,CAAY;AAAEoB,QAAAA,CAAG,EAAHA,CAAG;QAAAvB,KAAA,EAAOd,MAAMc,KAAO;QAAAb,KAAA,EAAOD,KAAM,CAAAC,KAAAA;AAAM,OAAC,CAAA,CAAA;AAC/D,MAAA,CAAAmC,qBAAA,GAAApC,KAAA,CAAMkB,kEAANkB,qBAAA,CAAAG,IAAA,CAAAvC,KAAA,EAAyB;AAAEqC,QAAAA,CAAA,EAAAA,CAAA;QAAGvB,KAAO,EAAAd,KAAA,CAAMc,KAAAA;AAAM,OAAC,CAAA,CAAA;KACpD,CAAA;AACM,IAAA,IAAA0B,UAAA,GAAa,SAAbA,UAAAA,CAAcH,CAAkB,EAAA;MACpC,IAAIrC,KAAM,CAAAW,QAAA,EAAU,OAAA;AACpBX,MAAAA,KAAA,CAAMe,QAAQsB,CAAC,CAAA,CAAA;KACjB,CAAA;AAEM,IAAA,IAAAI,YAAA,GAAeC,SAAS,YAAM;MAC3B,OAAAC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CACJpB,EAAAA,EAAAA,eAAeT,KAAQ,EAAA,IAAA,CAAA,EAAA,EAAA,CAAA8B,MAAA,CACpBf,WAAY,CAAAf,KAAA,uBAA0Bd,MAAMM,KAAU,KAAA,MAAA,CACzD0B,EAAAA,MAAA,CAAOlB,KAAM,CAAAH,QAAA,EAAWX,KAAM,CAAAW,QAAA,GAC9BqB,MAAA,CAAOlB,KAAM,CAAAX,MAAA,EAASH,KAAM,CAAAG,MAAA,MAAAyC,MAAA,CACzBf,WAAY,CAAAf,KAAA,EAAkBd,UAAAA,CAAAA,EAAAA,MAAMS,SAAc,KAAA,MAAA,CAAA,EAAA,EAAA,CAAAmC,MAAA,CAClDf,WAAY,CAAAf,KAAA,EAAA,WAAA,CAAA,EAAmBd,MAAMS,SAAc,KAAA,OAAA,CACtDwB,EAAAA,IAAA,CAAKnB,KAAM,CAAA+B,MAAA,EAAS7C,MAAMQ,IAAS,KAAA,QAAA,GACnCyB,IAAA,CAAKnB,KAAM,CAAAgC,KAAA,EAAQ9C,MAAMQ,IAAS,KAAA,OAAA,CAAA,CAAA;AAEvC,KAAC,CAAA,CAAA;AAEK,IAAA,IAAAuC,SAAA,GAAY,SAAZA,SAAAA,GAAA;MAAA,OACJ/C,KAAM,CAAAa,SAAA,IAAa,CAACb,KAAM,CAAAW,QAAA,GAAAqC,WAAA,CAAA,MAAA,EAAA;QAAA,SACT,EAAA,SAAAjC,QAACsB;iBAAMH,cAAe,CAAA;AAAEG,YAAAA,CAAE,EAAFA,CAAAA;AAAE,WAAC,CAAG,CAAA;AAAA,SAAA;AAAA,QAAA,OAAA,EAAA,YAAA;AAAA,OAAA,EAAA,CAAAW,WAAA,CAAArB,WAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,GAG3C,IAAA,CAAA;AAAA,KAAA,CAAA;AAEN,IAAA,IAAMsB,iBAAiB,SAAjBA,iBAAuB;AAC3B,MAAA,OAAAD,WAAA,CAAA,KAAA,EAAA;QAAA,OACcP,EAAAA,aAAa3B,KAAO;AAAA,QAAA,SAAA,EAAS0B;aAAiBpB,EAAAA,OAAAA;AAAA,OAAA,EAAA,CAAA4B,WAAA,CAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAJ,MAAA,CACxCrB,eAAeT,KAAuB,EAAA,eAAA,CAAA;AAAA,OAAA,EAAA,CAAAd,KAAA,CAAMU,MAC3DqC,CAAAA,EAAAA,SAAU,EAAA,CAAA,CAAA,CAAA;KAGjB,CAAA;AACA,IAAA,IAAMG,mBAAmB,SAAnBA,mBAAyB;AAC7B,MAAA,OAAAF,WAAA,CAAA,KAAA,EAAA;QAAA,OACcP,EAAAA,YAAA,CAAa3B;iBAAgB0B,EAAAA,UAAAA;AAAA,OAAA,EAAA,CAAAQ,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE9B,CAAAJ,EAAAA,CAAAA,MAAA,CACFrB,cAAe,CAAAT,KAAA,EAAA6B,UAAAA,CAAAA,EAAAA,eAAA,CAAAA,eAAA,CAEfX,EAAAA,EAAAA,MAAA,CAAOlB,KAAM,CAAAH,QAAA,EAAWX,KAAM,CAAAW,QAAA,CAAA,EAC9BqB,MAAA,CAAOlB,KAAM,CAAAX,MAAA,EAASH,KAAM,CAAAG,MAAA,CAGjC,CAAA;QAAA,KAAKiB,EAAAA,OAAAA;AAEL,OAAA,EAAA,CAAA4B,WAAA,CAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAJ,MAAA,CAAgBrB,cAAA,CAAeT,KAAuB,EAAA,eAAA,CAAA;AAAA,OAAA,EAAA,CAAAd,KAAA,CAAMU,KAAM,CAEnEqC,CAAAA,CAAAA,CAAAA,EAAAA,SAAU,EAAA,CAAA,CAAA,CAAA;KAGjB,CAAA;AAEA,IAAA,OAAO,YAAM;AACX,MAAA,OAAO/C,KAAM,CAAAM,KAAA,KAAU,MAAS,GAAA2C,cAAA,KAAmBC,gBAAiB,EAAA,CAAA;KACtE,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}