@robot-admin/naive-ui-components 0.6.5 → 0.6.7

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 (38) hide show
  1. package/dist/C_Breadcrumb-B5PGpP5m.css.map +1 -0
  2. package/dist/C_Breadcrumb-Cay7qluL.css.map +1 -0
  3. package/dist/C_Breadcrumb.css +21 -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/constants3.d.ts +3 -3
  8. package/dist/constants4.d.ts +2 -2
  9. package/dist/constants5.d.ts +4 -4
  10. package/dist/data.d.ts +1 -1
  11. package/dist/index11.vue.d.ts +7 -7
  12. package/dist/index13.vue.d.ts +1 -1
  13. package/dist/index15.vue.d.ts +1 -1
  14. package/dist/index17.vue.d.ts +1 -1
  15. package/dist/index19.vue.d.ts +2 -2
  16. package/dist/index2.vue.d.ts +5 -5
  17. package/dist/index3.vue.d.ts +3 -1
  18. package/dist/index7.vue.d.ts +3 -3
  19. package/dist/index9.vue.d.ts +1 -1
  20. package/dist/style.css +22 -4
  21. package/dist/useCalendarEvents.d.ts +1 -1
  22. package/dist/useCollapsePanel.d.ts +6 -6
  23. package/dist/useCropperCore.d.ts +5 -5
  24. package/dist/useDraggableLayout.d.ts +1 -1
  25. package/dist/useDynamicFormState.d.ts +8 -8
  26. package/dist/useEdgeInteraction.d.ts +2 -2
  27. package/dist/useInfiniteScroll.d.ts +1 -1
  28. package/dist/useModalEdit.d.ts +4 -4
  29. package/dist/useQRCode.d.ts +3 -3
  30. package/dist/useSearchState.d.ts +1 -1
  31. package/dist/useSignatureHistory.d.ts +2 -2
  32. package/dist/useSplitResize.d.ts +5 -5
  33. package/dist/useTimeSelection.d.ts +1 -1
  34. package/dist/useTreeOperations.d.ts +4 -4
  35. package/dist/useWorkflowValidation.d.ts +2 -2
  36. package/package.json +1 -1
  37. package/dist/C_Breadcrumb-D55Jd2CK.css.map +0 -1
  38. package/dist/C_Breadcrumb-mBL4CWps.css.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Breadcrumb-B5PGpP5m.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 cursor: pointer;\n}\n.c-breadcrumb .c-icon {\n flex-shrink: 0;\n}\n.c-breadcrumb .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;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-Cay7qluL.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 cursor: pointer;\n}\n.c-breadcrumb .c-icon {\n flex-shrink: 0;\n}\n.c-breadcrumb .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,7 +1,25 @@
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 {
10
+ display: inline-flex;
11
+ align-items: center;
12
+ gap: var(--c-breadcrumb-gap);
13
+ font-size: var(--c-breadcrumb-font-size);
14
+ line-height: 1;
15
+ cursor: pointer;
16
+ }
17
+ .c-breadcrumb .c-icon {
18
+ flex-shrink: 0;
19
+ }
20
+ .c-breadcrumb .n-breadcrumb-item__separator {
2
21
  display: inline-flex;
3
22
  align-items: center;
4
- gap: 4px;
5
23
  }
6
24
 
