@robot-admin/naive-ui-components 0.6.4 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/C_Breadcrumb-BnOGXsSX.css.map +1 -0
  2. package/dist/C_Breadcrumb-DKBofJky.css.map +1 -0
  3. package/dist/C_Breadcrumb.css +16 -3
  4. package/dist/C_Breadcrumb.js.map +1 -1
  5. package/dist/C_Breadcrumb2.js +1 -1
  6. package/dist/C_Breadcrumb2.js.map +1 -1
  7. package/dist/constants.d.ts +2 -2
  8. package/dist/constants2.d.ts +3 -3
  9. package/dist/constants3.d.ts +1 -1
  10. package/dist/constants4.d.ts +5 -5
  11. package/dist/constants5.d.ts +2 -2
  12. package/dist/data.d.ts +1 -1
  13. package/dist/index11.vue.d.ts +4 -4
  14. package/dist/index13.vue.d.ts +4 -4
  15. package/dist/index15.vue.d.ts +3 -3
  16. package/dist/index17.vue.d.ts +1 -1
  17. package/dist/index19.vue.d.ts +2 -2
  18. package/dist/index2.vue.d.ts +3 -3
  19. package/dist/index3.vue.d.ts +3 -1
  20. package/dist/index4.vue.d.ts +2 -2
  21. package/dist/index7.vue.d.ts +3 -3
  22. package/dist/index8.vue.d.ts +3 -3
  23. package/dist/index9.vue.d.ts +3 -3
  24. package/dist/style.css +17 -4
  25. package/dist/useCalendarEvents.d.ts +2 -2
  26. package/dist/useCollapsePanel.d.ts +4 -4
  27. package/dist/useCropperCore.d.ts +5 -5
  28. package/dist/useDraggableLayout.d.ts +8 -8
  29. package/dist/useDynamicFormState.d.ts +4 -4
  30. package/dist/useEdgeInteraction.d.ts +2 -2
  31. package/dist/useGlobalSearch.d.ts +1 -1
  32. package/dist/useInfiniteScroll.d.ts +2 -2
  33. package/dist/useModalEdit.d.ts +2 -2
  34. package/dist/useQRCode.d.ts +4 -4
  35. package/dist/useSignatureHistory.d.ts +4 -4
  36. package/dist/useSplitResize.d.ts +8 -8
  37. package/dist/useTimeSelection.d.ts +2 -2
  38. package/dist/useTreeOperations.d.ts +4 -4
  39. package/dist/useWorkflowValidation.d.ts +1 -1
  40. package/package.json +1 -1
  41. package/dist/C_Breadcrumb-D55Jd2CK.css.map +0 -1
  42. package/dist/C_Breadcrumb-mBL4CWps.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Breadcrumb-BnOGXsSX.css","names":[],"sources":["../src/components/C_Breadcrumb/index.vue?vue&type=style&index=0&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.c-breadcrumb {\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n display: flex;\n align-items: center;\n height: 100%;\n}\n.c-breadcrumb__trigger, .c-breadcrumb__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n}\n.c-breadcrumb .c-icon {\n flex-shrink: 0;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Breadcrumb-DKBofJky.css","names":[],"sources":["../src/components/C_Breadcrumb/index.vue?vue&type=style&index=0&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.c-breadcrumb {\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n display: flex;\n align-items: center;\n height: 100%;\n}\n.c-breadcrumb__trigger, .c-breadcrumb__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n}\n.c-breadcrumb .c-icon {\n flex-shrink: 0;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,7 +1,20 @@
1
- /* unplugin-vue-components disabled */.c-breadcrumb__trigger, .c-breadcrumb__link {
1
+ /* unplugin-vue-components disabled */.c-breadcrumb {
2
+ --c-breadcrumb-icon-size: 16px;
3
+ --c-breadcrumb-gap: 4px;
4
+ --c-breadcrumb-font-size: inherit;
5
+ display: flex;
6
+ align-items: center;
7
+ height: 100%;
8
+ }
9
+ .c-breadcrumb__trigger, .c-breadcrumb__link {
2
10
  display: inline-flex;
3
11
  align-items: center;
4
- gap: 4px;
12
+ gap: var(--c-breadcrumb-gap);
13
+ font-size: var(--c-breadcrumb-font-size);
14
+ line-height: 1;
15
+ }
16
+ .c-breadcrumb .c-icon {
17
+ flex-shrink: 0;
5
18
  }
6
19
 
7
- /*# sourceMappingURL=C_Breadcrumb-D55Jd2CK.css.map*/
20
+ /*# sourceMappingURL=C_Breadcrumb-BnOGXsSX.css.map*/
@@ -1 +1 @@
1
- {"version":3,"file":"C_Breadcrumb.js","names":["showIcon"],"sources":["../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n","<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n"],"mappings":"+XEqEE,IAAM,EAAQ,EAoBR,EAAO,EAKP,GAAA,EAAA,EAAA,WAAiB,CAEjB,EAAe,GACnB,EAAM,eAAiB,EAAM,eAAe,EAAM,CAAG,EAGjD,GAAA,EAAA,EAAA,cACG,EAAM,QACV,OAAQ,GAAgB,EAAO,MAAM,MAAK,CAC1C,IAAK,IAAiB,CACrB,IAAK,EAAO,KACZ,MAAO,EAAa,EAAO,KAAK,OAAS,GAAc,CACvD,KAAM,EAAO,KAAK,KAClB,SAAU,EAAO,UAAU,OACvB,EAAO,SAAS,IAAK,IAAgB,CACnC,IAAK,EAAM,KACX,MAAO,EAAa,EAAM,MAAM,OAAS,GAAc,CACvD,GAAI,EAAM,UAAU,QAAU,CAC5B,SAAU,EAAM,SAAS,IAAK,IAAqB,CACjD,IAAK,EAAW,KAChB,MAAO,EAAa,EAAW,MAAM,OAAS,GAAc,CAC7D,EAAE,CACJ,CACF,EAAC,CACF,EAAE,CACP,EAAC,CACL,CAEK,GAAA,EAAA,EAAA,cACE,EAAM,OAAS,EAAe,MACtC,CAEM,EAAgB,GAAgB,CACpC,EAAK,SAAU,EAAG,uHArEd,MAhCN,EAgCM,EAAA,EAAA,EAAA,aADU,EAAA,KAAA,2BA5B8B,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,EAAA,oBA2BxB,EAAA,SAAA,MAAA,EAAA,EAAA,YA3BQ,EAAA,OAAhB,EAAM,yCA2BE,EAAA,CA1Bf,IAAK,EAAK,CAAA,2BAiBb,CAdU,EAAK,UAAU,SAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAWX,EAAA,OAVT,QAAS,EAAK,SACd,SAAQ,8BAQH,EAAA,EAAA,EAAA,oBAAA,MANN,EAMM,CAJIA,EAAAA,WAAAA,EAAAA,EAAAA,YAAAA,EAAAA,EAAAA,EAAAA,cAAAA,EAAAA,EAAAA,OAEN,EAAA,EAAA,CAAA,OADC,KAAM,EAAK,kFACZ,KAAA,EAAA,EAAA,iBACC,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,qEAaV,OAAA,OARL,MAAM,qBACL,QAAK,GAAE,EAAa,EAAK,IAAG,GAGrBA,EAAAA,WAAAA,EAAAA,EAAAA,YAAAA,EAAAA,EAAAA,EAAAA,cAAAA,EAAAA,EAAAA,OAEN,EAAA,EAAA,CAAA,OADC,KAAM,EAAK,kFACZ,KAAA,EAAA,EAAA,iBACC,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"C_Breadcrumb.js","names":["iconSize","showIcon"],"sources":["../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n","<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n"],"mappings":"6WE6EE,IAAM,EAAQ,EAuBR,EAAO,EAKP,GAAA,EAAA,EAAA,WAAiB,CAEjB,EAAe,GACnB,EAAM,eAAiB,EAAM,eAAe,EAAM,CAAG,EAGjD,GAAA,EAAA,EAAA,cACG,EAAM,QACV,OAAQ,GAAgB,EAAO,MAAM,MAAK,CAC1C,IAAK,IAAiB,CACrB,IAAK,EAAO,KACZ,MAAO,EAAa,EAAO,KAAK,OAAS,GAAc,CACvD,KAAM,EAAO,KAAK,KAClB,SAAU,EAAO,UAAU,OACvB,EAAO,SAAS,IAAK,IAAgB,CACnC,IAAK,EAAM,KACX,MAAO,EAAa,EAAM,MAAM,OAAS,GAAc,CACvD,GAAI,EAAM,UAAU,QAAU,CAC5B,SAAU,EAAM,SAAS,IAAK,IAAqB,CACjD,IAAK,EAAW,KAChB,MAAO,EAAa,EAAW,MAAM,OAAS,GAAc,CAC7D,EAAE,CACJ,CACF,EAAC,CACF,EAAE,CACP,EAAC,CACL,CAEK,GAAA,EAAA,EAAA,cACE,EAAM,OAAS,EAAe,MACtC,CAEM,EAAgB,GAAgB,CACpC,EAAK,SAAU,EAAG,uHAxEd,MAAA,CAvCJ,MAAM,8BACL,OAAA,EAAA,EAAA,gBAAK,+BAAyCA,EAAAA,SAAQ,4BAAqC,KAAK,IAAI,KAAK,MAAMA,EAAAA,SAAQ,EAAA,CAAA,EAAA,CAAA,0BAqC1G,EAAA,KAAA,2BA9B8B,GAAA,EAAA,EAAA,WAAA,GAAA,EAAA,EAAA,EAAA,oBA6BxB,EAAA,SAAA,MAAA,EAAA,EAAA,YA7BQ,EAAA,OAAhB,EAAM,yCA6BE,EAAA,CA5Bf,IAAK,EAAK,CAAA,2BAkBb,CAfU,EAAK,UAAU,SAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,aAYX,EAAA,OAXT,QAAS,EAAK,SACd,SAAQ,8BASH,EAAA,EAAA,EAAA,oBAAA,MAPN,EAOM,CALIC,EAAAA,WAAAA,EAAAA,EAAAA,YAAAA,EAAAA,EAAAA,EAAAA,cAAAA,EAAAA,EAAAA,OAGN,EAAA,EAAA,CAAA,OAFC,KAAM,EAAK,KACX,KAAMD,EAAAA,6FACP,KAAA,EAAA,EAAA,iBACC,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,qEAcV,OAAA,OATL,MAAM,qBACL,QAAK,GAAE,EAAa,EAAK,IAAG,GAGrBC,EAAAA,WAAAA,EAAAA,EAAAA,YAAAA,EAAAA,EAAAA,EAAAA,cAAAA,EAAAA,EAAAA,OAGN,EAAA,EAAA,CAAA,OAFC,KAAM,EAAK,KACX,KAAMD,EAAAA,6FACP,KAAA,EAAA,EAAA,iBACC,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./C_Icon2.js";import{NBreadcrumb as t,NBreadcrumbItem as n,NDropdown as r}from"naive-ui";import{Fragment as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,openBlock as p,renderList as m,toDisplayString as h,unref as g,withCtx as _}from"vue";import{useRoute as v}from"vue-router";const y={class:`c-breadcrumb flex-1 min-w-0`},b={class:`c-breadcrumb__trigger`},x=[`onClick`];var S=f({name:`C_Breadcrumb`,__name:`index`,props:{items:{},showIcon:{type:Boolean,default:!0},labelFormatter:{}},emits:[`select`],setup(f,{emit:S}){let C=f,w=S,T=v(),E=e=>C.labelFormatter?C.labelFormatter(e):e,D=a(()=>T.matched.filter(e=>e.meta?.title).map(e=>({key:e.path,label:E(e.meta.title||``),icon:e.meta.icon,children:e.children?.length?e.children.map(e=>({key:e.path,label:E(e.meta?.title||``),...e.children?.length&&{children:e.children.map(e=>({key:e.path,label:E(e.meta?.title||``)}))}})):[]}))),O=a(()=>C.items??D.value),k=e=>{w(`select`,e)};return(a,f)=>{let v=r,S=n,C=t;return p(),c(`div`,y,[d(C,null,{default:_(()=>[(p(!0),c(i,null,m(O.value,(t,n)=>(p(),o(S,{key:n},{default:_(()=>[t.children?.length?(p(),o(v,{key:0,options:t.children,onSelect:k},{default:_(()=>[l(`div`,b,[a.showIcon?(p(),o(g(e),{key:0,name:t.icon},null,8,[`name`])):s(`v-if`,!0),u(` `+h(t.label),1)])]),_:2},1032,[`options`])):(p(),c(`span`,{key:1,class:`c-breadcrumb__link`,onClick:e=>k(t.key)},[a.showIcon?(p(),o(g(e),{key:0,name:t.icon},null,8,[`name`])):s(`v-if`,!0),u(` `+h(t.label),1)],8,x))]),_:2},1024))),128))]),_:1})])}}});export{S as t};
1
+ import{t as e}from"./C_Icon2.js";import{NBreadcrumb as t,NBreadcrumbItem as n,NDropdown as r}from"naive-ui";import{Fragment as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,normalizeStyle as p,openBlock as m,renderList as h,toDisplayString as g,unref as _,withCtx as v}from"vue";import{useRoute as y}from"vue-router";const b={class:`c-breadcrumb__trigger`},x=[`onClick`];var S=f({name:`C_Breadcrumb`,__name:`index`,props:{items:{},showIcon:{type:Boolean,default:!0},iconSize:{default:16},labelFormatter:{}},emits:[`select`],setup(f,{emit:S}){let C=f,w=S,T=y(),E=e=>C.labelFormatter?C.labelFormatter(e):e,D=a(()=>T.matched.filter(e=>e.meta?.title).map(e=>({key:e.path,label:E(e.meta.title||``),icon:e.meta.icon,children:e.children?.length?e.children.map(e=>({key:e.path,label:E(e.meta?.title||``),...e.children?.length&&{children:e.children.map(e=>({key:e.path,label:E(e.meta?.title||``)}))}})):[]}))),O=a(()=>C.items??D.value),k=e=>{w(`select`,e)};return(a,f)=>{let y=r,S=n,C=t;return m(),c(`div`,{class:`c-breadcrumb flex-1 min-w-0`,style:p({"--c-breadcrumb-icon-size":`${a.iconSize}px`,"--c-breadcrumb-gap":`${Math.max(Math.round(a.iconSize/4),2)}px`})},[d(C,null,{default:v(()=>[(m(!0),c(i,null,h(O.value,(t,n)=>(m(),o(S,{key:n},{default:v(()=>[t.children?.length?(m(),o(y,{key:0,options:t.children,onSelect:k},{default:v(()=>[l(`div`,b,[a.showIcon?(m(),o(_(e),{key:0,name:t.icon,size:a.iconSize},null,8,[`name`,`size`])):s(`v-if`,!0),u(` `+g(t.label),1)])]),_:2},1032,[`options`])):(m(),c(`span`,{key:1,class:`c-breadcrumb__link`,onClick:e=>k(t.key)},[a.showIcon?(m(),o(_(e),{key:0,name:t.icon,size:a.iconSize},null,8,[`name`,`size`])):s(`v-if`,!0),u(` `+g(t.label),1)],8,x))]),_:2},1024))),128))]),_:1})],4)}}});export{S as t};
2
2
  //# sourceMappingURL=C_Breadcrumb2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C_Breadcrumb2.js","names":["showIcon"],"sources":["../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n","<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div class=\"c-breadcrumb flex-1 min-w-0\">\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n }\n</style>\n"],"mappings":"kpBEqEE,IAAM,EAAQ,EAoBR,EAAO,EAKP,EAAQ,GAAS,CAEjB,EAAe,GACnB,EAAM,eAAiB,EAAM,eAAe,EAAM,CAAG,EAGjD,EAAiB,MACd,EAAM,QACV,OAAQ,GAAgB,EAAO,MAAM,MAAK,CAC1C,IAAK,IAAiB,CACrB,IAAK,EAAO,KACZ,MAAO,EAAa,EAAO,KAAK,OAAS,GAAc,CACvD,KAAM,EAAO,KAAK,KAClB,SAAU,EAAO,UAAU,OACvB,EAAO,SAAS,IAAK,IAAgB,CACnC,IAAK,EAAM,KACX,MAAO,EAAa,EAAM,MAAM,OAAS,GAAc,CACvD,GAAI,EAAM,UAAU,QAAU,CAC5B,SAAU,EAAM,SAAS,IAAK,IAAqB,CACjD,IAAK,EAAW,KAChB,MAAO,EAAa,EAAW,MAAM,OAAS,GAAc,CAC7D,EAAE,CACJ,CACF,EAAC,CACF,EAAE,CACP,EAAC,CACL,CAEK,EAAkB,MAChB,EAAM,OAAS,EAAe,MACtC,CAEM,EAAgB,GAAgB,CACpC,EAAK,SAAU,EAAG,2CArGpB,EAgCM,MAhCN,EAgCM,CA/BJ,EA8Bc,EAAA,KAAA,eA5B8B,EAAA,EAAA,GAAA,CAD1C,EA4BkB,EAAA,KAAA,EA3BQ,EAAA,OAAhB,EAAM,SADhB,EA4BkB,EAAA,CA1Bf,IAAK,EAAK,CAAA,eAiBb,CAdU,EAAK,UAAU,QAAA,GAAA,CADvB,EAYY,EAAA,OAVT,QAAS,EAAK,SACd,SAAQ,kBAQH,CANN,EAMM,MANN,EAMM,CAJIA,EAAAA,UAAAA,GAAAA,CADR,EAGE,EAAA,EAAA,CAAA,OADC,KAAM,EAAK,uCACZ,IACF,EAAG,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,8BAGjB,EAUO,OAAA,OARL,MAAM,qBACL,QAAK,GAAE,EAAa,EAAK,IAAG,GAGrBA,EAAAA,UAAAA,GAAAA,CADR,EAGE,EAAA,EAAA,CAAA,OADC,KAAM,EAAK,uCACZ,IACF,EAAG,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"C_Breadcrumb2.js","names":["iconSize","showIcon"],"sources":["../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue","../src/components/C_Breadcrumb/index.vue"],"sourcesContent":["/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n","/* unplugin-vue-components disabled */<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n","<!--\n * @Description: 通用面包屑组件 — 基于 NBreadcrumb 的路由面包屑导航\n *\n * 支持两种模式:\n * 1. 自动模式(默认)— 从 `route.matched` 自动生成面包屑\n * 2. 手动模式 — 传入 `items` 完全自定义\n *\n * @example 自动模式(零配置)\n * ```vue\n * <C_Breadcrumb\n * :label-formatter=\"$t\"\n * @select=\"router.push\"\n * />\n * ```\n *\n * @example 手动模式\n * ```vue\n * <C_Breadcrumb\n * :items=\"customBreadcrumbs\"\n * @select=\"handleSelect\"\n * />\n * ```\n *\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\n-->\n<template>\n <div\n class=\"c-breadcrumb flex-1 min-w-0\"\n :style=\"{\n '--c-breadcrumb-icon-size': `${iconSize}px`,\n '--c-breadcrumb-gap': `${Math.max(Math.round(iconSize / 4), 2)}px`,\n }\"\n >\n <NBreadcrumb>\n <NBreadcrumbItem\n v-for=\"(item, index) in breadcrumbItems\"\n :key=\"index\"\n >\n <NDropdown\n v-if=\"item.children?.length\"\n :options=\"item.children\"\n @select=\"handleSelect\"\n >\n <div class=\"c-breadcrumb__trigger\">\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </div>\n </NDropdown>\n <span\n v-else\n class=\"c-breadcrumb__link\"\n @click=\"handleSelect(item.key)\"\n >\n <C_Icon\n v-if=\"showIcon\"\n :name=\"item.icon\"\n :size=\"iconSize\"\n />\n {{ item.label }}\n </span>\n </NBreadcrumbItem>\n </NBreadcrumb>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useRoute } from 'vue-router'\n import { C_Icon } from '../C_Icon'\n import type { BreadcrumbItem } from '../_shared'\n\n defineOptions({ name: 'C_Breadcrumb' })\n\n const props = withDefaults(\n defineProps<{\n /**\n * 手动传入面包屑数据\n * 不传时自动从 `route.matched` 生成(零配置)\n */\n items?: BreadcrumbItem[]\n /** 是否显示图标 */\n showIcon?: boolean\n /** 图标大小 (px),默认 16 */\n iconSize?: number\n /**\n * 标签文本格式化函数(用于 i18n)\n * 仅在自动模式下生效\n */\n labelFormatter?: (label: string) => string\n }>(),\n {\n showIcon: true,\n iconSize: 16,\n }\n )\n\n const emit = defineEmits<{\n /** 面包屑项被选中(返回路径 key) */\n select: [path: string]\n }>()\n\n const route = useRoute()\n\n const formatLabel = (title: string): string =>\n props.labelFormatter ? props.labelFormatter(title) : title\n\n /** 从 route.matched 自动生成面包屑 */\n const autoBreadcrumb = computed<BreadcrumbItem[]>(() => {\n return route.matched\n .filter((record: any) => record.meta?.title)\n .map((record: any) => ({\n key: record.path,\n label: formatLabel((record.meta.title || '') as string),\n icon: record.meta.icon as string | undefined,\n children: record.children?.length\n ? record.children.map((child: any) => ({\n key: child.path,\n label: formatLabel((child.meta?.title || '') as string),\n ...(child.children?.length && {\n children: child.children.map((grandChild: any) => ({\n key: grandChild.path,\n label: formatLabel((grandChild.meta?.title || '') as string),\n })),\n }),\n }))\n : [],\n }))\n })\n\n const breadcrumbItems = computed<BreadcrumbItem[]>(\n () => props.items ?? autoBreadcrumb.value\n )\n\n const handleSelect = (key: string) => {\n emit('select', key)\n }\n</script>\n\n<style lang=\"scss\">\n .c-breadcrumb {\n // 暴露 CSS 变量,方便主项目覆盖\n --c-breadcrumb-icon-size: 16px;\n --c-breadcrumb-gap: 4px;\n --c-breadcrumb-font-size: inherit;\n\n display: flex;\n align-items: center;\n height: 100%;\n\n &__trigger,\n &__link {\n display: inline-flex;\n align-items: center;\n gap: var(--c-breadcrumb-gap);\n font-size: var(--c-breadcrumb-font-size);\n line-height: 1;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n }\n</style>\n"],"mappings":"opBE6EE,IAAM,EAAQ,EAuBR,EAAO,EAKP,EAAQ,GAAS,CAEjB,EAAe,GACnB,EAAM,eAAiB,EAAM,eAAe,EAAM,CAAG,EAGjD,EAAiB,MACd,EAAM,QACV,OAAQ,GAAgB,EAAO,MAAM,MAAK,CAC1C,IAAK,IAAiB,CACrB,IAAK,EAAO,KACZ,MAAO,EAAa,EAAO,KAAK,OAAS,GAAc,CACvD,KAAM,EAAO,KAAK,KAClB,SAAU,EAAO,UAAU,OACvB,EAAO,SAAS,IAAK,IAAgB,CACnC,IAAK,EAAM,KACX,MAAO,EAAa,EAAM,MAAM,OAAS,GAAc,CACvD,GAAI,EAAM,UAAU,QAAU,CAC5B,SAAU,EAAM,SAAS,IAAK,IAAqB,CACjD,IAAK,EAAW,KAChB,MAAO,EAAa,EAAW,MAAM,OAAS,GAAc,CAC7D,EAAE,CACJ,CACF,EAAC,CACF,EAAE,CACP,EAAC,CACL,CAEK,EAAkB,MAChB,EAAM,OAAS,EAAe,MACtC,CAEM,EAAgB,GAAgB,CACpC,EAAK,SAAU,EAAG,2CAhHpB,EAwCM,MAAA,CAvCJ,MAAM,8BACL,MAAK,EAAA,+BAAyCA,EAAAA,SAAQ,4BAAqC,KAAK,IAAI,KAAK,MAAMA,EAAAA,SAAQ,EAAA,CAAA,EAAA,CAAA,QAKxH,EAgCc,EAAA,KAAA,eA9B8B,EAAA,EAAA,GAAA,CAD1C,EA8BkB,EAAA,KAAA,EA7BQ,EAAA,OAAhB,EAAM,SADhB,EA8BkB,EAAA,CA5Bf,IAAK,EAAK,CAAA,eAkBb,CAfU,EAAK,UAAU,QAAA,GAAA,CADvB,EAaY,EAAA,OAXT,QAAS,EAAK,SACd,SAAQ,kBASH,CAPN,EAOM,MAPN,EAOM,CALIC,EAAAA,UAAAA,GAAAA,CADR,EAIE,EAAA,EAAA,CAAA,OAFC,KAAM,EAAK,KACX,KAAMD,EAAAA,kDACP,IACF,EAAG,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,8BAGjB,EAWO,OAAA,OATL,MAAM,qBACL,QAAK,GAAE,EAAa,EAAK,IAAG,GAGrBC,EAAAA,UAAAA,GAAAA,CADR,EAIE,EAAA,EAAA,CAAA,OAFC,KAAM,EAAK,KACX,KAAMD,EAAAA,kDACP,IACF,EAAG,EAAK,MAAK,CAAA,EAAA,CAAA,CAAA,EAAA,EAAA,EAAA,CAAA"}
@@ -118,12 +118,12 @@ declare const __VLS_export: vue.DefineComponent<CronProps, {
118
118
  onChange?: ((value: string) => any) | undefined;
119
119
  "onValidation-change"?: ((result: CronValidation) => any) | undefined;
120
120
  }>, {
121
- height: string | number;
122
121
  modelValue: string;
123
122
  disabled: boolean;
123
+ height: string | number;
124
+ showPreview: boolean;
124
125
  previewCount: number;
125
126
  showTemplates: boolean;
126
- showPreview: boolean;
127
127
  showSecond: boolean;
128
128
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
129
129
  declare const _default: typeof __VLS_export;
@@ -120,14 +120,14 @@ declare const __VLS_export: vue.DefineComponent<FormulaEditorProps, FormulaEdito
120
120
  onChange?: ((value: string) => any) | undefined;
121
121
  "onValidation-change"?: ((result: FormulaValidation) => any) | undefined;
122
122
  }>, {
123
- height: string | number;
124
123
  modelValue: string;
125
- placeholder: string;
126
124
  disabled: boolean;
127
- showPreview: boolean;
125
+ placeholder: string;
126
+ height: string | number;
128
127
  variables: FormulaVariable[];
129
128
  functions: FormulaFunction[];
130
129
  sampleData: Record<string, number | string | boolean>;
130
+ showPreview: boolean;
131
131
  showKeyboard: boolean;
132
132
  showVariablePanel: boolean;
133
133
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -168,8 +168,8 @@ declare const __VLS_export: vue.DefineComponent<NotificationCenterProps, Notific
168
168
  onNewMessage?: ((message: NotificationMessage) => any) | undefined;
169
169
  onNavigate?: ((url: string) => any) | undefined;
170
170
  }>, {
171
- storageKey: string;
172
171
  pageSize: number;
172
+ storageKey: string;
173
173
  desktopNotification: boolean;
174
174
  maxBadgeCount: number;
175
175
  pollingInterval: number;
@@ -196,31 +196,31 @@ type __VLS_Slots = {} & {
196
196
  area?: (props: typeof __VLS_11) => any;
197
197
  };
198
198
  declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
199
+ success: (file: UploadFileItem, response: any) => any;
199
200
  error: (file: UploadFileItem, error: Error) => any;
200
201
  change: (fileList: UploadFileItem[]) => any;
201
- success: (file: UploadFileItem, response: any) => any;
202
202
  progress: (file: UploadFileItem, percent: number) => any;
203
203
  remove: (file: UploadFileItem) => any;
204
204
  finish: (fileList: UploadFileItem[]) => any;
205
205
  exceed: (files: File[], fileList: UploadFileItem[]) => any;
206
206
  }, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{
207
+ onSuccess?: ((file: UploadFileItem, response: any) => any) | undefined;
207
208
  onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
208
209
  onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
209
- onSuccess?: ((file: UploadFileItem, response: any) => any) | undefined;
210
210
  onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
211
211
  onRemove?: ((file: UploadFileItem) => any) | undefined;
212
212
  onFinish?: ((fileList: UploadFileItem[]) => any) | undefined;
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
215
  disabled: boolean;
216
- multiple: boolean;
217
- data: Record<string, any>;
218
216
  draggable: boolean;
219
- maxSize: number;
217
+ data: Record<string, any>;
218
+ multiple: boolean;
220
219
  action: string;
221
220
  headers: Record<string, string>;
222
221
  directory: boolean;
223
222
  accept: string;
223
+ maxSize: number;
224
224
  maxCount: number;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
@@ -260,8 +260,8 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
260
260
  //#region src/components/C_VideoPlayer/index.vue.d.ts
261
261
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
262
262
  error: (error: Error) => any;
263
- ended: () => any;
264
263
  ready: () => any;
264
+ ended: () => any;
265
265
  stateChange: (state: PlayerState) => any;
266
266
  timeUpdate: (currentTime: number, duration: number) => any;
267
267
  qualityChange: (quality: QualityLevel) => any;
@@ -273,8 +273,8 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
273
273
  progressUpdate: (data: ProgressData) => any;
274
274
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
275
275
  onError?: ((error: Error) => any) | undefined;
276
- onEnded?: (() => any) | undefined;
277
276
  onReady?: (() => any) | undefined;
277
+ onEnded?: (() => any) | undefined;
278
278
  onStateChange?: ((state: PlayerState) => any) | undefined;
279
279
  onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
280
280
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
package/dist/data.d.ts CHANGED
@@ -22,9 +22,9 @@ declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue
22
22
  onReady?: ((map: any) => any) | undefined;
23
23
  onMarkerClick?: ((marker: MapMarker$1, event: any) => any) | undefined;
24
24
  }>, {
25
+ center: [number, number];
25
26
  height: string;
26
27
  zoom: number;
27
- center: [number, number];
28
28
  markers: MapMarker$1[];
29
29
  amapKey: string;
30
30
  mapType: "osm" | "amap";
@@ -49,14 +49,13 @@ declare const __VLS_export: vue.DefineComponent<IconProps, {
49
49
  onClick?: ((event: MouseEvent) => any) | undefined;
50
50
  onLoad?: (() => any) | undefined;
51
51
  }>, {
52
+ size: number | string;
52
53
  type: "iconify" | "unocss" | "component" | "svg" | "image";
54
+ title: string;
53
55
  name: string | any;
54
- size: number | string;
55
56
  color: string;
56
- loading: boolean;
57
57
  flip: "horizontal" | "vertical" | "both";
58
- rotate: number;
59
- title: string;
58
+ loading: boolean;
60
59
  svgPath: string;
61
60
  viewBox: string;
62
61
  alt: string;
@@ -64,6 +63,7 @@ declare const __VLS_export: vue.DefineComponent<IconProps, {
64
63
  fallbackIcon: string;
65
64
  ariaLabel: string;
66
65
  customClass: string;
66
+ rotate: number;
67
67
  componentProps: Record<string, any>;
68
68
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
69
69
  declare const _default: typeof __VLS_export;
@@ -58,12 +58,13 @@ declare const __VLS_export: vue.DefineComponent<Props, {
58
58
  "onAuto-save"?: ((text: string) => any) | undefined;
59
59
  "onMax-length-exceeded"?: ((currentLength: number, maxLength: number) => any) | undefined;
60
60
  }>, {
61
- height: string | number;
62
61
  modelValue: string;
63
- placeholder: string;
64
62
  disabled: boolean;
65
- autoSave: boolean;
63
+ placeholder: string;
64
+ height: string | number;
66
65
  mode: "edit" | "editable" | "preview";
66
+ autoSave: boolean;
67
+ isDark: boolean;
67
68
  tocNavPosition: "left" | "right";
68
69
  defaultFullscreen: boolean;
69
70
  autofocus: boolean;
@@ -73,7 +74,6 @@ declare const __VLS_export: vue.DefineComponent<Props, {
73
74
  maxLength: number;
74
75
  showWordCount: boolean;
75
76
  autoSaveInterval: number;
76
- isDark: boolean;
77
77
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
78
78
  declare const _default: typeof __VLS_export;
79
79
  //#endregion
@@ -34,13 +34,13 @@ type __VLS_Slots = {} & {
34
34
  indicator?: (props: typeof __VLS_9) => any;
35
35
  };
36
36
  declare const __VLS_base: vue.DefineComponent<Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<Props> & Readonly<{}>, {
37
- status: "default" | "success" | "error" | "warning" | "info";
38
- strokeWidth: number;
39
- time: number;
40
37
  percentage: number | number[];
41
38
  isAnimation: boolean;
39
+ time: number;
42
40
  indicatorPlacement: "inside" | "outside";
43
41
  showIndicator: boolean;
42
+ status: "default" | "success" | "error" | "warning" | "info";
43
+ strokeWidth: number;
44
44
  unit: string;
45
45
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
46
46
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -76,10 +76,10 @@ declare const __VLS_export: vue.DefineComponent<__VLS_Props, {
76
76
  onClose?: ((fallbackPath: string) => any) | undefined;
77
77
  onCloseAll?: (() => any) | undefined;
78
78
  }>, {
79
- persistKey: string;
80
79
  homePath: string;
81
80
  homeTitle: string;
82
81
  homeIcon: string;
82
+ persistKey: string;
83
83
  contextMenuLabels: ContextMenuLabels;
84
84
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
85
85
  declare const _default: typeof __VLS_export;
@@ -647,12 +647,12 @@ declare const __VLS_export: vue.DefineComponent<Props, {
647
647
  onTaskClick?: ((task: GanttTask, event: Event) => any) | undefined;
648
648
  onTaskChange?: ((task: GanttTask, changes: any) => any) | undefined;
649
649
  }>, {
650
+ title: string;
650
651
  height: string | number;
651
652
  theme: "light" | "dark";
652
- options: GanttOptions;
653
653
  data: GanttTask[];
654
- title: string;
655
654
  showToolbar: boolean;
655
+ options: GanttOptions;
656
656
  preset: GanttPreset;
657
657
  showFullscreenButton: boolean;
658
658
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -20,16 +20,16 @@ declare const __VLS_export: vue.DefineComponent<Props, {}, {}, {}, {}, vue.Compo
20
20
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
21
21
  onError?: ((error: Error) => any) | undefined;
22
22
  }>, {
23
- format: "CODE128" | "CODE39" | "EAN13" | "EAN8" | "UPC" | "ITF14" | "MSI" | "pharmacode";
24
- width: number;
23
+ label: string;
25
24
  height: number;
25
+ width: number;
26
+ format: "CODE128" | "CODE39" | "EAN13" | "EAN8" | "UPC" | "ITF14" | "MSI" | "pharmacode";
26
27
  showText: boolean;
27
28
  fontSize: number;
28
29
  textPosition: "bottom" | "top";
29
30
  lineColor: string;
30
31
  background: string;
31
32
  showBorder: boolean;
32
- label: string;
33
33
  showLabel: boolean;
34
34
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
35
35
  declare const _default: typeof __VLS_export;
@@ -8,7 +8,8 @@ type __VLS_Props = {
8
8
  * 不传时自动从 `route.matched` 生成(零配置)
9
9
  */
10
10
  items?: BreadcrumbItem[]; /** 是否显示图标 */
11
- showIcon?: boolean;
11
+ showIcon?: boolean; /** 图标大小 (px),默认 16 */
12
+ iconSize?: number;
12
13
  /**
13
14
  * 标签文本格式化函数(用于 i18n)
14
15
  * 仅在自动模式下生效
@@ -21,6 +22,7 @@ declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue
21
22
  onSelect?: ((path: string) => any) | undefined;
22
23
  }>, {
23
24
  showIcon: boolean;
25
+ iconSize: number;
24
26
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
25
27
  declare const _default: typeof __VLS_export;
26
28
  //#endregion
@@ -18,19 +18,19 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
18
18
  reset: () => void;
19
19
  show: () => void;
20
20
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
21
- change: (valid: boolean) => any;
22
21
  success: (data: {
23
22
  token: string;
24
23
  timestamp: number;
25
24
  }) => any;
25
+ change: (valid: boolean) => any;
26
26
  reset: () => any;
27
27
  fail: (error: string) => any;
28
28
  }, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
29
- onChange?: ((valid: boolean) => any) | undefined;
30
29
  onSuccess?: ((data: {
31
30
  token: string;
32
31
  timestamp: number;
33
32
  }) => any) | undefined;
33
+ onChange?: ((valid: boolean) => any) | undefined;
34
34
  onReset?: (() => any) | undefined;
35
35
  onFail?: ((error: string) => any) | undefined;
36
36
  }>, {
@@ -25,20 +25,20 @@ declare const __VLS_export: vue.DefineComponent<Props, {
25
25
  copyCode: typeof copyCode;
26
26
  toggleFullscreen: typeof toggleFullscreen;
27
27
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
28
- copy: (code: string) => any;
29
28
  click: (event: MouseEvent) => any;
29
+ copy: (code: string) => any;
30
30
  fullscreen: (isFullscreen: boolean) => any;
31
31
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
32
- onCopy?: ((code: string) => any) | undefined;
33
32
  onClick?: ((event: MouseEvent) => any) | undefined;
33
+ onCopy?: ((code: string) => any) | undefined;
34
34
  onFullscreen?: ((isFullscreen: boolean) => any) | undefined;
35
35
  }>, {
36
36
  trim: boolean;
37
- wordWrap: boolean;
38
37
  code: string;
39
38
  language: string;
40
39
  showHeader: boolean;
41
40
  showLineNumbers: boolean;
41
+ wordWrap: boolean;
42
42
  showFullscreen: boolean;
43
43
  autoLoadLanguage: boolean;
44
44
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -25,22 +25,22 @@ declare const __VLS_export: vue.DefineComponent<Props, {
25
25
  endDate: vue.Ref<DateValue, DateValue>;
26
26
  clearAll: () => void;
27
27
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
28
- change: (value: number | [number, number] | null) => any;
29
28
  "update:singleDate": (value: DateValue) => any;
30
29
  "update:singleDateTime": (value: DateValue) => any;
31
30
  "update:dateRange": (value: DateRangeValue) => any;
32
31
  "update:dateTimeRange": (value: DateRangeValue) => any;
33
32
  "update:smartRange": (value: DateRangeValue) => any;
33
+ change: (value: number | [number, number] | null) => any;
34
34
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
35
- onChange?: ((value: number | [number, number] | null) => any) | undefined;
36
35
  "onUpdate:singleDate"?: ((value: DateValue) => any) | undefined;
37
36
  "onUpdate:singleDateTime"?: ((value: DateValue) => any) | undefined;
38
37
  "onUpdate:dateRange"?: ((value: DateRangeValue) => any) | undefined;
39
38
  "onUpdate:dateTimeRange"?: ((value: DateRangeValue) => any) | undefined;
40
39
  "onUpdate:smartRange"?: ((value: DateRangeValue) => any) | undefined;
40
+ onChange?: ((value: number | [number, number] | null) => any) | undefined;
41
41
  }>, {
42
- placeholder: string;
43
42
  disabled: boolean;
43
+ placeholder: string;
44
44
  mode: DatePickerMode;
45
45
  startPlaceholder: string;
46
46
  endPlaceholder: string;
@@ -28,12 +28,12 @@ declare const __VLS_export: vue.DefineComponent<Props, {
28
28
  "onEditor-mounted"?: ((editor: any) => any) | undefined;
29
29
  "onEditor-change"?: ((html: string) => any) | undefined;
30
30
  }>, {
31
- height: number;
32
31
  modelValue: string;
33
- placeholder: string;
34
32
  disabled: boolean;
35
- theme: "light" | "dark";
33
+ placeholder: string;
36
34
  readonly: boolean;
35
+ height: number;
36
+ theme: "light" | "dark";
37
37
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
38
38
  declare const _default: typeof __VLS_export;
39
39
  //#endregion
package/dist/style.css CHANGED
@@ -655,14 +655,27 @@ html.dark .action-divider[data-v-f5b5f258]:hover {
655
655
 
656
656
  /*# sourceMappingURL=C_Barcode-DYDRDe2O.css.map*/
657
657
 
658
- /* --- C_Breadcrumb-D55Jd2CK.css --- */
659
- /* unplugin-vue-components disabled */.c-breadcrumb__trigger, .c-breadcrumb__link {
658
+ /* --- C_Breadcrumb-BnOGXsSX.css --- */
659
+ /* unplugin-vue-components disabled */.c-breadcrumb {
660
+ --c-breadcrumb-icon-size: 16px;
661
+ --c-breadcrumb-gap: 4px;
662
+ --c-breadcrumb-font-size: inherit;
663
+ display: flex;
664
+ align-items: center;
665
+ height: 100%;
666
+ }
667
+ .c-breadcrumb__trigger, .c-breadcrumb__link {
660
668
  display: inline-flex;
661
669
  align-items: center;
662
- gap: 4px;
670
+ gap: var(--c-breadcrumb-gap);
671
+ font-size: var(--c-breadcrumb-font-size);
672
+ line-height: 1;
673
+ }
674
+ .c-breadcrumb .c-icon {
675
+ flex-shrink: 0;
663
676
  }
664
677
 
665
- /*# sourceMappingURL=C_Breadcrumb-D55Jd2CK.css.map*/
678
+ /*# sourceMappingURL=C_Breadcrumb-BnOGXsSX.css.map*/
666
679
 
667
680
  /* --- C_Captcha-9_hk6VmY.css --- */
668
681
  /* unplugin-vue-components disabled */.c-captcha-modern[data-v-a4319836] {
@@ -66,9 +66,9 @@ declare const __VLS_export: vue.DefineComponent<CalendarProps, CalendarExpose, {
66
66
  }) => any) | undefined;
67
67
  "onEvent-dropped"?: ((event: Partial<CalendarEvent>) => any) | undefined;
68
68
  }>, {
69
- editable: boolean;
70
- initialView: CalendarViewType;
71
69
  events: CalendarEvent[];
70
+ initialView: CalendarViewType;
71
+ editable: boolean;
72
72
  showAddDialog: boolean;
73
73
  showEditDialog: boolean;
74
74
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -69,22 +69,22 @@ declare var __VLS_7: `header-${string}`, __VLS_8: {
69
69
  type __VLS_Slots = {} & { [K in NonNullable<typeof __VLS_7>]?: (props: typeof __VLS_8) => any } & { [K in NonNullable<typeof __VLS_16>]?: (props: typeof __VLS_17) => any } & { [K in NonNullable<typeof __VLS_31>]?: (props: typeof __VLS_32) => any };
70
70
  declare const __VLS_base: vue.DefineComponent<Props, CollapsePanelExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
71
71
  change: (activeKeys: string[]) => any;
72
- collapse: (key: string) => any;
73
72
  "update:activeKeys": (keys: string[]) => any;
74
73
  expand: (key: string) => any;
74
+ collapse: (key: string) => any;
75
75
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
76
76
  onChange?: ((activeKeys: string[]) => any) | undefined;
77
- onCollapse?: ((key: string) => any) | undefined;
78
77
  "onUpdate:activeKeys"?: ((keys: string[]) => any) | undefined;
79
78
  onExpand?: ((key: string) => any) | undefined;
79
+ onCollapse?: ((key: string) => any) | undefined;
80
80
  }>, {
81
- bordered: boolean;
81
+ persistKey: string;
82
82
  activeKeys: string[];
83
83
  defaultActiveKeys: string[];
84
84
  accordion: boolean;
85
85
  variant: CollapsePanelVariant;
86
86
  expandIconPosition: ExpandIconPosition;
87
- persistKey: string;
87
+ bordered: boolean;
88
88
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
89
89
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
90
90
  declare const _default: typeof __VLS_export;
@@ -52,22 +52,22 @@ interface ImageCropperEmits {
52
52
  //#region src/components/C_ImageCropper/index.vue.d.ts
53
53
  declare const __VLS_export: vue.DefineComponent<ImageCropperProps, ImageCropperExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
54
54
  error: (error: Event) => any;
55
- cancel: () => any;
56
55
  ready: () => any;
56
+ cancel: () => any;
57
57
  crop: (result: any) => any;
58
58
  confirm: (result: any) => any;
59
59
  }, string, vue.PublicProps, Readonly<ImageCropperProps> & Readonly<{
60
60
  onError?: ((error: Event) => any) | undefined;
61
- onCancel?: (() => any) | undefined;
62
61
  onReady?: (() => any) | undefined;
62
+ onCancel?: (() => any) | undefined;
63
63
  onCrop?: ((result: any) => any) | undefined;
64
64
  onConfirm?: ((result: any) => any) | undefined;
65
65
  }>, {
66
- height: string | number;
67
66
  disabled: boolean;
68
- aspectRatio: number;
69
- showPreview: boolean;
67
+ height: string | number;
70
68
  showToolbar: boolean;
69
+ showPreview: boolean;
70
+ aspectRatio: number;
71
71
  src: string;
72
72
  outputFormat: CropOutputFormat;
73
73
  outputQuality: number;
@@ -119,16 +119,9 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
119
119
  sort: boolean;
120
120
  modelValue: DraggableItem[];
121
121
  disabled: boolean;
122
- delay: number;
123
- layout: LayoutMode;
124
122
  group: string | GroupOptions;
125
- alignItems: AlignItems;
126
- direction: "vertical" | "horizontal";
127
- flexWrap: boolean;
128
- justifyContent: JustifyContent;
129
123
  animation: number;
130
- gap: string | number;
131
- itemClass: string;
124
+ delay: number;
132
125
  handle: string;
133
126
  showHandle: boolean;
134
127
  ghostClass: string;
@@ -136,12 +129,19 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
136
129
  dragClass: string;
137
130
  wrapperClass: string;
138
131
  listClass: string;
132
+ itemClass: string;
139
133
  showEmptyState: boolean;
140
134
  emptyText: string;
141
135
  swapThreshold: number;
142
136
  invertSwap: boolean;
137
+ direction: "vertical" | "horizontal";
138
+ layout: LayoutMode;
143
139
  gridColumns: number;
144
140
  gridRows: number;
141
+ gap: string | number;
142
+ flexWrap: boolean;
143
+ justifyContent: JustifyContent;
144
+ alignItems: AlignItems;
145
145
  customStyles: Record<string, string | number>;
146
146
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
147
147
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1296,6 +1296,8 @@ declare const useDynamicFormState: () => {
1296
1296
  readonly rules?: readonly {
1297
1297
  readonly type?: RuleType | undefined;
1298
1298
  readonly required?: boolean | undefined;
1299
+ readonly level?: "warning" | "error" | undefined;
1300
+ readonly key?: string | undefined;
1299
1301
  readonly options?: {
1300
1302
  readonly suppressWarning?: boolean | undefined;
1301
1303
  readonly suppressValidatorError?: boolean | undefined;
@@ -1929,9 +1931,7 @@ declare const useDynamicFormState: () => {
1929
1931
  }[] | undefined;
1930
1932
  readonly transform?: ((value: Value) => Value) | undefined;
1931
1933
  readonly message?: string | ((a?: string) => string) | undefined;
1932
- readonly key?: string | undefined;
1933
1934
  readonly renderMessage?: (() => vue.VNodeChild) | undefined;
1934
- readonly level?: "warning" | "error" | undefined;
1935
1935
  readonly validator: NonNullable<naive_ui0.FormItemRule["validator"]>;
1936
1936
  }[] | undefined;
1937
1937
  readonly attrs?: {
@@ -3573,6 +3573,8 @@ declare const useDynamicFormState: () => {
3573
3573
  readonly rules?: readonly {
3574
3574
  readonly type?: RuleType | undefined;
3575
3575
  readonly required?: boolean | undefined;
3576
+ readonly level?: "warning" | "error" | undefined;
3577
+ readonly key?: string | undefined;
3576
3578
  readonly options?: {
3577
3579
  readonly suppressWarning?: boolean | undefined;
3578
3580
  readonly suppressValidatorError?: boolean | undefined;
@@ -4206,9 +4208,7 @@ declare const useDynamicFormState: () => {
4206
4208
  }[] | undefined;
4207
4209
  readonly transform?: ((value: Value) => Value) | undefined;
4208
4210
  readonly message?: string | ((a?: string) => string) | undefined;
4209
- readonly key?: string | undefined;
4210
4211
  readonly renderMessage?: (() => vue.VNodeChild) | undefined;
4211
- readonly level?: "warning" | "error" | undefined;
4212
4212
  readonly validator: NonNullable<naive_ui0.FormItemRule["validator"]>;
4213
4213
  }[] | undefined;
4214
4214
  }[];
@@ -259,10 +259,10 @@ declare const __VLS_export: vue.DefineComponent<Props, {
259
259
  onReady?: ((graph: any) => any) | undefined;
260
260
  "onData-change"?: ((data: DiagramData) => any) | undefined;
261
261
  }>, {
262
- width: string | number;
262
+ readonly: boolean;
263
263
  height: string | number;
264
264
  theme: "light" | "dark";
265
- readonly: boolean;
265
+ width: string | number;
266
266
  showToolbar: boolean;
267
267
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
268
268
  declare const _default: typeof __VLS_export;
@@ -50,8 +50,8 @@ declare const __VLS_export: vue.DefineComponent<Props, {
50
50
  openDialog: () => Promise<void>;
51
51
  closeDialog: () => void;
52
52
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<Props> & Readonly<{}>, {
53
- placeholder: string;
54
53
  emptyText: string;
54
+ placeholder: string;
55
55
  resultGroupTitle: string;
56
56
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
57
57
  declare const _default: typeof __VLS_export;
@@ -89,10 +89,10 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
89
89
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
90
90
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
91
91
  }>, {
92
+ gap: number;
93
+ columns: number;
92
94
  loading: boolean;
93
95
  animationDuration: number;
94
- columns: number;
95
- gap: number;
96
96
  infinite: boolean;
97
97
  lazy: boolean;
98
98
  skeleton: boolean;
@@ -591,7 +591,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
591
591
  };
592
592
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
593
593
  cancel: (rowData: DataRecord, rowIndex: number) => any;
594
- save: (rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any;
595
594
  "pagination-change": (...args: unknown[]) => any;
596
595
  "row-delete": (...args: unknown[]) => any;
597
596
  "expand-change": (expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any;
@@ -599,6 +598,7 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
599
598
  "child-selection-change": (parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any;
600
599
  "parent-child-link-change": (parentKey: DataTableRowKey$1, shouldSelect: boolean) => any;
601
600
  "update:data": (data: DataRecord[]) => any;
601
+ save: (rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any;
602
602
  "row-add": (newRow: DataRecord) => any;
603
603
  "row-copy": (originalRow: DataRecord, newRow: DataRecord) => any;
604
604
  "row-move": (row: DataRecord, fromIndex: number, toIndex: number) => any;
@@ -607,7 +607,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
607
607
  "column-change": (columns: TableColumn[]) => any;
608
608
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
609
609
  onCancel?: ((rowData: DataRecord, rowIndex: number) => any) | undefined;
610
- onSave?: ((rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
611
610
  "onPagination-change"?: ((...args: unknown[]) => any) | undefined;
612
611
  "onRow-delete"?: ((...args: unknown[]) => any) | undefined;
613
612
  "onExpand-change"?: ((expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any) | undefined;
@@ -615,6 +614,7 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
615
614
  "onChild-selection-change"?: ((parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any) | undefined;
616
615
  "onParent-child-link-change"?: ((parentKey: DataTableRowKey$1, shouldSelect: boolean) => any) | undefined;
617
616
  "onUpdate:data"?: ((data: DataRecord[]) => any) | undefined;
617
+ onSave?: ((rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
618
618
  "onRow-add"?: ((newRow: DataRecord) => any) | undefined;
619
619
  "onRow-copy"?: ((originalRow: DataRecord, newRow: DataRecord) => any) | undefined;
620
620
  "onRow-move"?: ((row: DataRecord, fromIndex: number, toIndex: number) => any) | undefined;
@@ -50,13 +50,13 @@ declare const __VLS_export: vue.DefineComponent<Props, QRCodeExpose, {}, {}, {},
50
50
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
51
51
  onError?: ((error: Error) => any) | undefined;
52
52
  }>, {
53
- showBorder: boolean;
54
- label: string;
55
- showLabel: boolean;
56
53
  size: number;
54
+ label: string;
57
55
  color: string;
58
- margin: number;
56
+ showBorder: boolean;
57
+ showLabel: boolean;
59
58
  mode: RenderMode;
59
+ margin: number;
60
60
  bgColor: string;
61
61
  errorCorrectionLevel: ErrorCorrectionLevel;
62
62
  logo: LogoOptions;
@@ -91,26 +91,26 @@ interface SignatureEmits {
91
91
  //#endregion
92
92
  //#region src/components/C_Signature/index.vue.d.ts
93
93
  declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
94
- change: (data: SignatureStroke[]) => any;
95
94
  clear: () => any;
95
+ change: (data: SignatureStroke[]) => any;
96
96
  "start-draw": () => any;
97
97
  drawing: (point: SignaturePoint) => any;
98
98
  "end-draw": (stroke: SignatureStroke) => any;
99
99
  undo: () => any;
100
100
  redo: () => any;
101
101
  }, string, vue.PublicProps, Readonly<SignatureProps> & Readonly<{
102
- onChange?: ((data: SignatureStroke[]) => any) | undefined;
103
102
  onClear?: (() => any) | undefined;
103
+ onChange?: ((data: SignatureStroke[]) => any) | undefined;
104
104
  "onStart-draw"?: (() => any) | undefined;
105
105
  onDrawing?: ((point: SignaturePoint) => any) | undefined;
106
106
  "onEnd-draw"?: ((stroke: SignatureStroke) => any) | undefined;
107
107
  onUndo?: (() => any) | undefined;
108
108
  onRedo?: (() => any) | undefined;
109
109
  }>, {
110
- width: number | string;
111
- height: number | string;
112
110
  disabled: boolean;
113
111
  readonly: boolean;
112
+ height: number | string;
113
+ width: number | string;
114
114
  showToolbar: boolean;
115
115
  maxHistory: number;
116
116
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -66,24 +66,24 @@ type __VLS_Slots = {} & {
66
66
  second?: (props: typeof __VLS_13) => any;
67
67
  };
68
68
  declare const __VLS_base: vue.DefineComponent<Props, SplitPaneExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
69
- resize: (firstSize: number, secondSize: number) => any;
70
- collapse: (target: CollapseTarget) => any;
71
- expand: (target: CollapseTarget) => any;
72
69
  "drag-start": (size: number) => any;
73
70
  "drag-end": (size: number) => any;
71
+ expand: (target: CollapseTarget) => any;
72
+ collapse: (target: CollapseTarget) => any;
73
+ resize: (firstSize: number, secondSize: number) => any;
74
74
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
75
- onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
76
- onCollapse?: ((target: CollapseTarget) => any) | undefined;
77
- onExpand?: ((target: CollapseTarget) => any) | undefined;
78
75
  "onDrag-start"?: ((size: number) => any) | undefined;
79
76
  "onDrag-end"?: ((size: number) => any) | undefined;
77
+ onExpand?: ((target: CollapseTarget) => any) | undefined;
78
+ onCollapse?: ((target: CollapseTarget) => any) | undefined;
79
+ onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
80
80
  }>, {
81
81
  disabled: boolean;
82
- step: number;
83
82
  direction: SplitDirection;
83
+ step: number;
84
+ maxSize: number;
84
85
  defaultSize: number;
85
86
  minSize: number;
86
- maxSize: number;
87
87
  collapsible: boolean;
88
88
  showCollapseButton: boolean;
89
89
  gutterSize: number;
@@ -48,12 +48,12 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
48
48
  "onChange-start"?: ((time: number | null) => any) | undefined;
49
49
  "onChange-end"?: ((time: number | null) => any) | undefined;
50
50
  }>, {
51
- format: string;
52
51
  placeholder: string;
53
- attrs: Record<string, any>;
52
+ format: string;
54
53
  mode: TimeMode;
55
54
  startPlaceholder: string;
56
55
  endPlaceholder: string;
56
+ attrs: Record<string, any>;
57
57
  useHours: boolean;
58
58
  useMinutes: boolean;
59
59
  useSeconds: boolean;
@@ -102,16 +102,16 @@ declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {},
102
102
  "onNode-drop"?: ((info: DropInfo) => any) | undefined;
103
103
  onRefresh?: (() => any) | undefined;
104
104
  }>, {
105
- labelField: string;
106
- childrenField: string;
105
+ draggable: boolean;
106
+ showToolbar: boolean;
107
107
  mode: TreeMode;
108
+ labelField: string;
108
109
  keyField: string;
110
+ childrenField: string;
109
111
  searchPattern: string;
110
112
  searchable: boolean;
111
113
  searchPlaceholder: string;
112
- draggable: boolean;
113
114
  showLine: boolean;
114
- showToolbar: boolean;
115
115
  addable: boolean;
116
116
  addText: string;
117
117
  refreshable: boolean;
@@ -251,8 +251,8 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
251
251
  "onNode-click"?: ((node: WorkflowNode) => any) | undefined;
252
252
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
253
253
  }>, {
254
- theme: "light" | "dark";
255
254
  readonly: boolean;
255
+ theme: "light" | "dark";
256
256
  users: User[];
257
257
  roles: Role[];
258
258
  departments: Department[];
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.6.4",
6
+ "version": "0.6.6",
7
7
  "description": "基于 Naive UI 的 Vue 3 组件库",
8
8
  "type": "module",
9
9
  "main": "dist/index.cjs",
@@ -1 +0,0 @@
1
- {"version":3,"file":"C_Breadcrumb-D55Jd2CK.css","names":[],"sources":["../src/components/C_Breadcrumb/index.vue?vue&type=style&index=0&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.c-breadcrumb__trigger, .c-breadcrumb__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"C_Breadcrumb-mBL4CWps.css","names":[],"sources":["../src/components/C_Breadcrumb/index.vue?vue&type=style&index=0&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.c-breadcrumb__trigger, .c-breadcrumb__link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA"}