@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.74 kB
Source Map (JSON)
{"version":3,"file":"breadcrumb-item.vue2.mjs","sources":["../../../components/breadcrumb/breadcrumb-item.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { inject, onBeforeUnmount, reactive, ref, watch } from 'vue'\r\n\r\nimport { emitEvent, useNameHelper } from '@vexip-ui/config'\r\nimport { isFunction } from '@vexip-ui/utils'\r\nimport { breadcrumbItemProps } from './props'\r\nimport { BREADCRUMB_STATE } from './symbol'\r\n\r\nimport type { BreadcrumbItemState, SelectEvent, SeparatorRenderFn } from './symbol'\r\n\r\ndefineOptions({ name: 'BreadcrumbItem' })\r\n\r\nconst props = defineProps(breadcrumbItemProps)\r\n\r\ndefineSlots<{\r\n default: () => any,\r\n separator: () => any,\r\n}>()\r\n\r\nconst nh = useNameHelper('breadcrumb')\r\n\r\nconst breadcrumbState = inject(BREADCRUMB_STATE, null)\r\n\r\nconst currentLabel = ref(props.label)\r\nconst separator = ref('/')\r\nconst separatorRenderer = ref<SeparatorRenderFn | null>(null)\r\n\r\nwatch(\r\n () => props.label,\r\n value => {\r\n currentLabel.value = value\r\n breadcrumbState?.refreshLabels()\r\n },\r\n)\r\n\r\nif (breadcrumbState) {\r\n const state: BreadcrumbItemState = reactive({\r\n label: currentLabel,\r\n })\r\n\r\n watch(\r\n () => breadcrumbState.separator,\r\n value => {\r\n separator.value = value\r\n },\r\n { immediate: true },\r\n )\r\n watch(\r\n () => breadcrumbState.separatorRenderer,\r\n value => {\r\n separatorRenderer.value = value\r\n },\r\n { immediate: true },\r\n )\r\n\r\n breadcrumbState.increaseItem(state)\r\n\r\n onBeforeUnmount(() => {\r\n breadcrumbState.decreaseItem(state)\r\n })\r\n}\r\n\r\nfunction handleClick() {\r\n emitEvent(props.onSelect! as SelectEvent, currentLabel.value)\r\n breadcrumbState?.handleSelect(currentLabel.value)\r\n}\r\n\r\nfunction handleSeparatorClick() {\r\n emitEvent(props.onSeparatorClick! as SelectEvent, currentLabel.value)\r\n breadcrumbState?.handleSeparatorClick(currentLabel.value)\r\n}\r\n</script>\r\n\r\n<template>\r\n <li :class=\"nh.be('item')\">\r\n <a\r\n :class=\"nh.be('label')\"\r\n tabindex=\"0\"\r\n @click=\"handleClick\"\r\n @keydown.enter=\"handleClick\"\r\n >\r\n <slot>{{ label }}</slot>\r\n </a>\r\n <span :class=\"nh.be('separator')\" role=\"separator\" @click=\"handleSeparatorClick\">\r\n <slot name=\"separator\">\r\n <Renderer\r\n v-if=\"isFunction(separatorRenderer)\"\r\n :renderer=\"separatorRenderer\"\r\n :data=\"{ label: currentLabel }\"\r\n ></Renderer>\r\n <template v-else>\r\n {{ separator }}\r\n </template>\r\n </slot>\r\n </span>\r\n </li>\r\n</template>\r\n"],"names":["props","__props","nh","useNameHelper","breadcrumbState","inject","BREADCRUMB_STATE","currentLabel","ref","separator","separatorRenderer","watch","value","state","reactive","onBeforeUnmount","handleClick","emitEvent","handleSeparatorClick","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_renderSlot","_ctx","label","isFunction","_createBlock","Renderer","_Fragment"],"mappings":";;;;;;;;;;;;AAcA,UAAMA,IAAQC,GAORC,IAAKC,EAAc,YAAY,GAE/BC,IAAkBC,EAAOC,GAAkB,IAAI,GAE/CC,IAAeC,EAAIR,EAAM,KAAK,GAC9BS,IAAYD,EAAI,GAAG,GACnBE,IAAoBF,EAA8B,IAAI;AAU5D,QARAG;AAAA,MACE,MAAMX,EAAM;AAAA,MACZ,CAASY,MAAA;AACP,QAAAL,EAAa,QAAQK,GACrBR,KAAA,QAAAA,EAAiB;AAAA,MAAc;AAAA,IAEnC,GAEIA,GAAiB;AACnB,YAAMS,IAA6BC,EAAS;AAAA,QAC1C,OAAOP;AAAA,MAAA,CACR;AAED,MAAAI;AAAA,QACE,MAAMP,EAAgB;AAAA,QACtB,CAASQ,MAAA;AACP,UAAAH,EAAU,QAAQG;AAAA,QACpB;AAAA,QACA,EAAE,WAAW,GAAK;AAAA,MACpB,GACAD;AAAA,QACE,MAAMP,EAAgB;AAAA,QACtB,CAASQ,MAAA;AACP,UAAAF,EAAkB,QAAQE;AAAA,QAC5B;AAAA,QACA,EAAE,WAAW,GAAK;AAAA,MACpB,GAEAR,EAAgB,aAAaS,CAAK,GAElCE,EAAgB,MAAM;AACpB,QAAAX,EAAgB,aAAaS,CAAK;AAAA,MAAA,CACnC;AAAA,IAAA;AAGH,aAASG,IAAc;AACX,MAAAC,EAAAjB,EAAM,UAA0BO,EAAa,KAAK,GAC3CH,KAAA,QAAAA,EAAA,aAAaG,EAAa;AAAA,IAAK;AAGlD,aAASW,IAAuB;AACpB,MAAAD,EAAAjB,EAAM,kBAAkCO,EAAa,KAAK,GACnDH,KAAA,QAAAA,EAAA,qBAAqBG,EAAa;AAAA,IAAK;2BAKxDY,EAqBK,MAAA;AAAA,MArBA,OAAKC,EAAEC,EAAEnB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,IAAA;MACfoB,EAOI,KAAA;AAAA,QAND,OAAKF,EAAEC,EAAEnB,CAAA,EAAC,GAAE,OAAA,CAAA;AAAA,QACb,UAAS;AAAA,QACR,SAAOc;AAAA,QACP,aAAeA,GAAW,CAAA,OAAA,CAAA;AAAA,MAAA;QAE3BO,EAAwBC,yBAAxB,MAAwB;AAAA,cAAfC,EAAK,KAAA,GAAA,CAAA;AAAA;;MAEhBH,EAWO,QAAA;AAAA,QAXA,OAAKF,EAAEC,EAAEnB,CAAA,EAAC,GAAE,WAAA,CAAA;AAAA,QAAe,MAAK;AAAA,QAAa,SAAOgB;AAAA,MAAA;QACzDK,EASOC,2BATP,MASO;AAAA,UAPGH,EAAAK,CAAA,EAAWhB,EAAiB,KAAA,UADpCiB,EAIYN,EAAAO,CAAA,GAAA;AAAA;YAFT,UAAUlB,EAAiB;AAAA,YAC3B,eAAeH,EAAY,MAAA;AAAA,qDAE9BY,EAEWU,GAAA,EAAA,KAAA,KAAA;AAAA,gBADNpB,EAAS,KAAA,GAAA,CAAA;AAAA;;;;;;"}