7
- /*# sourceMappingURL=C_Breadcrumb-D55Jd2CK.css.map*/
25
+ /*# sourceMappingURL=C_Breadcrumb-B5PGpP5m.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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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 cursor: pointer;\n }\n\n // 确保 C_Icon 在面包屑中尺寸一致\n .c-icon {\n flex-shrink: 0;\n }\n\n // 修复分隔符垂直对齐偏移\n .n-breadcrumb-item__separator {\n display: inline-flex;\n align-items: center;\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"}
@@ -168,11 +168,11 @@ 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
- pageSize: number;
172
- storageKey: string;
173
171
  desktopNotification: boolean;
174
172
  maxBadgeCount: number;
175
173
  pollingInterval: number;
174
+ pageSize: number;
175
+ storageKey: string;
176
176
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
177
177
  declare const _default: typeof __VLS_export;
178
178
  //#endregion
@@ -217,7 +217,7 @@ declare function useNotificationCore(props: NotificationCenterProps): {
217
217
  actionText?: string | undefined;
218
218
  extra?: Record<string, unknown> | undefined;
219
219
  }[]>;
220
- activeCategory: vue.Ref<"all" | NotificationCategory, "all" | NotificationCategory>;
220
+ activeCategory: vue.Ref<NotificationCategory | "all", NotificationCategory | "all">;
221
221
  loading: vue.Ref<boolean, boolean>;
222
222
  total: vue.Ref<number, number>;
223
223
  page: vue.Ref<number, number>;
@@ -213,15 +213,15 @@ declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {},
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
215
  disabled: boolean;
216
+ data: Record<string, any>;
216
217
  maxSize: number;
218
+ draggable: boolean;
217
219
  action: string;
218
220
  headers: Record<string, string>;
219
- data: Record<string, any>;
220
221
  multiple: boolean;
221
222
  directory: boolean;
222
223
  accept: string;
223
224
  maxCount: number;
224
- draggable: boolean;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
227
227
  chunkSize: number;
@@ -259,11 +259,11 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
259
259
  //#endregion
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
- error: (error: Error) => any;
263
262
  ready: () => any;
263
+ error: (error: Error) => any;
264
+ ended: () => any;
264
265
  stateChange: (state: PlayerState) => any;
265
266
  timeUpdate: (currentTime: number, duration: number) => any;
266
- ended: () => any;
267
267
  qualityChange: (quality: QualityLevel) => any;
268
268
  rateChange: (rate: number) => any;
269
269
  fullscreenChange: (isFullscreen: boolean) => any;
@@ -272,11 +272,11 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
272
272
  chapterChange: (chapter: Chapter) => any;
273
273
  progressUpdate: (data: ProgressData) => any;
274
274
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
275
- onError?: ((error: Error) => any) | undefined;
276
275
  onReady?: (() => any) | undefined;
276
+ onError?: ((error: Error) => any) | undefined;
277
+ onEnded?: (() => any) | undefined;
277
278
  onStateChange?: ((state: PlayerState) => any) | undefined;
278
279
  onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
279
- onEnded?: (() => any) | undefined;
280
280
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
281
281
  onRateChange?: ((rate: number) => any) | undefined;
282
282
  onFullscreenChange?: ((isFullscreen: boolean) => any) | undefined;
package/dist/data.d.ts CHANGED
@@ -26,8 +26,8 @@ declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue
26
26
  center: [number, number];
27
27
  zoom: number;
28
28
  markers: MapMarker$1[];
29
- amapKey: string;
30
29
  mapType: "osm" | "amap";
30
+ amapKey: string;
31
31
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
32
32
  declare const _default: typeof __VLS_export;
33
33
  //#endregion
@@ -41,29 +41,29 @@ declare const __VLS_export: vue.DefineComponent<IconProps, {
41
41
  errorMessage: Readonly<vue.Ref<string, string>>; /** DOM引用 */
42
42
  el: vue.Ref<HTMLElement | undefined, HTMLElement | undefined>;
43
43
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
44
- error: (type: string, error?: any) => any;
45
44
  click: (event: MouseEvent) => any;
45
+ error: (type: string, error?: any) => any;
46
46
  load: () => any;
