@robot-admin/naive-ui-components 0.6.5 → 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 +2 -2
  9. package/dist/constants3.d.ts +2 -2
  10. package/dist/constants4.d.ts +8 -8
  11. package/dist/constants5.d.ts +2 -2
  12. package/dist/data.d.ts +1 -1
  13. package/dist/index11.vue.d.ts +6 -6
  14. package/dist/index13.vue.d.ts +3 -3
  15. package/dist/index15.vue.d.ts +2 -2
  16. package/dist/index16.vue.d.ts +1 -1
  17. package/dist/index19.vue.d.ts +2 -2
  18. package/dist/index2.vue.d.ts +5 -5
  19. package/dist/index3.vue.d.ts +3 -1
  20. package/dist/index4.vue.d.ts +4 -4
  21. package/dist/index8.vue.d.ts +3 -3
  22. package/dist/index9.vue.d.ts +1 -1
  23. package/dist/style.css +17 -4
  24. package/dist/useCalendarEvents.d.ts +1 -1
  25. package/dist/useCollapsePanel.d.ts +5 -5
  26. package/dist/useCropperCore.d.ts +7 -7
  27. package/dist/useDraggableLayout.d.ts +2 -2
  28. package/dist/useDynamicFormState.d.ts +8 -8
  29. package/dist/useEdgeInteraction.d.ts +2 -2
  30. package/dist/useGlobalSearch.d.ts +1 -1
  31. package/dist/useInfiniteScroll.d.ts +3 -3
  32. package/dist/useModalEdit.d.ts +2 -2
  33. package/dist/useQRCode.d.ts +2 -2
  34. package/dist/useSearchState.d.ts +2 -2
  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 +3 -3
  39. package/dist/useWorkflowValidation.d.ts +4 -4
  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"}
