@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.76 kB
Source Map (JSON)
{"version":3,"file":"anchor-link.vue2.mjs","sources":["../../../components/anchor/anchor-link.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n computed,\r\n inject,\r\n onBeforeUnmount,\r\n onMounted,\r\n provide,\r\n reactive,\r\n ref,\r\n toRef,\r\n watch,\r\n} from 'vue'\r\n\r\nimport { useNameHelper } from '@vexip-ui/config'\r\nimport { anchorLinkProps } from './props'\r\nimport { ANCHOR_STATE, LINK_STATE, baseIndentWidth } from './symbol'\r\n\r\ndefineOptions({ name: 'AnchorLink' })\r\n\r\nconst props = defineProps(anchorLinkProps)\r\n\r\nconst anchorState = inject(ANCHOR_STATE, null)\r\nconst parentLinkState = inject(LINK_STATE, null)\r\n\r\nconst nh = useNameHelper('anchor')\r\nconst indent = ref(parentLinkState?.indent ? parentLinkState?.indent + 1 : 1)\r\nconst active = ref(false)\r\n\r\nconst link = ref<HTMLElement>()\r\n\r\nconst state = reactive({\r\n el: link,\r\n to: toRef(props, 'to'),\r\n active,\r\n indent,\r\n})\r\n\r\nconst linkClass = computed(() => {\r\n return {\r\n [nh.be('link')]: true,\r\n [nh.bem('link', 'active')]: state.active,\r\n }\r\n})\r\nconst linkStyle = computed(() => {\r\n return {\r\n paddingInlineStart: `${baseIndentWidth * indent.value}px`,\r\n }\r\n})\r\n\r\nprovide(LINK_STATE, state)\r\n\r\nif (anchorState) {\r\n watch(\r\n () => anchorState.currentActive,\r\n value => {\r\n active.value = value === props.to\r\n },\r\n )\r\n\r\n onMounted(() => {\r\n anchorState.increaseLink(state)\r\n })\r\n\r\n onBeforeUnmount(() => {\r\n anchorState.decreaseLink(state)\r\n })\r\n}\r\n\r\nfunction handleSelect() {\r\n if (anchorState) {\r\n anchorState.handleActive(props.to)\r\n }\r\n\r\n return false\r\n}\r\n</script>\r\n\r\n<template>\r\n <li :class=\"nh.be('item')\">\r\n <a\r\n ref=\"link\"\r\n :class=\"linkClass\"\r\n :href=\"to\"\r\n :style=\"linkStyle\"\r\n :title=\"title\"\r\n @click.prevent=\"handleSelect\"\r\n >\r\n <slot></slot>\r\n </a>\r\n <ul v-if=\"$slots.group || (children && children.length)\" :class=\"nh.be('list')\">\r\n <slot name=\"group\">\r\n <template v-if=\"children && children.length\">\r\n <AnchorLink\r\n v-for=\"child in children\"\r\n :key=\"child.to\"\r\n :to=\"child.to\"\r\n :title=\"child.title\"\r\n :children=\"child.children\"\r\n >\r\n {{ child.label }}\r\n </AnchorLink>\r\n </template>\r\n </slot>\r\n </ul>\r\n </li>\r\n</template>\r\n"],"names":["props","__props","anchorState","inject","ANCHOR_STATE","parentLinkState","LINK_STATE","nh","useNameHelper","indent","ref","active","link","state","reactive","toRef","linkClass","computed","linkStyle","baseIndentWidth","provide","watch","value","onMounted","onBeforeUnmount","handleSelect","_createElementBlock","_normalizeClass","_unref","_createElementVNode","to","title","_renderSlot","_ctx","$slots","children","_Fragment","_renderList","child","_createBlock","_component_AnchorLink","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;AAmBA,UAAMA,IAAQC,GAERC,IAAcC,EAAOC,GAAc,IAAI,GACvCC,IAAkBF,EAAOG,GAAY,IAAI,GAEzCC,IAAKC,EAAc,QAAQ,GAC3BC,IAASC,EAAIL,KAAA,QAAAA,EAAiB,UAASA,KAAA,gBAAAA,EAAiB,UAAS,IAAI,CAAC,GACtEM,IAASD,EAAI,EAAK,GAElBE,IAAOF,EAAiB,GAExBG,IAAQC,EAAS;AAAA,MACrB,IAAIF;AAAA,MACJ,IAAIG,EAAMf,GAAO,IAAI;AAAA,MACrB,QAAAW;AAAA,MACA,QAAAF;AAAA,IAAA,CACD,GAEKO,IAAYC,EAAS,OAClB;AAAA,MACL,CAACV,EAAG,GAAG,MAAM,CAAC,GAAG;AAAA,MACjB,CAACA,EAAG,IAAI,QAAQ,QAAQ,CAAC,GAAGM,EAAM;AAAA,IACpC,EACD,GACKK,IAAYD,EAAS,OAClB;AAAA,MACL,oBAAoB,GAAGE,IAAkBV,EAAO,KAAK;AAAA,IACvD,EACD;AAED,IAAAW,EAAQd,GAAYO,CAAK,GAErBX,MACFmB;AAAA,MACE,MAAMnB,EAAY;AAAA,MAClB,CAASoB,MAAA;AACA,QAAAX,EAAA,QAAQW,MAAUtB,EAAM;AAAA,MAAA;AAAA,IAEnC,GAEAuB,EAAU,MAAM;AACd,MAAArB,EAAY,aAAaW,CAAK;AAAA,IAAA,CAC/B,GAEDW,EAAgB,MAAM;AACpB,MAAAtB,EAAY,aAAaW,CAAK;AAAA,IAAA,CAC/B;AAGH,aAASY,IAAe;AACtB,aAAIvB,KACUA,EAAA,aAAaF,EAAM,EAAE,GAG5B;AAAA,IAAA;;;kBAKP0B,EA0BK,MAAA;AAAA,QA1BA,OAAKC,EAAEC,EAAErB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,MAAA;QACfsB,EASI,KAAA;AAAA,mBARE;AAAA,UAAJ,KAAIjB;AAAA,UACH,SAAOI,EAAS,KAAA;AAAA,UAChB,MAAMc,EAAE;AAAA,UACR,SAAOZ,EAAS,KAAA;AAAA,UAChB,OAAOa,EAAK;AAAA,UACZ,WAAeN,GAAY,CAAA,SAAA,CAAA;AAAA,QAAA;UAE5BO,EAAaC,EAAA,QAAA,SAAA;AAAA,QAAA;QAELC,EAAAA,OAAO,SAAUC,cAAYA,EAAAA,SAAS,eAAhDT,EAcK,MAAA;AAAA;UAdqD,OAAKC,EAAEC,EAAErB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,QAAA;UACpEyB,EAYOC,uBAZP,MAYO;AAAA,YAXWE,EAAQ,YAAIA,EAAQ,SAAC,iBACnCT,EAQaU,GAAA,EAAA,KAAA,EAAA,GAAAC,EAPKF,EAAQ,UAAA,CAAjBG,YADTC,EAQaC,GAAA;AAAA,cANV,KAAKF,EAAM;AAAA,cACX,IAAIA,EAAM;AAAA,cACV,OAAOA,EAAM;AAAA,cACb,UAAUA,EAAM;AAAA,YAAA;yBAEjB,MAAiB;AAAA,gBAAdG,EAAAC,EAAAJ,EAAM,KAAK,GAAA,CAAA;AAAA,cAAA;;;;;;;;;"}