47
47
  }, string, vue.PublicProps, Readonly<IconProps> & Readonly<{
48
- onError?: ((type: string, error?: any) => any) | undefined;
49
48
  onClick?: ((event: MouseEvent) => any) | undefined;
49
+ onError?: ((type: string, error?: any) => any) | undefined;
50
50
  onLoad?: (() => any) | undefined;
51
51
  }>, {
52
52
  type: "iconify" | "unocss" | "component" | "svg" | "image";
53
+ title: string;
53
54
  size: number | string;
54
55
  name: string | any;
55
- title: string;
56
- rotate: number;
57
- clickable: boolean;
58
56
  color: string;
57
+ flip: "horizontal" | "vertical" | "both";
58
+ clickable: boolean;
59
+ loading: boolean;
59
60
  svgPath: string;
60
61
  viewBox: string;
61
62
  alt: string;
62
- loading: boolean;
63
63
  fallbackIcon: string;
64
64
  ariaLabel: string;
65
65
  customClass: string;
66
- flip: "horizontal" | "vertical" | "both";
66
+ rotate: number;
67
67
  componentProps: Record<string, any>;
68
68
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
69
69
  declare const _default: typeof __VLS_export;
@@ -63,6 +63,7 @@ declare const __VLS_export: vue.DefineComponent<Props, {
63
63
  height: string | number;
64
64
  mode: "edit" | "editable" | "preview";
65
65
  placeholder: string;
66
+ isDark: boolean;
66
67
  tocNavPosition: "left" | "right";
67
68
  defaultFullscreen: boolean;
68
69
  autofocus: boolean;
@@ -73,7 +74,6 @@ declare const __VLS_export: vue.DefineComponent<Props, {
73
74
  showWordCount: boolean;
74
75
  autoSave: 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
@@ -35,12 +35,12 @@ type __VLS_Slots = {} & {
35
35
  };
36
36
  declare const __VLS_base: vue.DefineComponent<Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<Props> & Readonly<{}>, {
37
37
  status: "default" | "success" | "error" | "warning" | "info";
38
- strokeWidth: number;
39
38
  percentage: number | number[];
40
39
  isAnimation: boolean;
41
40
  time: number;
42
41
  indicatorPlacement: "inside" | "outside";
43
42
  showIndicator: boolean;
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;
79
80
  homePath: string;
80
81
  homeTitle: string;
81
82
  homeIcon: string;
82
- persistKey: string;
83
83
  contextMenuLabels: ContextMenuLabels;
84
84
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
85
85
  declare const _default: typeof __VLS_export;
@@ -648,11 +648,11 @@ declare const __VLS_export: vue.DefineComponent<Props, {
648
648
  onTaskChange?: ((task: GanttTask, changes: any) => any) | undefined;
649
649
  }>, {
650
650
  height: string | number;
651
- data: GanttTask[];
652
651
  title: string;
652
+ options: GanttOptions;
653
+ data: GanttTask[];
653
654
  showToolbar: boolean;
654
655
  theme: "light" | "dark";
655
- options: GanttOptions;
656
656
  preset: GanttPreset;
657
657
  showFullscreenButton: boolean;
658
658
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -21,16 +21,16 @@ declare const __VLS_export: vue.DefineComponent<Props, {}, {}, {}, {}, vue.Compo
21
21
  onError?: ((error: Error) => any) | undefined;
22
22
  }>, {
23
23
  height: number;
24
- label: string;
25
24
  width: number;
26
- fontSize: number;
27
25
  format: "CODE128" | "CODE39" | "EAN13" | "EAN8" | "UPC" | "ITF14" | "MSI" | "pharmacode";
28
- background: string;
29
- showBorder: boolean;
30
- showLabel: boolean;
31
26
  showText: boolean;
27
+ fontSize: number;
32
28
  textPosition: "bottom" | "top";
33
29
  lineColor: string;
30
+ background: string;
31
+ showBorder: boolean;
32
+ label: string;
33
+ showLabel: boolean;
34
34
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
35
35
  declare const _default: typeof __VLS_export;
36
36
  //#endregion
@@ -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
@@ -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
- click: (event: MouseEvent) => any;
29
28
  copy: (code: string) => any;
29
+ click: (event: MouseEvent) => any;
30
30
  fullscreen: (isFullscreen: boolean) => any;
31
31
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
32
- onClick?: ((event: MouseEvent) => any) | undefined;
33
32
  onCopy?: ((code: string) => any) | undefined;
33
+ onClick?: ((event: MouseEvent) => any) | undefined;
34
34
  onFullscreen?: ((isFullscreen: boolean) => any) | undefined;
35
35
  }>, {
36
- trim: boolean;
37
36
  code: string;
38
37
  language: string;
39
38
  showHeader: boolean;
40
39
  showLineNumbers: boolean;
41
40
  wordWrap: boolean;
41
+ trim: boolean;
42
42
  showFullscreen: boolean;
43
43
  autoLoadLanguage: boolean;
44
44
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -31,9 +31,9 @@ declare const __VLS_export: vue.DefineComponent<Props, {
31
31
  modelValue: string;
32
32
  disabled: boolean;
33
33
  height: number;
34
- placeholder: string;
35
34
  readonly: boolean;
36
35
  theme: "light" | "dark";
36
+ placeholder: string;
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,32 @@ 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-B5PGpP5m.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 {
668
+ display: inline-flex;
669
+ align-items: center;
670
+ gap: var(--c-breadcrumb-gap);
671
+ font-size: var(--c-breadcrumb-font-size);
672
+ line-height: 1;
673
+ cursor: pointer;
674
+ }
675
+ .c-breadcrumb .c-icon {
676
+ flex-shrink: 0;
677
+ }
678
+ .c-breadcrumb .n-breadcrumb-item__separator {
660
679
  display: inline-flex;
661
680
  align-items: center;
662
- gap: 4px;
663
681
  }
664
682
 
665
- /*# sourceMappingURL=C_Breadcrumb-D55Jd2CK.css.map*/
683
+ /*# sourceMappingURL=C_Breadcrumb-B5PGpP5m.css.map*/
666
684
 
667
685
  /* --- C_Captcha-9_hk6VmY.css --- */
668
686
  /* unplugin-vue-components disabled */.c-captcha-modern[data-v-a4319836] {
@@ -66,8 +66,8 @@ declare const __VLS_export: vue.DefineComponent<CalendarProps, CalendarExpose, {
66
66
  }) => any) | undefined;
67
67
  "onEvent-dropped"?: ((event: Partial<CalendarEvent>) => any) | undefined;
68
68
  }>, {
69
- initialView: CalendarViewType;
70
69
  editable: boolean;
70
+ initialView: CalendarViewType;
71
71
  events: CalendarEvent[];
72
72
  showAddDialog: boolean;
73
73
  showEditDialog: boolean;
@@ -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
- expand: (key: string) => any;
74
72
  "update:activeKeys": (keys: string[]) => any;
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
- onExpand?: ((key: string) => any) | undefined;
79
77
  "onUpdate:activeKeys"?: ((keys: string[]) => any) | undefined;
78
+ onExpand?: ((key: string) => any) | undefined;
79
+ onCollapse?: ((key: string) => any) | undefined;
80
80
  }>, {
81
- persistKey: string;
82
- bordered: boolean;
83
81
  activeKeys: string[];
84
82
  defaultActiveKeys: string[];
85
83
  accordion: boolean;
86
84
  variant: CollapsePanelVariant;
87
85
  expandIconPosition: ExpandIconPosition;
86
+ bordered: boolean;
87
+ persistKey: string;
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;
@@ -51,28 +51,28 @@ interface ImageCropperEmits {
51
51
  //#endregion
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
+ ready: () => any;
54
55
  error: (error: Event) => any;
56
+ cancel: () => any;
55
57
  crop: (result: any) => any;
56
- ready: () => any;
57
58
  confirm: (result: any) => any;
58
- cancel: () => any;
59
59
  }, string, vue.PublicProps, Readonly<ImageCropperProps> & Readonly<{
60
+ onReady?: (() => any) | undefined;
60
61
  onError?: ((error: Event) => any) | undefined;
62
+ onCancel?: (() => any) | undefined;
61
63
  onCrop?: ((result: any) => any) | undefined;
62
- onReady?: (() => any) | undefined;
63
64
  onConfirm?: ((result: any) => any) | undefined;
64
- onCancel?: (() => any) | undefined;
65
65
  }>, {
66
66
  disabled: boolean;
67
67
  showPreview: boolean;
68
68
  height: string | number;
69
+ showToolbar: boolean;
69
70
  src: string;
70
71
  aspectRatio: number;
71
72
  outputFormat: CropOutputFormat;
72
73
  outputQuality: number;
73
74
  maxOutputWidth: number;
74
75
  maxOutputHeight: number;
75
- showToolbar: boolean;
76
76
  circular: boolean;
77
77
  modal: boolean;
78
78
  modalTitle: string;
@@ -116,9 +116,9 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
116
116
  "onItem-remove"?: ((item: DraggableItem, index: number) => any) | undefined;
117
117
  "onList-change"?: ((list: DraggableItem[]) => any) | undefined;
118
118
  }>, {
119
+ sort: boolean;
119
120
  modelValue: DraggableItem[];
120
121
  disabled: boolean;
121
- sort: boolean;
122
122
  direction: "vertical" | "horizontal";
123
123
  group: string | GroupOptions;
124
124
  animation: number;
@@ -1296,7 +1296,6 @@ declare const useDynamicFormState: () => {
1296
1296
  readonly rules?: readonly {
1297
1297
  readonly type?: RuleType | undefined;
1298
1298
  readonly required?: boolean | undefined;
1299
- readonly message?: string | ((a?: string) => string) | undefined;
1300
1299
  readonly options?: {
1301
1300
  readonly suppressWarning?: boolean | undefined;
1302
1301
  readonly suppressValidatorError?: boolean | undefined;
@@ -1352,10 +1351,12 @@ declare const useDynamicFormState: () => {
1352
1351
  readonly keys?: readonly string[] | undefined;
1353
1352
  readonly error?: ((rule: InternalRuleItem, message: string) => ValidateError) | undefined;
1354
1353
  } | undefined;
1355
- readonly trigger?: string | readonly string[] | undefined;
1356
- readonly pattern?: (RegExp | string) | undefined;
1354
+ readonly level?: "warning" | "error" | undefined;
1357
1355
  readonly key?: string | undefined;
1356
+ readonly trigger?: string | readonly string[] | undefined;
1357
+ readonly message?: string | ((a?: string) => string) | undefined;
1358
1358
  readonly asyncValidator?: naive_ui_es_form_src_interface0.FormItemRuleAsyncValidator | undefined;
1359
+ readonly pattern?: (RegExp | string) | undefined;
1359
1360
  readonly min?: number | undefined;
1360
1361
  readonly max?: number | undefined;
1361
1362
  readonly len?: number | undefined;
@@ -1931,7 +1932,6 @@ declare const useDynamicFormState: () => {
1931
1932
  }[] | undefined;
1932
1933
  readonly transform?: ((value: Value) => Value) | 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,7 +3573,6 @@ declare const useDynamicFormState: () => {
3573
3573
  readonly rules?: readonly {
3574
3574
  readonly type?: RuleType | undefined;
3575
3575
  readonly required?: boolean | undefined;
3576
- readonly message?: string | ((a?: string) => string) | undefined;
3577
3576
  readonly options?: {
3578
3577
  readonly suppressWarning?: boolean | undefined;
3579
3578
  readonly suppressValidatorError?: boolean | undefined;
@@ -3629,10 +3628,12 @@ declare const useDynamicFormState: () => {
3629
3628
  readonly keys?: readonly string[] | undefined;
3630
3629
  readonly error?: ((rule: InternalRuleItem, message: string) => ValidateError) | undefined;
3631
3630
  } | undefined;
3632
- readonly trigger?: string | readonly string[] | undefined;
3633
- readonly pattern?: (RegExp | string) | undefined;
3631
+ readonly level?: "warning" | "error" | undefined;
3634
3632
  readonly key?: string | undefined;
3633
+ readonly trigger?: string | readonly string[] | undefined;
3634
+ readonly message?: string | ((a?: string) => string) | undefined;
3635
3635
  readonly asyncValidator?: naive_ui_es_form_src_interface0.FormItemRuleAsyncValidator | undefined;
3636
+ readonly pattern?: (RegExp | string) | undefined;
3636
3637
  readonly min?: number | undefined;
3637
3638
  readonly max?: number | undefined;
3638
3639
  readonly len?: number | undefined;
@@ -4208,7 +4209,6 @@ declare const useDynamicFormState: () => {
4208
4209
  }[] | undefined;
4209
4210
  readonly transform?: ((value: Value) => Value) | 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
  }[];
@@ -260,10 +260,10 @@ declare const __VLS_export: vue.DefineComponent<Props, {
260
260
  "onData-change"?: ((data: DiagramData) => any) | undefined;
261
261
  }>, {
262
262
  height: string | number;
263
- showToolbar: boolean;
263
+ width: string | number;
264
264
  readonly: boolean;
265
+ showToolbar: boolean;
265
266
  theme: "light" | "dark";
266
- width: string | number;
267
267
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
268
268
  declare const _default: typeof __VLS_export;
269
269
  //#endregion
@@ -89,9 +89,9 @@ 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
+ columns: number;
92
93
  gap: number;
93
94
  loading: boolean;
94
- columns: number;
95
95
  lazy: boolean;
96
96
  infinite: boolean;
97
97
  skeleton: boolean;
@@ -590,8 +590,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
590
590
  clearAllSelections(): void;
591
591
  };
592
592
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
593
- cancel: (rowData: DataRecord, rowIndex: number) => any;
594
- save: (rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any;
595
593
  "pagination-change": (...args: unknown[]) => any;
596
594
  "row-delete": (...args: unknown[]) => any;
597
595
  "expand-change": (expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any;
@@ -599,6 +597,8 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
599
597
  "child-selection-change": (parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any;
600
598
  "parent-child-link-change": (parentKey: DataTableRowKey$1, shouldSelect: boolean) => any;
601
599
  "update:data": (data: DataRecord[]) => any;
600
+ save: (rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any;
601
+ cancel: (rowData: DataRecord, rowIndex: number) => 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;
@@ -606,8 +606,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
606
606
  "view-detail": (data: DataRecord) => any;
607
607
  "column-change": (columns: TableColumn[]) => any;
608
608
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
609
- onCancel?: ((rowData: DataRecord, rowIndex: number) => any) | undefined;
610
- onSave?: ((rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
611
609
  "onPagination-change"?: ((...args: unknown[]) => any) | undefined;
612
610
  "onRow-delete"?: ((...args: unknown[]) => any) | undefined;
613
611
  "onExpand-change"?: ((expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any) | undefined;
@@ -615,6 +613,8 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
615
613
  "onChild-selection-change"?: ((parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any) | undefined;
616
614
  "onParent-child-link-change"?: ((parentKey: DataTableRowKey$1, shouldSelect: boolean) => any) | undefined;
617
615
  "onUpdate:data"?: ((data: DataRecord[]) => any) | undefined;
616
+ onSave?: ((rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
617
+ onCancel?: ((rowData: DataRecord, rowIndex: number) => 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;
@@ -52,13 +52,13 @@ declare const __VLS_export: vue.DefineComponent<Props, QRCodeExpose, {}, {}, {},
52
52
  }>, {
53
53
  mode: RenderMode;
54
54
  size: number;
55
- label: string;
56
- color: string;
57
- margin: number;
58
55
  showBorder: boolean;
56
+ label: string;
59
57
  showLabel: boolean;
58
+ color: string;
60
59
  bgColor: string;
61
60
  errorCorrectionLevel: ErrorCorrectionLevel;
61
+ margin: number;
62
62
  logo: LogoOptions;
63
63
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
64
64
  declare const _default: typeof __VLS_export;
@@ -63,8 +63,8 @@ declare const __VLS_export: vue.DefineComponent<Props, {
63
63
  onSearch?: ((params: SearchFormParams) => any) | undefined;
64
64
  "onChange-params"?: ((params: SearchFormParams) => any) | undefined;
65
65
  }>, {
66
- size: "small" | "medium" | "large";
67
66
  bordered: boolean;
67
+ size: "small" | "medium" | "large";
68
68
  formItemList: SearchFormItem[];
69
69
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
70
70
  declare const _default: typeof __VLS_export;
@@ -109,9 +109,9 @@ declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose,
109
109
  }>, {
110
110
  disabled: boolean;
111
111
  height: number | string;
112
- showToolbar: boolean;
113
- readonly: boolean;
114
112
  width: number | string;
113
+ readonly: boolean;
114
+ showToolbar: boolean;
115
115
  maxHistory: number;
116
116
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
117
117
  declare const _default: typeof __VLS_export;
@@ -66,22 +66,22 @@ 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
69
  expand: (target: CollapseTarget) => any;
70
+ collapse: (target: CollapseTarget) => any;
71
+ resize: (firstSize: number, secondSize: number) => any;
72
72
  "drag-start": (size: number) => any;
73
73
  "drag-end": (size: 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
75
  onExpand?: ((target: CollapseTarget) => any) | undefined;
76
+ onCollapse?: ((target: CollapseTarget) => any) | undefined;
77
+ onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
78
78
  "onDrag-start"?: ((size: number) => any) | undefined;
79
79
  "onDrag-end"?: ((size: number) => any) | undefined;
80
80
  }>, {
81
81
  disabled: boolean;
82
82
  step: number;
83
- defaultSize: number;
84
83
  direction: SplitDirection;
84
+ defaultSize: number;
85
85
  minSize: number;
86
86
  maxSize: number;
87
87
  collapsible: boolean;
@@ -52,7 +52,6 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
52
52
  placeholder: string;
53
53
  startPlaceholder: string;
54
54
  endPlaceholder: string;
55
- attrs: Record<string, any>;
56
55
  format: string;
57
56
  useHours: boolean;
58
57
  useMinutes: boolean;
@@ -62,6 +61,7 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
62
61
  secondStep: number;
63
62
  startTimeProps: Record<string, any>;
64
63
  endTimeProps: Record<string, any>;
64
+ attrs: Record<string, any>;
65
65
  defaultStartTime: number | null;
66
66
  defaultEndTime: number | null;
67
67
  defaultSingleTime: number | null;
@@ -91,24 +91,24 @@ type __VLS_Slots = {} & {
91
91
  };
92
92
  declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
93
93
  add: (parentNode?: TreeNodeData | undefined) => any;
94
+ refresh: () => any;
94
95
  "node-select": (node: TreeNodeData | null, selectedKeys: (string | number)[]) => any;
95
96
  "node-action": (action: string, node: TreeNodeData) => any;
96
97
  "node-drop": (info: DropInfo) => any;
97
- refresh: () => any;
98
98
  }, string, vue.PublicProps, Readonly<TreeProps> & Readonly<{
99
99
  onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
100
+ onRefresh?: (() => any) | undefined;
100
101
  "onNode-select"?: ((node: TreeNodeData | null, selectedKeys: (string | number)[]) => any) | undefined;
101
102
  "onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
102
103
  "onNode-drop"?: ((info: DropInfo) => any) | undefined;
103
- onRefresh?: (() => any) | undefined;
104
104
  }>, {
105
105
  mode: TreeMode;
106
- draggable: boolean;
107
106
  showToolbar: boolean;
107
+ draggable: boolean;
108
108
  labelField: string;
109
+ keyField: string;
109
110
  childrenField: string;
110
111
  actions: ActionConfig[];
111
- keyField: string;
112
112
  searchPattern: string;
113
113
  searchable: boolean;
114
114
  searchPlaceholder: string;
@@ -239,16 +239,16 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
239
239
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
240
240
  "update:modelValue": (value: WorkflowData) => any;
241
241
  change: (value: WorkflowData) => any;
242
+ save: (data: WorkflowData) => any;
242
243
  "node-click": (node: WorkflowNode) => any;
243
244
  "edge-click": (edge: WorkflowEdge) => any;
244
- save: (data: WorkflowData) => any;
245
245
  "validate-error": (errors: ValidationError[]) => any;
246
246
  }, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
247
247
  "onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
248
248
  onChange?: ((value: WorkflowData) => any) | undefined;
249
+ onSave?: ((data: WorkflowData) => any) | undefined;
249
250
  "onNode-click"?: ((node: WorkflowNode) => any) | undefined;
250
251
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
251
- onSave?: ((data: WorkflowData) => any) | undefined;
252
252
  "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
253
253
  }>, {
254
254
  readonly: boolean;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.6.5",
6
+ "version": "0.6.7",
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"}