UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 6.56 kB
{"version":3,"file":"breadcrumb.vue2.cjs","sources":["../../../components/breadcrumb/breadcrumb.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { BreadcrumbItem } from '@/components/breadcrumb-item'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, provide, reactive, toRef, watch } from 'vue'\n\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\nimport { callIfFunc, debounceMinor, isNull } from '@vexip-ui/utils'\nimport { breadcrumbProps } from './props'\nimport { BREADCRUMB_STATE } from './symbol'\n\nimport type {\n BreadcrumbItemState,\n BreadcrumbOptions,\n BreadcrumbSlots,\n BreadcrumbState,\n SelectEvent,\n} from './symbol'\n\ndefineOptions({ name: 'Breadcrumb' })\n\nconst _props = defineProps(breadcrumbProps)\nconst props = useProps('breadcrumb', _props, {\n separator: '/',\n border: false,\n options: {\n default: () => [],\n static: true,\n },\n router: null,\n slots: () => ({}),\n})\n\nconst slots = defineSlots<BreadcrumbSlots>()\n\nconst nh = useNameHelper('breadcrumb')\nconst itemStates = new Set<BreadcrumbItemState>()\n\nconst className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.bs('vars')]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm('border')]: props.border,\n }\n})\nconst normalizedOptions = computed(() => {\n if (props.router && !props.options?.length) {\n const matched = props.router.currentRoute.value.matched\n const options: BreadcrumbOptions[] = []\n\n for (const route of matched) {\n const meta = (route.meta || {}) as any\n\n if (meta.menu === false) {\n continue\n }\n\n options.push({\n label: meta.label || route.path,\n name: meta.name || route.name,\n })\n }\n\n return options\n }\n\n return props.options.map(option => {\n if (typeof option === 'string') {\n return { label: option }\n }\n\n return option\n })\n})\n\nconst refreshLabels = debounceMinor(() => {\n Array.from(itemStates).forEach((item, index) => {\n if (isNull(item.label)) {\n item.label = index + 1\n }\n })\n})\n\nconst state: BreadcrumbState = reactive({\n separator: toRef(props, 'separator'),\n separatorRenderer: null,\n increaseItem,\n decreaseItem,\n handleSelect,\n refreshLabels,\n handleSeparatorClick,\n})\n\nprovide(BREADCRUMB_STATE, state)\n\nwatch(\n [() => slots.separator, () => props.slots.separator],\n ([slotValue, propValue]) => {\n state.separatorRenderer = slotValue\n ? data => slotValue(data)\n : propValue\n ? data => propValue(data)\n : null\n },\n { immediate: true },\n)\n\nfunction increaseItem(item: BreadcrumbItemState) {\n itemStates.add(item)\n refreshLabels()\n}\n\nfunction decreaseItem(item: BreadcrumbItemState) {\n itemStates.delete(item)\n refreshLabels()\n}\n\nfunction handleSelect(label: string | number) {\n emitEvent(props.onSelect as SelectEvent, label)\n}\n\nfunction handleSeparatorClick(label: string | number) {\n emitEvent(props.onSeparatorClick as SelectEvent, label)\n}\n</script>\n\n<template>\n <ol :class=\"className\">\n <slot>\n <Renderer :renderer=\"props.slots.default\">\n <BreadcrumbItem\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"option.label\"\n :label=\"option.label\"\n >\n <slot name=\"item\" :option=\"option\" :index=\"index\">\n <Renderer :renderer=\"props.slots.item\" :data=\"{ option, index }\">\n {{ option.name ? callIfFunc(option.name) : option.label }}\n </Renderer>\n </slot>\n </BreadcrumbItem>\n </Renderer>\n </slot>\n </ol>\n</template>\n"],"names":["_props","__props","props","useProps","slots","_useSlots","nh","useNameHelper","itemStates","className","computed","normalizedOptions","_a","matched","options","route","meta","option","refreshLabels","debounceMinor","item","index","isNull","state","reactive","toRef","increaseItem","decreaseItem","handleSelect","handleSeparatorClick","provide","BREADCRUMB_STATE","watch","slotValue","propValue","data","label","emitEvent","_createElementBlock","_renderSlot","_ctx","_createVNode","_unref","Renderer","_openBlock","_Fragment","_renderList","_createBlock","BreadcrumbItem","callIfFunc"],"mappings":"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"}