@@ -120,11 +120,11 @@ declare const __VLS_export: vue.DefineComponent<CronProps, {
120
120
  }>, {
121
121
  modelValue: string;
122
122
  disabled: boolean;
123
+ height: string | number;
124
+ showPreview: boolean;
123
125
  previewCount: number;
124
126
  showTemplates: boolean;
125
- showPreview: boolean;
126
127
  showSecond: boolean;
127
- height: string | number;
128
128
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
129
129
  declare const _default: typeof __VLS_export;
130
130
  //#endregion
@@ -122,12 +122,12 @@ declare const __VLS_export: vue.DefineComponent<FormulaEditorProps, FormulaEdito
122
122
  }>, {
123
123
  modelValue: string;
124
124
  disabled: boolean;
125
- showPreview: boolean;
126
- height: string | number;
127
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>;
@@ -151,8 +151,8 @@ interface NotificationCenterExpose {
151
151
  //#region src/components/C_NotificationCenter/index.vue.d.ts
152
152
  declare const __VLS_export: vue.DefineComponent<NotificationCenterProps, NotificationCenterExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
153
153
  delete: (ids: string[]) => any;
154
- read: (ids: string[]) => any;
155
154
  itemClick: (message: NotificationMessage) => any;
155
+ read: (ids: string[]) => any;
156
156
  allRead: (category?: NotificationCategory | undefined) => any;
157
157
  unreadChange: (count: number) => any;
158
158
  wsStatusChange: (status: string) => any;
@@ -160,8 +160,8 @@ declare const __VLS_export: vue.DefineComponent<NotificationCenterProps, Notific
160
160
  navigate: (url: string) => any;
161
161
  }, string, vue.PublicProps, Readonly<NotificationCenterProps> & Readonly<{
162
162
  onDelete?: ((ids: string[]) => any) | undefined;
163
- onRead?: ((ids: string[]) => any) | undefined;
164
163
  onItemClick?: ((message: NotificationMessage) => any) | undefined;
164
+ onRead?: ((ids: string[]) => any) | undefined;
165
165
  onAllRead?: ((category?: NotificationCategory | undefined) => any) | undefined;
166
166
  onUnreadChange?: ((count: number) => any) | undefined;
167
167
  onWsStatusChange?: ((status: string) => any) | undefined;
@@ -196,32 +196,32 @@ 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
- change: (fileList: UploadFileItem[]) => any;
200
- error: (file: UploadFileItem, error: Error) => any;
201
199
  success: (file: UploadFileItem, response: any) => any;
200
+ error: (file: UploadFileItem, error: Error) => any;
201
+ change: (fileList: UploadFileItem[]) => 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
- onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
208
- onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
209
207
  onSuccess?: ((file: UploadFileItem, response: any) => any) | undefined;
208
+ onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
209
+ onChange?: ((fileList: UploadFileItem[]) => 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
- maxSize: number;
217
- action: string;
218
- headers: Record<string, string>;
216
+ draggable: boolean;
219
217
  data: Record<string, any>;
220
218
  multiple: boolean;
219
+ action: string;
220
+ headers: Record<string, string>;
221
221
  directory: boolean;
222
222
  accept: string;
223
+ maxSize: number;
223
224
  maxCount: number;
224
- draggable: boolean;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
227
227
  chunkSize: number;
@@ -261,9 +261,9 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
261
261
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
262
262
  error: (error: Error) => any;
263
263
  ready: () => 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;
@@ -274,9 +274,9 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
274
274
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
275
275
  onError?: ((error: Error) => any) | undefined;
276
276
  onReady?: (() => 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
@@ -22,8 +22,8 @@ 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
- height: string;
26
25
  center: [number, number];
26
+ height: string;
27
27
  zoom: number;
28
28
  markers: MapMarker$1[];
29
29
  amapKey: string;
@@ -49,21 +49,21 @@ declare const __VLS_export: vue.DefineComponent<IconProps, {
49
49
  onClick?: ((event: MouseEvent) => any) | undefined;
50
50
  onLoad?: (() => any) | undefined;
51
51
  }>, {
52
- type: "iconify" | "unocss" | "component" | "svg" | "image";
53
52
  size: number | string;
54
- name: string | any;
53
+ type: "iconify" | "unocss" | "component" | "svg" | "image";
55
54
  title: string;
56
- rotate: number;
57
- clickable: boolean;
55
+ name: string | any;
58
56
  color: string;
57
+ flip: "horizontal" | "vertical" | "both";
58
+ loading: boolean;
59
59
  svgPath: string;
60
60
  viewBox: string;
61
61
  alt: string;
62
- loading: boolean;
62
+ clickable: 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;
@@ -60,9 +60,11 @@ declare const __VLS_export: vue.DefineComponent<Props, {
60
60
  }>, {
61
61
  modelValue: string;
62
62
  disabled: boolean;
63
+ placeholder: string;
63
64
  height: string | number;
64
65
  mode: "edit" | "editable" | "preview";
65
- placeholder: string;
66
+ autoSave: boolean;
67
+ isDark: boolean;
66
68
  tocNavPosition: "left" | "right";
67
69
  defaultFullscreen: boolean;
68
70
  autofocus: boolean;
@@ -71,9 +73,7 @@ declare const __VLS_export: vue.DefineComponent<Props, {
71
73
  rightToolbar: string;
72
74
  maxLength: number;
73
75
  showWordCount: boolean;
74
- 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
@@ -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
37
  percentage: number | number[];
40
38
  isAnimation: boolean;
41
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>;
@@ -24,8 +24,8 @@ declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue
24
24
  "onUpdate:current"?: ((args_0: number) => any) | undefined;
25
25
  }>, {
26
26
  direction: "horizontal" | "vertical";
27
- current: number;
28
27
  clickable: boolean;
28
+ current: number;
29
29
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
30
30
  declare const _default: typeof __VLS_export;
31
31
  //#endregion
@@ -647,11 +647,11 @@ 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;
652
+ theme: "light" | "dark";
651
653
  data: GanttTask[];
652
- title: string;
653
654
  showToolbar: boolean;
654
- theme: "light" | "dark";
655
655
  options: GanttOptions;
656
656
  preset: GanttPreset;
657
657
  showFullscreenButton: boolean;
@@ -20,17 +20,17 @@ 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
- height: number;
24
23
  label: string;
24
+ height: number;
25
25
  width: number;
26
- fontSize: number;
27
26
  format: "CODE128" | "CODE39" | "EAN13" | "EAN8" | "UPC" | "ITF14" | "MSI" | "pharmacode";
28
- background: string;
29
- showBorder: boolean;
30
- showLabel: boolean;
31
27
  showText: boolean;
28
+ fontSize: number;
32
29
  textPosition: "bottom" | "top";
33
30
  lineColor: string;
31
+ background: string;
32
+ showBorder: boolean;
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
@@ -18,20 +18,20 @@ 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
- reset: () => any;
23
21
  success: (data: {
24
22
  token: string;
25
23
  timestamp: number;
26
24
  }) => any;
25
+ change: (valid: boolean) => any;
26
+ reset: () => any;
27
27
  fail: (error: string) => any;
28
28
  }, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
29
- onChange?: ((valid: boolean) => any) | undefined;
30
- onReset?: (() => any) | undefined;
31
29
  onSuccess?: ((data: {
32
30
  token: string;
33
31
  timestamp: number;
34
32
  }) => any) | undefined;
33
+ onChange?: ((valid: boolean) => any) | undefined;
34
+ onReset?: (() => any) | undefined;
35
35
  onFail?: ((error: string) => any) | undefined;
36
36
  }>, {
37
37
  disabled: boolean;
@@ -25,23 +25,23 @@ 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
42
  disabled: boolean;
43
- mode: DatePickerMode;
44
43
  placeholder: string;
44
+ mode: DatePickerMode;
45
45
  startPlaceholder: string;
46
46
  endPlaceholder: string;
47
47
  disabledBeforeToday: boolean;
@@ -30,9 +30,9 @@ declare const __VLS_export: vue.DefineComponent<Props, {
30
30
  }>, {
31
31
  modelValue: string;
32
32
  disabled: boolean;
33
- height: number;
34
33
  placeholder: string;
35
34
  readonly: boolean;
35
+ height: number;
36
36
  theme: "light" | "dark";
37
37
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
38
38
  declare const _default: typeof __VLS_export;
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
+ events: CalendarEvent[];
69
70
  initialView: CalendarViewType;
70
71
  editable: boolean;
71
- events: CalendarEvent[];
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
- 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
81
  persistKey: string;
82
- bordered: boolean;
83
82
  activeKeys: string[];
84
83
  defaultActiveKeys: string[];
85
84
  accordion: boolean;
86
85
  variant: CollapsePanelVariant;
87
86
  expandIconPosition: ExpandIconPosition;
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,27 +52,27 @@ 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
- crop: (result: any) => any;
56
55
  ready: () => any;
57
- confirm: (result: any) => any;
58
56
  cancel: () => any;
57
+ crop: (result: any) => any;
58
+ confirm: (result: any) => any;
59
59
  }, string, vue.PublicProps, Readonly<ImageCropperProps> & Readonly<{
60
60
  onError?: ((error: Event) => any) | undefined;
61
- onCrop?: ((result: any) => any) | undefined;
62
61
  onReady?: (() => any) | undefined;
63
- onConfirm?: ((result: any) => any) | undefined;
64
62
  onCancel?: (() => any) | undefined;
63
+ onCrop?: ((result: any) => any) | undefined;
64
+ onConfirm?: ((result: any) => any) | undefined;
65
65
  }>, {
66
66
  disabled: boolean;
67
- showPreview: boolean;
68
67
  height: string | number;
69
- src: string;
68
+ showToolbar: boolean;
69
+ showPreview: boolean;
70
70
  aspectRatio: number;
71
+ src: string;
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,10 +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
- direction: "vertical" | "horizontal";
123
122
  group: string | GroupOptions;
124
123
  animation: number;
125
124
  delay: number;
@@ -135,6 +134,7 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
135
134
  emptyText: string;
136
135
  swapThreshold: number;
137
136
  invertSwap: boolean;
137
+ direction: "vertical" | "horizontal";
138
138
  layout: LayoutMode;
139
139
  gridColumns: number;
140
140
  gridRows: number;
@@ -429,14 +429,14 @@ declare const __VLS_base: vue.DefineComponent<CFormProps, {
429
429
  shouldShowDefaultActions: vue.ComputedRef<boolean>;
430
430
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
431
431
  "update:modelValue": (model: Record<string, any>) => any;
432
- "validate-error": (errors: unknown) => any;
433
432
  submit: (payload: SubmitEventPayload) => any;
434
433
  "validate-success": (model: Record<string, any>) => any;
434
+ "validate-error": (errors: unknown) => any;
435
435
  }, string, vue.PublicProps, Readonly<CFormProps> & Readonly<{
436
436
  "onUpdate:modelValue"?: ((model: Record<string, any>) => any) | undefined;
437
- "onValidate-error"?: ((errors: unknown) => any) | undefined;
438
437
  onSubmit?: ((payload: SubmitEventPayload) => any) | undefined;
439
438
  "onValidate-success"?: ((model: Record<string, any>) => any) | undefined;
439
+ "onValidate-error"?: ((errors: unknown) => any) | undefined;
440
440
  }>, {
441
441
  config: FormConfig;
442
442
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -1296,7 +1296,8 @@ 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;
1299
+ readonly level?: "warning" | "error" | undefined;
1300
+ readonly key?: string | undefined;
1300
1301
  readonly options?: {
1301
1302
  readonly suppressWarning?: boolean | undefined;
1302
1303
  readonly suppressValidatorError?: boolean | undefined;
@@ -1354,7 +1355,6 @@ declare const useDynamicFormState: () => {
1354
1355
  } | undefined;
1355
1356
  readonly trigger?: string | readonly string[] | undefined;
1356
1357
  readonly pattern?: (RegExp | string) | undefined;
1357
- readonly key?: string | undefined;
1358
1358
  readonly asyncValidator?: naive_ui_es_form_src_interface0.FormItemRuleAsyncValidator | undefined;
1359
1359
  readonly min?: number | undefined;
1360
1360
  readonly max?: number | undefined;
@@ -1930,8 +1930,8 @@ declare const useDynamicFormState: () => {
1930
1930
  readonly validator?: ((rule: InternalRuleItem, value: Value, callback: (error?: string | Error) => void, source: Values, options: ValidateOption) => SyncValidateResult | void) | undefined;
1931
1931
  }[] | undefined;
1932
1932
  readonly transform?: ((value: Value) => Value) | undefined;
1933
+ readonly message?: string | ((a?: string) => 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,7 +3573,8 @@ 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;
3576
+ readonly level?: "warning" | "error" | undefined;
3577
+ readonly key?: string | undefined;
3577
3578
  readonly options?: {
3578
3579
  readonly suppressWarning?: boolean | undefined;
3579
3580
  readonly suppressValidatorError?: boolean | undefined;
@@ -3631,7 +3632,6 @@ declare const useDynamicFormState: () => {
3631
3632
  } | undefined;
3632
3633
  readonly trigger?: string | readonly string[] | undefined;
3633
3634
  readonly pattern?: (RegExp | string) | undefined;
3634
- readonly key?: string | undefined;
3635
3635
  readonly asyncValidator?: naive_ui_es_form_src_interface0.FormItemRuleAsyncValidator | undefined;
3636
3636
  readonly min?: number | undefined;
3637
3637
  readonly max?: number | undefined;
@@ -4207,8 +4207,8 @@ declare const useDynamicFormState: () => {
4207
4207
  readonly validator?: ((rule: InternalRuleItem, value: Value, callback: (error?: string | Error) => void, source: Values, options: ValidateOption) => SyncValidateResult | void) | undefined;
4208
4208
  }[] | undefined;
4209
4209
  readonly transform?: ((value: Value) => Value) | undefined;
4210
+ readonly message?: string | ((a?: string) => 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,11 +259,11 @@ 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
- height: string | number;
263
- showToolbar: boolean;
264
262
  readonly: boolean;
263
+ height: string | number;
265
264
  theme: "light" | "dark";
266
265
  width: string | number;
266
+ showToolbar: boolean;
267
267
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
268
268
  declare const _default: typeof __VLS_export;
269
269
  //#endregion
@@ -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;
@@ -90,13 +90,13 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
90
90
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
91
91
  }>, {
92
92
  gap: number;
93
- loading: boolean;
94
93
  columns: number;
95
- lazy: boolean;
94
+ loading: boolean;
95
+ animationDuration: number;
96
96
  infinite: boolean;
97
+ lazy: boolean;
97
98
  skeleton: boolean;
98
99
  skeletonCount: number;
99
- animationDuration: number;
100
100
  breakpoints: WaterFallBreakpoint[];
101
101
  noMore: boolean;
102
102
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -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
- mode: RenderMode;
54
53
  size: number;
55
54
  label: string;
56
55
  color: string;
57
- margin: number;
58
56
  showBorder: boolean;
59
57
  showLabel: boolean;
58
+ mode: RenderMode;
59
+ margin: number;
60
60
  bgColor: string;
61
61
  errorCorrectionLevel: ErrorCorrectionLevel;
62
62
  logo: LogoOptions;
@@ -55,12 +55,12 @@ declare const __VLS_export: vue.DefineComponent<Props, {
55
55
  cleanFn: () => void;
56
56
  changeFoldState: () => void;
57
57
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
58
- reset: () => any;
59
58
  search: (params: SearchFormParams) => any;
59
+ reset: () => any;
60
60
  "change-params": (params: SearchFormParams) => any;
61
61
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
62
- onReset?: (() => any) | undefined;
63
62
  onSearch?: ((params: SearchFormParams) => any) | undefined;
63
+ onReset?: (() => any) | undefined;
64
64
  "onChange-params"?: ((params: SearchFormParams) => any) | undefined;
65
65
  }>, {
66
66
  size: "small" | "medium" | "large";
@@ -91,16 +91,16 @@ 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;
@@ -108,10 +108,10 @@ declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose,
108
108
  onRedo?: (() => any) | undefined;
109
109
  }>, {
110
110
  disabled: boolean;
111
- height: number | string;
112
- showToolbar: boolean;
113
111
  readonly: boolean;
112
+ height: number | string;
114
113
  width: number | string;
114
+ showToolbar: boolean;
115
115
  maxHistory: number;
116
116
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
117
117
  declare const _default: typeof __VLS_export;
@@ -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
+ direction: SplitDirection;
82
83
  step: number;
84
+ maxSize: number;
83
85
  defaultSize: number;
84
- direction: SplitDirection;
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
- mode: TimeMode;
52
51
  placeholder: string;
52
+ format: string;
53
+ mode: TimeMode;
53
54
  startPlaceholder: string;
54
55
  endPlaceholder: string;
55
56
  attrs: Record<string, any>;
56
- format: string;
57
57
  useHours: boolean;
58
58
  useMinutes: boolean;
59
59
  useSeconds: boolean;
@@ -102,13 +102,12 @@ declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {},
102
102
  "onNode-drop"?: ((info: DropInfo) => any) | undefined;
103
103
  onRefresh?: (() => any) | undefined;
104
104
  }>, {
105
- mode: TreeMode;
106
105
  draggable: boolean;
107
106
  showToolbar: boolean;
107
+ mode: TreeMode;
108
108
  labelField: string;
109
- childrenField: string;
110
- actions: ActionConfig[];
111
109
  keyField: string;
110
+ childrenField: string;
112
111
  searchPattern: string;
113
112
  searchable: boolean;
114
113
  searchPlaceholder: string;
@@ -119,6 +118,7 @@ declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {},
119
118
  iconField: string;
120
119
  iconConfig: IconConfig;
121
120
  statusConfigs: StatusConfig[];
121
+ actions: ActionConfig[];
122
122
  defaultExpandAll: boolean;
123
123
  defaultExpandedKeys: (string | number)[];
124
124
  defaultSelectedKeys: (string | number)[];
@@ -239,17 +239,17 @@ 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
+ "validate-error": (errors: ValidationError[]) => any;
243
+ save: (data: WorkflowData) => any;
242
244
  "node-click": (node: WorkflowNode) => any;
243
245
  "edge-click": (edge: WorkflowEdge) => any;
244
- save: (data: WorkflowData) => any;
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
+ "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
250
+ onSave?: ((data: WorkflowData) => any) | undefined;
249
251
  "onNode-click"?: ((node: WorkflowNode) => any) | undefined;
250
252
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
251
- onSave?: ((data: WorkflowData) => any) | undefined;
252
- "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
253
253
  }>, {
254
254
  readonly: boolean;
255
255
  theme: "light" | "dark";
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.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"}