element-plus
Version:
A Component Library for Vue 3
1 lines • 4.39 kB
Source Map (JSON)
{"version":3,"file":"tab-pane.vue2.mjs","sources":["../../../../../../packages/components/tabs/src/tab-pane.vue"],"sourcesContent":["<template>\n <div\n v-if=\"shouldBeRender\"\n v-show=\"active\"\n :id=\"`pane-${paneName}`\"\n ref=\"paneRef\"\n :class=\"ns.b()\"\n role=\"tabpanel\"\n :aria-hidden=\"!active\"\n :aria-labelledby=\"`tab-${paneName}`\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onBeforeUpdate,\n reactive,\n ref,\n useSlots,\n watch,\n} from 'vue'\nimport { throwError } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\n\nimport type { TabPaneProps } from './tab-pane'\n\nconst COMPONENT_NAME = 'ElTabPane'\ndefineOptions({\n name: COMPONENT_NAME,\n})\nconst props = withDefaults(defineProps<TabPaneProps>(), {\n label: '',\n closable: undefined,\n})\n\nconst instance = getCurrentInstance()!\nconst slots = useSlots()\n\nconst tabsRoot = inject(tabsRootContextKey)\nif (!tabsRoot)\n throwError(COMPONENT_NAME, 'usage: <el-tabs><el-tab-pane /></el-tabs/>')\n\nconst ns = useNamespace('tab-pane')\n\nconst paneRef = ref<HTMLDivElement>()\nconst index = ref<string>()\nconst isClosable = computed(() => props.closable ?? tabsRoot.props.closable)\nconst active = computed(\n () => tabsRoot.currentName.value === (props.name ?? index.value)\n)\nconst loaded = ref(active.value)\nconst paneName = computed(() => props.name ?? index.value)\nconst shouldBeRender = computed(\n () => !props.lazy || loaded.value || active.value\n)\n\nconst isFocusInsidePane = () => {\n return paneRef.value?.contains(document.activeElement)\n}\n\nwatch(active, (val) => {\n if (val) loaded.value = true\n})\n\nconst pane = reactive({\n uid: instance.uid,\n getVnode: () => instance.vnode,\n slots,\n props,\n paneName,\n active,\n index,\n isClosable,\n isFocusInsidePane,\n})\n\ntabsRoot.registerPane(pane)\n\nonBeforeUnmount(() => {\n tabsRoot.unregisterPane(pane)\n})\n\nonBeforeUpdate(() => {\n if (slots.label) tabsRoot.nav$.value?.scheduleRender()\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_renderSlot"],"mappings":";;;;;;;AAiCA,MAAM,cAAA,GAAiB,WAAA;;;;;;;;AAIvB,IAAA,MAAM,KAAA,GAAQ,OAAA;AAKd,IAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,IAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,IAAA,MAAM,QAAA,GAAW,OAAO,kBAAkB,CAAA;AAC1C,IAAA,IAAI,CAAC,QAAA;AACH,MAAA,UAAA,CAAW,gBAAgB,4CAA4C,CAAA;AAEzE,IAAA,MAAM,EAAA,GAAK,aAAa,UAAU,CAAA;AAElC,IAAA,MAAM,UAAU,GAAA,EAAoB;AACpC,IAAA,MAAM,QAAQ,GAAA,EAAY;AAC1B,IAAA,MAAM,UAAA,GAAa,SAAS,MAAG;;AAAG,MAAA,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,QAAA,KAAN,IAAA,GAAA,EAAA,GAAkB,QAAA,CAAS,KAAA,CAAM,QAAA;AAAA,IAAA,CAAQ,CAAA;AAC3E,IAAA,MAAM,MAAA,GAAS,QAAA;AAAA,MACb,MAAG;;AAAG,QAAA,OAAA,QAAA,CAAS,WAAA,CAAY,KAAA,MAAA,CAAW,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,YAAc,KAAA,CAAM,KAAA,CAAA;AAAA,MAAA;AAAA,KAC5D;AACA,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA;AAC/B,IAAA,MAAM,QAAA,GAAW,SAAS,MAAG;;AAAG,MAAA,OAAA,CAAA,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,YAAc,KAAA,CAAM,KAAA;AAAA,IAAA,CAAK,CAAA;AACzD,IAAA,MAAM,cAAA,GAAiB,QAAA;AAAA,MACrB,MAAM,CAAC,KAAA,CAAM,IAAA,IAAQ,MAAA,CAAO,SAAS,MAAA,CAAO;AAAA,KAC9C;AAEA,IAAA,MAAM,oBAAoB,MAAM;;AAC9B,MAAA,OAAA,CAAO,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,QAAA,CAAS,QAAA,CAAS,aAAA,CAAA;AAAA,IAC1C,CAAA;AAEA,IAAA,KAAA,CAAM,MAAA,EAAQ,CAAC,GAAA,KAAQ;AACrB,MAAA,IAAI,GAAA,SAAY,KAAA,GAAQ,IAAA;AAAA,IAC1B,CAAC,CAAA;AAED,IAAA,MAAM,OAAO,QAAA,CAAS;AAAA,MACpB,KAAK,QAAA,CAAS,GAAA;AAAA,MACd,QAAA,EAAU,MAAM,QAAA,CAAS,KAAA;AAAA,MACzB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,aAAa,IAAI,CAAA;AAE1B,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,QAAA,CAAS,eAAe,IAAI,CAAA;AAAA,IAC9B,CAAC,CAAA;AAED,IAAA,cAAA,CAAe,MAAM;;AACnB,MAAA,IAAI,KAAA,CAAM,KAAA,EAAO,CAAA,EAAA,GAAA,QAAA,CAAS,IAAA,CAAK,UAAd,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,cAAA,EAAA;AAAA,IACxC,CAAC,CAAA;;aAzFS,eAAA,KAAA,gCADRA,mBAWM,KAAA,EAAA;AAAA;QARH,EAAA,UAAY,QAAA,CAAA,KAAQ,CAAA,CAAA;AAAA,iBACjB,SAAA;AAAA,QAAJ,GAAA,EAAI,OAAA;AAAA,QACH,OAAKC,cAAA,CAAEC,KAAA,CAAA,EAAA,CAAA,CAAG,GAAC,CAAA;AAAA,QACZ,IAAA,EAAK,UAAA;AAAA,QACJ,aAAA,GAAc,MAAA,CAAA,KAAA;AAAA,QACd,iBAAA,SAAwB,QAAA,CAAA,KAAQ,CAAA;AAAA;QAEjCC,UAAA,CAAQ,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA;gBARA,MAAA,CAAA,KAAM;AAAA;;;;;;;"}