vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.53 kB
Source Map (JSON)
{"version":3,"file":"tab-panel.vue2.cjs","sources":["../../../components/tabs/tab-panel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, onBeforeUnmount, reactive, ref, toRef, watch } from 'vue'\n\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\nimport { tabPanelProps } from './props'\nimport { TABS_STATE } from './symbol'\n\nimport type { ItemState } from './symbol'\n\ndefineOptions({ name: 'TabPanel' })\n\nconst _props = defineProps(tabPanelProps)\nconst props = useProps('tabPanel', _props, {\n lazy: null,\n lazyLoad: null,\n})\n\nconst slots = defineSlots<{\n default?: () => any,\n label?: (params: { label: string | number }) => any,\n}>()\n\nconst tabsState = inject(TABS_STATE, null)\n\nconst nh = useNameHelper('tabs')\nconst active = ref(false)\nconst currentLabel = ref(props.label)\nconst loaded = ref(false)\n\nconst lazy = computed(() => props.lazy ?? tabsState?.lazy ?? false)\nconst lazyLoad = computed(() => props.lazyLoad ?? tabsState?.lazyLoad ?? false)\nconst className = computed(() => {\n const baseClass = nh.be('panel')\n\n return {\n [baseClass]: true,\n [`${baseClass}--disabled`]: props.disabled,\n [`${baseClass}--lazy`]: lazy.value,\n [`${baseClass}--active`]: !props.disabled && active.value,\n }\n})\n\nwatch(\n () => props.label,\n value => {\n currentLabel.value = value\n tabsState?.refreshLabels()\n },\n)\nwatch(active, value => {\n emitEvent(props.onToggle!, value)\n})\n\nif (tabsState) {\n const state = reactive({\n label: currentLabel,\n name: toRef(props, 'name'),\n icon: toRef(props, 'icon'),\n disabled: toRef(props, 'disabled'),\n closable: toRef(props, 'closable'),\n labelRenderer: null,\n }) as ItemState\n\n watch(\n () => slots.label,\n value => {\n state.labelRenderer = value ? data => value(data) : null\n },\n { immediate: true },\n )\n watch(currentLabel, () => {\n active.value = currentLabel.value === tabsState.currentActive\n })\n watch(\n () => tabsState.currentActive,\n value => {\n active.value = currentLabel.value === value\n\n if (!loaded.value && active.value) {\n loaded.value = true\n }\n },\n { immediate: true },\n )\n\n tabsState.increaseItem(state)\n\n onBeforeUnmount(() => {\n tabsState.decreaseItem(state)\n })\n}\n</script>\n\n<template>\n <div\n v-if=\"!(lazy || (lazyLoad && !loaded)) || active\"\n :class=\"className\"\n role=\"tabpanel\"\n :aria-hidden=\"!active\"\n >\n <slot></slot>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","slots","_useSlots","tabsState","inject","TABS_STATE","nh","useNameHelper","active","ref","currentLabel","loaded","lazy","computed","lazyLoad","className","baseClass","watch","value","emitEvent","state","reactive","toRef","data","onBeforeUnmount","_createElementBlock","_renderSlot","_ctx"],"mappings":"8NAWA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,WAAYH,EAAQ,CACzC,KAAM,KACN,SAAU,IAAA,CACX,EAEKI,EAAQC,EAAAA,SAAA,EAKRC,EAAYC,EAAAA,OAAOC,EAAA,WAAY,IAAI,EAEnCC,EAAKC,gBAAc,MAAM,EACzBC,EAASC,MAAI,EAAK,EAClBC,EAAeD,EAAAA,IAAIV,EAAM,KAAK,EAC9BY,EAASF,MAAI,EAAK,EAElBG,EAAOC,EAAAA,SAAS,IAAMd,EAAM,OAAQI,GAAA,YAAAA,EAAW,OAAQ,EAAK,EAC5DW,EAAWD,EAAAA,SAAS,IAAMd,EAAM,WAAYI,GAAA,YAAAA,EAAW,WAAY,EAAK,EACxEY,EAAYF,EAAAA,SAAS,IAAM,CACzB,MAAAG,EAAYV,EAAG,GAAG,OAAO,EAExB,MAAA,CACL,CAACU,CAAS,EAAG,GACb,CAAC,GAAGA,CAAS,YAAY,EAAGjB,EAAM,SAClC,CAAC,GAAGiB,CAAS,QAAQ,EAAGJ,EAAK,MAC7B,CAAC,GAAGI,CAAS,UAAU,EAAG,CAACjB,EAAM,UAAYS,EAAO,KACtD,CAAA,CACD,EAaD,GAXAS,EAAA,MACE,IAAMlB,EAAM,MACHmB,GAAA,CACPR,EAAa,MAAQQ,EACrBf,GAAA,MAAAA,EAAW,eAAc,CAE7B,EACAc,QAAMT,EAAiBU,GAAA,CACXC,YAAApB,EAAM,SAAWmB,CAAK,CAAA,CACjC,EAEGf,EAAW,CACb,MAAMiB,EAAQC,EAAAA,SAAS,CACrB,MAAOX,EACP,KAAMY,EAAAA,MAAMvB,EAAO,MAAM,EACzB,KAAMuB,EAAAA,MAAMvB,EAAO,MAAM,EACzB,SAAUuB,EAAAA,MAAMvB,EAAO,UAAU,EACjC,SAAUuB,EAAAA,MAAMvB,EAAO,UAAU,EACjC,cAAe,IAAA,CAChB,EAEDkB,EAAA,MACE,IAAMhB,EAAM,MACHiB,GAAA,CACPE,EAAM,cAAgBF,EAAgBK,GAAAL,EAAMK,CAAI,EAAI,IACtD,EACA,CAAE,UAAW,EAAK,CACpB,EACAN,EAAA,MAAMP,EAAc,IAAM,CACjBF,EAAA,MAAQE,EAAa,QAAUP,EAAU,aAAA,CACjD,EACDc,EAAA,MACE,IAAMd,EAAU,cACPe,GAAA,CACAV,EAAA,MAAQE,EAAa,QAAUQ,EAElC,CAACP,EAAO,OAASH,EAAO,QAC1BG,EAAO,MAAQ,GAEnB,EACA,CAAE,UAAW,EAAK,CACpB,EAEAR,EAAU,aAAaiB,CAAK,EAE5BI,EAAAA,gBAAgB,IAAM,CACpBrB,EAAU,aAAaiB,CAAK,CAAA,CAC7B,CAAA,cAMS,EAAAR,EAAA,OAASE,EAAA,OAAa,CAAAH,EAAA,QAAYH,EAAM,qBADlDiB,EAAAA,mBAOM,MAAA,OALH,uBAAOV,EAAS,KAAA,EACjB,KAAK,WACJ,eAAcP,EAAM,KAAA,GAErBkB,aAAaC,EAAA,OAAA,SAAA"}