vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.48 kB
Source Map (JSON)
{"version":3,"file":"anchor-link.vue2.cjs","sources":["../../../components/anchor/anchor-link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n toRef,\n watch,\n} from 'vue'\n\nimport { useNameHelper } from '@vexip-ui/config'\nimport { anchorLinkProps } from './props'\nimport { ANCHOR_STATE, LINK_STATE, baseIndentWidth } from './symbol'\n\ndefineOptions({ name: 'AnchorLink' })\n\nconst props = defineProps(anchorLinkProps)\n\nconst anchorState = inject(ANCHOR_STATE, null)\nconst parentLinkState = inject(LINK_STATE, null)\n\nconst nh = useNameHelper('anchor')\nconst indent = ref(parentLinkState?.indent ? parentLinkState?.indent + 1 : 1)\nconst active = ref(false)\n\nconst link = ref<HTMLElement>()\n\nconst state = reactive({\n el: link,\n to: toRef(props, 'to'),\n active,\n indent,\n})\n\nconst linkClass = computed(() => {\n return {\n [nh.be('link')]: true,\n [nh.bem('link', 'active')]: state.active,\n }\n})\nconst linkStyle = computed(() => {\n return {\n paddingInlineStart: `${baseIndentWidth * indent.value}px`,\n }\n})\n\nprovide(LINK_STATE, state)\n\nif (anchorState) {\n watch(\n () => anchorState.currentActive,\n value => {\n active.value = value === props.to\n },\n )\n\n onMounted(() => {\n anchorState.increaseLink(state)\n })\n\n onBeforeUnmount(() => {\n anchorState.decreaseLink(state)\n })\n}\n\nfunction handleSelect() {\n if (anchorState) {\n anchorState.handleActive(props.to)\n }\n\n return false\n}\n</script>\n\n<template>\n <li :class=\"nh.be('item')\">\n <a\n ref=\"link\"\n :class=\"linkClass\"\n :href=\"to\"\n :style=\"linkStyle\"\n :title=\"title\"\n @click.prevent=\"handleSelect\"\n >\n <slot></slot>\n </a>\n <ul v-if=\"$slots.group || (children && children.length)\" :class=\"nh.be('list')\">\n <slot name=\"group\">\n <template v-if=\"children && children.length\">\n <AnchorLink\n v-for=\"child in children\"\n :key=\"child.to\"\n :to=\"child.to\"\n :title=\"child.title\"\n :children=\"child.children\"\n >\n {{ child.label }}\n </AnchorLink>\n </template>\n </slot>\n </ul>\n </li>\n</template>\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":"qOAmBA,MAAMA,EAAQC,EAERC,EAAcC,EAAAA,OAAOC,EAAA,aAAc,IAAI,EACvCC,EAAkBF,EAAAA,OAAOG,EAAA,WAAY,IAAI,EAEzCC,EAAKC,gBAAc,QAAQ,EAC3BC,EAASC,EAAI,IAAAL,GAAA,MAAAA,EAAiB,QAASA,GAAA,YAAAA,EAAiB,QAAS,EAAI,CAAC,EACtEM,EAASD,MAAI,EAAK,EAElBE,EAAOF,EAAAA,IAAiB,EAExBG,EAAQC,EAAAA,SAAS,CACrB,GAAIF,EACJ,GAAIG,EAAAA,MAAMf,EAAO,IAAI,EACrB,OAAAW,EACA,OAAAF,CAAA,CACD,EAEKO,EAAYC,EAAAA,SAAS,KAClB,CACL,CAACV,EAAG,GAAG,MAAM,CAAC,EAAG,GACjB,CAACA,EAAG,IAAI,OAAQ,QAAQ,CAAC,EAAGM,EAAM,MACpC,EACD,EACKK,EAAYD,EAAAA,SAAS,KAClB,CACL,mBAAoB,GAAGE,EAAAA,gBAAkBV,EAAO,KAAK,IACvD,EACD,EAEDW,EAAA,QAAQd,aAAYO,CAAK,EAErBX,IACFmB,EAAA,MACE,IAAMnB,EAAY,cACToB,GAAA,CACAX,EAAA,MAAQW,IAAUtB,EAAM,EAAA,CAEnC,EAEAuB,EAAAA,UAAU,IAAM,CACdrB,EAAY,aAAaW,CAAK,CAAA,CAC/B,EAEDW,EAAAA,gBAAgB,IAAM,CACpBtB,EAAY,aAAaW,CAAK,CAAA,CAC/B,GAGH,SAASY,GAAe,CACtB,OAAIvB,GACUA,EAAA,aAAaF,EAAM,EAAE,EAG5B,EAAA,gFAKP0B,EAAA,mBA0BK,KAAA,CA1BA,MAAKC,EAAE,eAAAC,EAAA,MAAErB,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GACfsB,EAAAA,mBASI,IAAA,SARE,OAAJ,IAAIjB,EACH,uBAAOI,EAAS,KAAA,EAChB,KAAMc,EAAE,GACR,uBAAOZ,EAAS,KAAA,EAChB,MAAOa,EAAK,MACZ,wBAAeN,EAAY,CAAA,SAAA,CAAA,CAAA,GAE5BO,aAAaC,EAAA,OAAA,SAAA,CAAA,QAELC,EAAAA,OAAO,OAAUC,YAAYA,EAAAA,SAAS,sBAAhDT,EAAAA,mBAcK,KAAA,OAdqD,MAAKC,EAAE,eAAAC,EAAA,MAAErB,CAAA,EAAC,GAAE,MAAA,CAAA,CAAA,GACpEyB,EAAAA,WAYOC,oBAZP,IAYO,CAXWE,EAAQ,UAAIA,EAAQ,SAAC,wBACnCT,EAAAA,mBAQaU,EAAAA,SAAA,CAAA,IAAA,CAAA,EAAAC,aAPKF,EAAQ,SAAjBG,kBADTC,EAAA,YAQaC,EAAA,CANV,IAAKF,EAAM,GACX,GAAIA,EAAM,GACV,MAAOA,EAAM,MACb,SAAUA,EAAM,QAAA,qBAEjB,IAAiB,CAAdG,EAAAA,gBAAAC,EAAA,gBAAAJ,EAAM,KAAK,EAAA,CAAA,CAAA"}