@robot-admin/naive-ui-components 0.10.0 → 0.10.2

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 (105) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +3 -2
  3. package/dist/{C_AudioPlayer-ldTy9Y34.css.map → C_AudioPlayer-Cj4lUdZo.css.map} +1 -1
  4. package/dist/{C_AvatarGroup-SIzxuuZr.css.map → C_AvatarGroup-D3PwsKME.css.map} +1 -1
  5. package/dist/{C_Breadcrumb-Bqqrl8nX.css.map → C_Breadcrumb-DOcLt9uX.css.map} +1 -1
  6. package/dist/C_Breadcrumb.d.cts +3 -2
  7. package/dist/C_Breadcrumb.d.ts +2 -2
  8. package/dist/C_Captcha.d.cts +1 -1
  9. package/dist/C_Cascade.d.cts +1 -1
  10. package/dist/{C_Chat-CF1SU7mc.css.map → C_Chat-DwatUQqu.css.map} +1 -1
  11. package/dist/C_Chat.css +1 -1
  12. package/dist/C_Chat.d.cts +1 -1
  13. package/dist/C_City.d.cts +1 -1
  14. package/dist/C_Code.d.cts +1 -1
  15. package/dist/{C_ContextMenu-Bn_uhJSo.css.map → C_ContextMenu-CD0iaSju.css.map} +1 -1
  16. package/dist/C_ContextMenu.css +1 -1
  17. package/dist/C_ContextMenu.d.cts +1 -1
  18. package/dist/C_Date.d.cts +1 -1
  19. package/dist/C_Editor.d.cts +1 -1
  20. package/dist/C_Guide.d.cts +1 -1
  21. package/dist/C_Icon.d.cts +1 -1
  22. package/dist/C_Language.d.cts +1 -1
  23. package/dist/{C_Login-B3qYkLrN.css.map → C_Login-BrQBs_m4.css.map} +1 -1
  24. package/dist/C_Login.css +1 -1
  25. package/dist/C_Login.d.cts +1 -1
  26. package/dist/C_Markdown.d.cts +1 -1
  27. package/dist/C_Menu.cjs +1 -1
  28. package/dist/C_Menu.d.cts +3 -2
  29. package/dist/C_Menu.d.ts +2 -2
  30. package/dist/C_Menu.js +1 -1
  31. package/dist/C_Menu.js.map +1 -1
  32. package/dist/C_Menu2.js +1 -1
  33. package/dist/C_Menu2.js.map +1 -1
  34. package/dist/{C_OrgChart-ChZu346B.css.map → C_OrgChart-BXEp4i4w.css.map} +1 -1
  35. package/dist/C_OrgChart.css +1 -1
  36. package/dist/{C_Skeleton-BNPbaut7.css.map → C_Skeleton-BJoFYwrF.css.map} +1 -1
  37. package/dist/C_Skeleton.css +1 -1
  38. package/dist/{C_TagsView-BN8vMRsY.css.map → C_TagsView-DtGtYhBH.css.map} +1 -1
  39. package/dist/C_TagsView.css +1 -1
  40. package/dist/C_TagsView.d.cts +2 -1
  41. package/dist/C_TagsView.d.ts +2 -2
  42. package/dist/{C_Timeline-4rk0Dzgn.css.map → C_Timeline-irQcO-b7.css.map} +1 -1
  43. package/dist/C_Timeline.css +1 -1
  44. package/dist/{C_Transfer-B-vjvhjI.css.map → C_Transfer-11y3k-WD.css.map} +1 -1
  45. package/dist/C_Transfer.css +1 -1
  46. package/dist/constants.d.ts +2 -2
  47. package/dist/constants2.d.ts +3 -3
  48. package/dist/constants3.d.ts +2 -2
  49. package/dist/constants4.d.ts +5 -5
  50. package/dist/constants5.d.ts +2 -2
  51. package/dist/data.d.ts +2 -2
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +16 -16
  55. package/dist/index.d.ts +154 -108
  56. package/dist/index.js +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.vue.d.ts +1 -1
  59. package/dist/index10.vue.d.ts +3 -3
  60. package/dist/index11.vue.d.ts +3 -3
  61. package/dist/index12.vue.d.ts +2 -2
  62. package/dist/index13.vue.d.ts +3 -3
  63. package/dist/index14.vue.d.ts +3 -3
  64. package/dist/index15.vue.d.ts +7 -7
  65. package/dist/index17.vue.d.ts +1 -1
  66. package/dist/index18.vue.d.ts +2 -2
  67. package/dist/index19.vue.d.ts +2 -2
  68. package/dist/index2.d.ts +120 -0
  69. package/dist/index2.vue.d.ts +2 -2
  70. package/dist/index21.vue.d.ts +3 -3
  71. package/dist/index22.vue.d.ts +1 -1
  72. package/dist/index23.vue.d.ts +1 -1
  73. package/dist/index24.vue.d.ts +1 -1
  74. package/dist/index26.vue.d.ts +3 -3
  75. package/dist/index27.vue.d.ts +3 -3
  76. package/dist/index28.vue.d.ts +3 -3
  77. package/dist/index3.vue.d.ts +2 -2
  78. package/dist/index4.vue.d.ts +5 -5
  79. package/dist/index5.vue.d.ts +1 -1
  80. package/dist/index6.vue.d.ts +2 -2
  81. package/dist/index8.vue.d.ts +1 -1
  82. package/dist/style.css +17 -17
  83. package/dist/{menuAdapter.d.ts → types.d.ts} +2 -61
  84. package/dist/useCalendarEvents.d.ts +1 -1
  85. package/dist/useCropperCore.d.ts +7 -7
  86. package/dist/useDraggableLayout.d.ts +6 -6
  87. package/dist/useDynamicFormState.d.ts +2 -2
  88. package/dist/useEdgeInteraction.d.ts +2 -2
  89. package/dist/useFullscreen.d.ts +2 -2
  90. package/dist/useInfiniteScroll.d.ts +3 -3
  91. package/dist/useModalEdit.d.ts +2 -2
  92. package/dist/useQRCode.d.ts +5 -5
  93. package/dist/useSearchState.d.ts +2 -2
  94. package/dist/useSignatureHistory.d.ts +4 -4
  95. package/dist/useSplitResize.d.ts +2 -2
  96. package/dist/useTimeSelection.d.ts +2 -2
  97. package/dist/useTreeOperations.d.ts +7 -7
  98. package/dist/useWorkflowValidation.d.ts +3 -3
  99. package/package.json +3 -2
  100. package/dist/_shared.cjs +0 -1
  101. package/dist/_shared.d.cts +0 -2
  102. package/dist/_shared.d.ts +0 -2
  103. package/dist/_shared.js +0 -1
  104. package/dist/menuAdapter.js +0 -2
  105. package/dist/menuAdapter.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  import { VNode } from "vue";
2
- import { MenuOption } from "naive-ui/es";
3
2
 
4
3
  //#region src/components/_shared/types.d.ts
5
4
  /**
@@ -105,63 +104,5 @@ interface BreadcrumbItem {
105
104
  children?: BreadcrumbItem[];
106
105
  }
107
106
  //#endregion
108
- //#region src/components/_shared/menuAdapter.d.ts
109
- /**
110
- * 菜单适配器配置
111
- */
112
- interface MenuAdapterConfig {
113
- /**
114
- * 标签文本格式化函数(用于 i18n)
115
- * 默认:原样返回 title
116
- */
117
- labelFormatter?: (title: string) => string;
118
- /**
119
- * 获取菜单项的唯一 key
120
- * 默认:`normalizePath(route.path)`
121
- */
122
- getKey?: (route: RouteItem) => string;
123
- /**
124
- * 获取显示文本
125
- * 默认:`route.meta?.title || route.name || ''`
126
- */
127
- getLabel?: (route: RouteItem) => string;
128
- /**
129
- * 路由过滤器 — return false 排除该项
130
- * 默认:排除 `meta.hidden === true`
131
- */
132
- filter?: (route: RouteItem) => boolean;
133
- /**
134
- * 自定义图标渲染
135
- * 默认:字符串 → Iconify Icon;函数 → 直接调用
136
- */
137
- renderIcon?: (icon: string | (() => VNode) | undefined) => (() => VNode) | undefined;
138
- /**
139
- * 是否递归处理 children
140
- * 默认:true
141
- */
142
- recursive?: boolean;
143
- }
144
- /**
145
- * 将路由数据转换为 NMenu 的 MenuOption[]
146
- *
147
- * 支持的输入格式:
148
- * 1. **Vue Router RouteRecordRaw** — 直接传 `router.getRoutes()` 或手写路由表
149
- * 2. **后端 JSON 路由表** — `{ path, meta: { title, icon }, children }`
150
- * 3. **自定义格式** — 通过 config 完全自定义 key/label/icon 的取值逻辑
151
- *
152
- * @param routes 路由数据数组
153
- * @param config 适配器配置
154
- * @returns NMenu 可直接使用的 MenuOption[]
155
- */
156
- declare function createMenuOptions(routes: RouteItem[], config?: MenuAdapterConfig): MenuOption[];
157
- /**
158
- * 将路由树扁平化为一维数组(常用于搜索、快捷导航)
159
- *
160
- * @param routes 路由数据数组
161
- * @param filter 过滤器(默认排除 hidden)
162
- * @returns 扁平化后的路由数组
163
- */
164
- declare function flattenRoutes(routes: RouteItem[], filter?: (route: RouteItem) => boolean): RouteItem[];
165
- //#endregion
166
- export { RouteItem as a, BreadcrumbItem as i, createMenuOptions as n, RouteMeta as o, flattenRoutes as r, TagItem as s, MenuAdapterConfig as t };
167
- //# sourceMappingURL=menuAdapter.d.ts.map
107
+ export { TagItem as i, RouteItem as n, RouteMeta as r, BreadcrumbItem as t };
108
+ //# sourceMappingURL=types.d.ts.map
@@ -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;
@@ -51,24 +51,24 @@ 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
+ cancel: () => any;
54
55
  error: (error: Event) => any;
55
56
  ready: () => any;
56
- cancel: () => any;
57
- confirm: (result: any) => any;
58
57
  crop: (result: any) => any;
58
+ confirm: (result: any) => any;
59
59
  }, string, vue.PublicProps, Readonly<ImageCropperProps> & Readonly<{
60
+ onCancel?: (() => any) | undefined;
60
61
  onError?: ((error: Event) => any) | undefined;
61
62
  onReady?: (() => any) | undefined;
62
- onCancel?: (() => any) | undefined;
63
- onConfirm?: ((result: any) => any) | undefined;
64
63
  onCrop?: ((result: any) => any) | undefined;
64
+ onConfirm?: ((result: any) => any) | undefined;
65
65
  }>, {
66
- height: string | number;
67
66
  disabled: boolean;
68
- aspectRatio: number;
69
- showToolbar: boolean;
70
67
  showPreview: boolean;
68
+ height: string | number;
69
+ showToolbar: boolean;
71
70
  src: string;
71
+ aspectRatio: number;
72
72
  outputFormat: CropOutputFormat;
73
73
  outputQuality: number;
74
74
  maxOutputWidth: number;
@@ -117,12 +117,15 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
117
117
  "onList-change"?: ((list: DraggableItem[]) => any) | undefined;
118
118
  }>, {
119
119
  sort: boolean;
120
- direction: "vertical" | "horizontal";
120
+ animation: number;
121
121
  modelValue: DraggableItem[];
122
122
  disabled: boolean;
123
- animation: number;
124
- delay: number;
123
+ direction: "vertical" | "horizontal";
124
+ layout: LayoutMode;
125
125
  itemClass: string;
126
+ delay: number;
127
+ gap: string | number;
128
+ emptyText: string;
126
129
  group: string | GroupOptions;
127
130
  handle: string;
128
131
  showHandle: boolean;
@@ -132,13 +135,10 @@ declare const __VLS_base: vue.DefineComponent<DraggableProps, {
132
135
  wrapperClass: string;
133
136
  listClass: string;
134
137
  showEmptyState: boolean;
135
- emptyText: string;
136
138
  swapThreshold: number;
137
139
  invertSwap: boolean;
138
- layout: LayoutMode;
139
140
  gridColumns: number;
140
141
  gridRows: number;
141
- gap: string | number;
142
142
  flexWrap: boolean;
143
143
  justifyContent: JustifyContent;
144
144
  alignItems: AlignItems;
@@ -491,13 +491,13 @@ declare const __VLS_base: vue.DefineComponent<CFormProps, {
491
491
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
492
492
  "update:modelValue": (model: Record<string, any>) => any;
493
493
  submit: (payload: SubmitEventPayload) => any;
494
- "validate-error": (errors: unknown) => any;
495
494
  "validate-success": (model: Record<string, any>) => any;
495
+ "validate-error": (errors: unknown) => any;
496
496
  }, string, vue.PublicProps, Readonly<CFormProps> & Readonly<{
497
497
  "onUpdate:modelValue"?: ((model: Record<string, any>) => any) | undefined;
498
498
  onSubmit?: ((payload: SubmitEventPayload) => any) | undefined;
499
- "onValidate-error"?: ((errors: unknown) => any) | undefined;
500
499
  "onValidate-success"?: ((model: Record<string, any>) => any) | undefined;
500
+ "onValidate-error"?: ((errors: unknown) => any) | undefined;
501
501
  }>, {
502
502
  config: FormConfig;
503
503
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -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
- theme: "light" | "dark";
264
262
  width: string | number;
263
+ height: string | number;
265
264
  readonly: boolean;
266
265
  showToolbar: boolean;
266
+ theme: "light" | "dark";
267
267
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
268
268
  declare const _default: typeof __VLS_export;
269
269
  //#endregion
@@ -9,11 +9,11 @@ type __VLS_Props = {
9
9
  autoPreview?: boolean;
10
10
  };
11
11
  declare const __VLS_export: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
12
- download: (file: string | File) => any;
13
12
  preview: (file: string | File) => any;
13
+ download: (file: string | File) => any;
14
14
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
15
- onDownload?: ((file: string | File) => any) | undefined;
16
15
  onPreview?: ((file: string | File) => any) | undefined;
16
+ onDownload?: ((file: string | File) => any) | undefined;
17
17
  }>, {
18
18
  fileName: string;
19
19
  autoPreview: boolean;
@@ -79,18 +79,18 @@ type __VLS_Slots = {} & {
79
79
  footer?: (props: typeof __VLS_5) => any;
80
80
  };
81
81
  declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
82
- "load-more": () => any;
83
82
  "item-click": (item: WaterFallItem, index: number) => any;
83
+ "load-more": () => any;
84
84
  "image-loaded": (item: WaterFallItem) => any;
85
85
  "image-error": (item: WaterFallItem) => any;
86
86
  }, string, vue.PublicProps, Readonly<WaterFallProps> & Readonly<{
87
- "onLoad-more"?: (() => any) | undefined;
88
87
  "onItem-click"?: ((item: WaterFallItem, index: number) => any) | undefined;
88
+ "onLoad-more"?: (() => any) | undefined;
89
89
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
90
90
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
91
91
  }>, {
92
- loading: boolean;
93
92
  columns: number;
93
+ loading: boolean;
94
94
  gap: number;
95
95
  lazy: boolean;
96
96
  infinite: boolean;
@@ -885,6 +885,7 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
885
885
  } | undefined;
886
886
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
887
887
  save: (rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any;
888
+ cancel: (rowData: DataRecord, rowIndex: number) => any;
888
889
  "pagination-change": (...args: unknown[]) => any;
889
890
  "row-delete": (...args: unknown[]) => any;
890
891
  "expand-change": (expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any;
@@ -892,7 +893,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
892
893
  "child-selection-change": (parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any;
893
894
  "parent-child-link-change": (parentKey: DataTableRowKey$1, shouldSelect: boolean) => any;
894
895
  "update:data": (data: DataRecord[]) => any;
895
- cancel: (rowData: DataRecord, rowIndex: number) => any;
896
896
  "row-add": (newRow: DataRecord) => any;
897
897
  "row-copy": (originalRow: DataRecord, newRow: DataRecord) => any;
898
898
  "row-move": (row: DataRecord, fromIndex: number, toIndex: number) => any;
@@ -901,6 +901,7 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
901
901
  "column-change": (columns: TableColumn[]) => any;
902
902
  }, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{
903
903
  onSave?: ((rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
904
+ onCancel?: ((rowData: DataRecord, rowIndex: number) => any) | undefined;
904
905
  "onPagination-change"?: ((...args: unknown[]) => any) | undefined;
905
906
  "onRow-delete"?: ((...args: unknown[]) => any) | undefined;
906
907
  "onExpand-change"?: ((expandedKeys: DataTableRowKey$1[], row?: DataRecord | undefined, expanded?: boolean | undefined) => any) | undefined;
@@ -908,7 +909,6 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props, {
908
909
  "onChild-selection-change"?: ((parentKey: DataTableRowKey$1, childKeys: DataTableRowKey$1[], childRows: any[]) => any) | undefined;
909
910
  "onParent-child-link-change"?: ((parentKey: DataTableRowKey$1, shouldSelect: boolean) => any) | undefined;
910
911
  "onUpdate:data"?: ((data: DataRecord[]) => any) | undefined;
911
- onCancel?: ((rowData: DataRecord, rowIndex: number) => any) | undefined;
912
912
  "onRow-add"?: ((newRow: DataRecord) => any) | undefined;
913
913
  "onRow-copy"?: ((originalRow: DataRecord, newRow: DataRecord) => any) | undefined;
914
914
  "onRow-move"?: ((row: DataRecord, fromIndex: number, toIndex: number) => any) | undefined;
@@ -50,16 +50,16 @@ 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;
53
54
  size: number;
54
55
  color: string;
56
+ label: string;
57
+ showBorder: boolean;
58
+ margin: number;
59
+ showLabel: boolean;
55
60
  bgColor: string;
56
61
  errorCorrectionLevel: ErrorCorrectionLevel;
57
- margin: number;
58
- mode: RenderMode;
59
62
  logo: LogoOptions;
60
- showBorder: boolean;
61
- label: string;
62
- showLabel: boolean;
63
63
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
64
64
  declare const _default: typeof __VLS_export;
65
65
  //#endregion
@@ -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
- search: (params: SearchFormParams) => any;
59
58
  reset: () => any;
59
+ search: (params: SearchFormParams) => any;
60
60
  "change-params": (params: SearchFormParams) => any;
61
61
  }, string, vue.PublicProps, Readonly<Props> & Readonly<{
62
- onSearch?: ((params: SearchFormParams) => any) | undefined;
63
62
  onReset?: (() => any) | undefined;
63
+ onSearch?: ((params: SearchFormParams) => any) | undefined;
64
64
  "onChange-params"?: ((params: SearchFormParams) => any) | undefined;
65
65
  }>, {
66
66
  size: "small" | "medium" | "large";
@@ -91,25 +91,25 @@ interface SignatureEmits {
91
91
  //#endregion
92
92
  //#region src/components/C_Signature/index.vue.d.ts
93
93
  declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
94
- change: (data: SignatureStroke[]) => any;
95
94
  clear: () => any;
95
+ change: (data: SignatureStroke[]) => any;
96
96
  "start-draw": () => any;
97
97
  drawing: (point: SignaturePoint) => any;
98
98
  "end-draw": (stroke: SignatureStroke) => any;
99
99
  undo: () => any;
100
100
  redo: () => any;
101
101
  }, string, vue.PublicProps, Readonly<SignatureProps> & Readonly<{
102
- onChange?: ((data: SignatureStroke[]) => any) | undefined;
103
102
  onClear?: (() => any) | undefined;
103
+ onChange?: ((data: SignatureStroke[]) => any) | undefined;
104
104
  "onStart-draw"?: (() => any) | undefined;
105
105
  onDrawing?: ((point: SignaturePoint) => any) | undefined;
106
106
  "onEnd-draw"?: ((stroke: SignatureStroke) => any) | undefined;
107
107
  onUndo?: (() => any) | undefined;
108
108
  onRedo?: (() => any) | undefined;
109
109
  }>, {
110
- height: number | string;
111
- disabled: boolean;
112
110
  width: number | string;
111
+ disabled: boolean;
112
+ height: number | string;
113
113
  readonly: boolean;
114
114
  showToolbar: boolean;
115
115
  maxHistory: number;
@@ -78,15 +78,15 @@ declare const __VLS_base: vue.DefineComponent<Props, SplitPaneExpose, {}, {}, {}
78
78
  "onDrag-start"?: ((size: number) => any) | undefined;
79
79
  "onDrag-end"?: ((size: number) => any) | undefined;
80
80
  }>, {
81
- direction: SplitDirection;
82
81
  disabled: boolean;
82
+ step: number;
83
+ direction: SplitDirection;
83
84
  defaultSize: number;
84
85
  minSize: number;
85
86
  maxSize: number;
86
87
  collapsible: boolean;
87
88
  showCollapseButton: boolean;
88
89
  gutterSize: number;
89
- step: number;
90
90
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
91
91
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
92
92
  declare const _default: typeof __VLS_export;
@@ -49,10 +49,10 @@ declare const __VLS_export: vue.DefineComponent<TimeProps, TimeExpose, {}, {}, {
49
49
  "onChange-end"?: ((time: number | null) => any) | undefined;
50
50
  }>, {
51
51
  mode: TimeMode;
52
- placeholder: string;
53
- format: string;
54
52
  startPlaceholder: string;
55
53
  endPlaceholder: string;
54
+ placeholder: string;
55
+ format: string;
56
56
  useHours: boolean;
57
57
  useMinutes: boolean;
58
58
  useSeconds: boolean;
@@ -90,29 +90,28 @@ type __VLS_Slots = {} & {
90
90
  'toolbar-actions'?: (props: typeof __VLS_13) => any;
91
91
  };
92
92
  declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
93
- refresh: () => any;
94
93
  add: (parentNode?: TreeNodeData | undefined) => any;
94
+ refresh: () => any;
95
95
  "node-select": (node: TreeNodeData | null, selectedKeys: (string | number)[]) => any;
96
96
  "node-action": (action: string, node: TreeNodeData) => any;
97
97
  "node-drop": (info: DropInfo) => any;
98
98
  }, string, vue.PublicProps, Readonly<TreeProps> & Readonly<{
99
- onRefresh?: (() => any) | undefined;
100
99
  onAdd?: ((parentNode?: TreeNodeData | undefined) => any) | undefined;
100
+ onRefresh?: (() => any) | undefined;
101
101
  "onNode-select"?: ((node: TreeNodeData | null, selectedKeys: (string | number)[]) => any) | undefined;
102
102
  "onNode-action"?: ((action: string, node: TreeNodeData) => any) | undefined;
103
103
  "onNode-drop"?: ((info: DropInfo) => any) | undefined;
104
104
  }>, {
105
105
  mode: TreeMode;
106
- actions: ActionConfig[];
106
+ showToolbar: boolean;
107
107
  labelField: string;
108
- keyField: string;
109
108
  childrenField: string;
110
- showToolbar: boolean;
111
- draggable: boolean;
112
- defaultExpandAll: boolean;
109
+ actions: ActionConfig[];
110
+ keyField: string;
113
111
  searchPattern: string;
114
112
  searchable: boolean;
115
113
  searchPlaceholder: string;
114
+ draggable: boolean;
116
115
  showLine: boolean;
117
116
  addable: boolean;
118
117
  addText: string;
@@ -120,6 +119,7 @@ declare const __VLS_base: vue.DefineComponent<TreeProps, TreeExpose, {}, {}, {},
120
119
  iconField: string;
121
120
  iconConfig: IconConfig;
122
121
  statusConfigs: StatusConfig[];
122
+ defaultExpandAll: boolean;
123
123
  defaultExpandedKeys: (string | number)[];
124
124
  defaultSelectedKeys: (string | number)[];
125
125
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -240,19 +240,19 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
240
240
  "update:modelValue": (value: WorkflowData) => any;
241
241
  change: (value: WorkflowData) => any;
242
242
  save: (data: WorkflowData) => any;
243
+ "validate-error": (errors: ValidationError[]) => any;
243
244
  "node-click": (node: WorkflowNode) => any;
244
245
  "edge-click": (edge: WorkflowEdge) => 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
249
  onSave?: ((data: WorkflowData) => any) | undefined;
250
+ "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
250
251
  "onNode-click"?: ((node: WorkflowNode) => any) | undefined;
251
252
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
252
- "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
253
253
  }>, {
254
- theme: "light" | "dark";
255
254
  readonly: boolean;
255
+ theme: "light" | "dark";
256
256
  users: User[];
257
257
  roles: Role[];
258
258
  departments: Department[];
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.10.0",
6
+ "version": "0.10.2",
7
7
  "description": "基于 Naive UI 的 Vue 3 组件库",
8
8
  "type": "module",
9
9
  "main": "dist/index.cjs",
@@ -79,6 +79,7 @@
79
79
  "format": "prettier --write src/"
80
80
  },
81
81
  "peerDependencies": {
82
+ "@robot-admin/form-validate": ">=2.0.0 <4.0.0",
82
83
  "vue": "^3.5.0",
83
84
  "naive-ui": "^2.35.0",
84
85
  "vue-router": "^4.0.0"
@@ -96,7 +97,6 @@
96
97
  "@fullcalendar/vue3": "^6.1.0",
97
98
  "@iconify/vue": "^5.0.0",
98
99
  "@kangc/v-md-editor": "^2.3.0",
99
- "@robot-admin/form-validate": "latest",
100
100
  "@tato30/vue-pdf": "^1.11.0",
101
101
  "@visactor/vtable": "^1.0.0",
102
102
  "@visactor/vtable-gantt": "^1.0.0",
@@ -125,6 +125,7 @@
125
125
  "@commitlint/cli": "^20.4.2",
126
126
  "@commitlint/config-conventional": "^20.4.2",
127
127
  "@robot-admin/git-standards": "1.0.3",
128
+ "@robot-admin/form-validate": "2.0.0",
128
129
  "@types/node": "^24.2.1",
129
130
  "@types/sortablejs": "^1.15.9",
130
131
  "@typescript-eslint/eslint-plugin": "^8.56.1",
package/dist/_shared.cjs DELETED
@@ -1 +0,0 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./menuAdapter.js`);exports.createMenuOptions=e.t,exports.flattenRoutes=e.n;
@@ -1,2 +0,0 @@
1
- import { a as RouteItem, i as BreadcrumbItem, n as createMenuOptions, o as RouteMeta, r as flattenRoutes, s as TagItem, t as MenuAdapterConfig } from "./menuAdapter.js";
2
- export { type BreadcrumbItem, type MenuAdapterConfig, type RouteItem, type RouteMeta, type TagItem, createMenuOptions, flattenRoutes };
package/dist/_shared.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { a as RouteItem, i as BreadcrumbItem, n as createMenuOptions, o as RouteMeta, r as flattenRoutes, s as TagItem, t as MenuAdapterConfig } from "./menuAdapter.js";
2
- export { type BreadcrumbItem, type MenuAdapterConfig, type RouteItem, type RouteMeta, type TagItem, createMenuOptions, flattenRoutes };
package/dist/_shared.js DELETED
@@ -1 +0,0 @@
1
- import{n as e,t}from"./menuAdapter.js";export{t as createMenuOptions,e as flattenRoutes};
@@ -1,2 +0,0 @@
1
- import{h as e}from"vue";import{Icon as t}from"@iconify/vue";const n=e=>e.startsWith(`/`)?e:`/${e}`,r=e=>e.path?n(e.path):``,i=e=>e.meta?.title||e.name||``,a=e=>!e.meta?.hidden,o=n=>{if(n){if(typeof n==`string`)return()=>e(`span`,{class:`n-icon`,style:`display: inline-flex; align-items: center;`},[e(t,{icon:n})]);if(typeof n==`function`)return n}};function s(e,t={}){let{labelFormatter:n=e=>e,getKey:s=r,getLabel:c=i,filter:l=a,renderIcon:u=o,recursive:d=!0}=t,f=e=>e.filter(l).map(e=>{let t=e.meta?.icon||e.icon,r=d&&e.children?.length?f(e.children):void 0;return{key:s(e),label:n(c(e)),disabled:e.disabled||!1,icon:u(t),...e.type&&{type:e.type},...r?.length&&{children:r}}});return f(e)}function c(e,t=a){let n=[],r=e=>{for(let i of e)t(i)&&n.push(i),i.children?.length&&r(i.children)};return r(e),n}export{c as n,s as t};
2
- //# sourceMappingURL=menuAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menuAdapter.js","names":[],"sources":["../src/components/_shared/menuAdapter.ts"],"sourcesContent":["/**\n * 菜单适配器 — 将路由数据转换为 NMenu 的 MenuOption[]\n *\n * 设计理念:\n * - 开箱即用:`createMenuOptions(routes)` 零配置即可生成菜单\n * - 完全可控:通过 `MenuAdapterConfig` 定制每一步转换逻辑\n * - i18n 解耦:`labelFormatter` 回调注入翻译函数,不绑定任何 i18n 方案\n *\n * @example 基础用法\n * ```ts\n * import { createMenuOptions } from '@robot-admin/naive-ui-components'\n *\n * const menuOptions = createMenuOptions(routes)\n * ```\n *\n * @example 带 i18n + 过滤\n * ```ts\n * const menuOptions = createMenuOptions(routes, {\n * labelFormatter: t, // vue-i18n 的 t 函数\n * filter: route => !route.meta?.hidden,\n * })\n * ```\n *\n * @example 自定义 key 取值\n * ```ts\n * const menuOptions = createMenuOptions(routes, {\n * getKey: route => route.name || route.path,\n * })\n * ```\n */\n\nimport { h, type VNode } from 'vue'\nimport { Icon } from '@iconify/vue'\nimport type { MenuOption } from 'naive-ui/es'\nimport type { RouteItem } from './types'\n\n/**\n * 菜单适配器配置\n */\nexport interface MenuAdapterConfig {\n /**\n * 标签文本格式化函数(用于 i18n)\n * 默认:原样返回 title\n */\n labelFormatter?: (title: string) => string\n\n /**\n * 获取菜单项的唯一 key\n * 默认:`normalizePath(route.path)`\n */\n getKey?: (route: RouteItem) => string\n\n /**\n * 获取显示文本\n * 默认:`route.meta?.title || route.name || ''`\n */\n getLabel?: (route: RouteItem) => string\n\n /**\n * 路由过滤器 — return false 排除该项\n * 默认:排除 `meta.hidden === true`\n */\n filter?: (route: RouteItem) => boolean\n\n /**\n * 自定义图标渲染\n * 默认:字符串 → Iconify Icon;函数 → 直接调用\n */\n renderIcon?: (\n icon: string | (() => VNode) | undefined\n ) => (() => VNode) | undefined\n\n /**\n * 是否递归处理 children\n * 默认:true\n */\n recursive?: boolean\n}\n\n// ====== 内置默认值 ======\n\nconst normalizePath = (path: string): string =>\n path.startsWith('/') ? path : `/${path}`\n\nconst defaultGetKey = (route: RouteItem): string =>\n route.path ? normalizePath(route.path) : ''\n\nconst defaultGetLabel = (route: RouteItem): string =>\n route.meta?.title || route.name || ''\n\nconst defaultFilter = (route: RouteItem): boolean => !route.meta?.hidden\n\nconst defaultRenderIcon = (\n icon: string | (() => VNode) | undefined\n): (() => VNode) | undefined => {\n if (!icon) return undefined\n if (typeof icon === 'string') {\n return () =>\n h(\n 'span',\n {\n class: 'n-icon',\n style: 'display: inline-flex; align-items: center;',\n },\n [h(Icon, { icon })]\n )\n }\n if (typeof icon === 'function') return icon\n return undefined\n}\n\n/**\n * 将路由数据转换为 NMenu 的 MenuOption[]\n *\n * 支持的输入格式:\n * 1. **Vue Router RouteRecordRaw** — 直接传 `router.getRoutes()` 或手写路由表\n * 2. **后端 JSON 路由表** — `{ path, meta: { title, icon }, children }`\n * 3. **自定义格式** — 通过 config 完全自定义 key/label/icon 的取值逻辑\n *\n * @param routes 路由数据数组\n * @param config 适配器配置\n * @returns NMenu 可直接使用的 MenuOption[]\n */\nexport function createMenuOptions(\n routes: RouteItem[],\n config: MenuAdapterConfig = {}\n): MenuOption[] {\n const {\n labelFormatter = (s: string) => s,\n getKey = defaultGetKey,\n getLabel = defaultGetLabel,\n filter = defaultFilter,\n renderIcon = defaultRenderIcon,\n recursive = true,\n } = config\n\n const convert = (items: RouteItem[]): MenuOption[] => {\n return items.filter(filter).map(item => {\n const icon = item.meta?.icon || (item as any).icon\n const children =\n recursive && item.children?.length ? convert(item.children) : undefined\n\n return {\n key: getKey(item),\n label: labelFormatter(getLabel(item)),\n disabled: item.disabled || false,\n icon: renderIcon(icon),\n ...(item.type && { type: item.type }),\n ...(children?.length && { children }),\n }\n }) as MenuOption[]\n }\n\n return convert(routes)\n}\n\n/**\n * 将路由树扁平化为一维数组(常用于搜索、快捷导航)\n *\n * @param routes 路由数据数组\n * @param filter 过滤器(默认排除 hidden)\n * @returns 扁平化后的路由数组\n */\nexport function flattenRoutes(\n routes: RouteItem[],\n filter: (route: RouteItem) => boolean = defaultFilter\n): RouteItem[] {\n const result: RouteItem[] = []\n const walk = (items: RouteItem[]) => {\n for (const item of items) {\n if (filter(item)) {\n result.push(item)\n }\n if (item.children?.length) {\n walk(item.children)\n }\n }\n }\n walk(routes)\n return result\n}\n"],"mappings":"4DAiFA,MAAM,EAAiB,GACrB,EAAK,WAAW,IAAI,CAAG,EAAO,IAAI,IAE9B,EAAiB,GACrB,EAAM,KAAO,EAAc,EAAM,KAAK,CAAG,GAErC,EAAmB,GACvB,EAAM,MAAM,OAAS,EAAM,MAAQ,GAE/B,EAAiB,GAA8B,CAAC,EAAM,MAAM,OAE5D,EACJ,GAC8B,CACzB,KACL,IAAI,OAAO,GAAS,SAClB,UACE,EACE,OACA,CACE,MAAO,SACP,MAAO,6CACR,CACD,CAAC,EAAE,EAAM,CAAE,OAAM,CAAC,CAAC,CACpB,CAEL,GAAI,OAAO,GAAS,WAAY,OAAO,IAgBzC,SAAgB,EACd,EACA,EAA4B,EAAE,CAChB,CACd,GAAM,CACJ,iBAAkB,GAAc,EAChC,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,IACV,EAEE,EAAW,GACR,EAAM,OAAO,EAAO,CAAC,IAAI,GAAQ,CACtC,IAAM,EAAO,EAAK,MAAM,MAAS,EAAa,KACxC,EACJ,GAAa,EAAK,UAAU,OAAS,EAAQ,EAAK,SAAS,CAAG,IAAA,GAEhE,MAAO,CACL,IAAK,EAAO,EAAK,CACjB,MAAO,EAAe,EAAS,EAAK,CAAC,CACrC,SAAU,EAAK,UAAY,GAC3B,KAAM,EAAW,EAAK,CACtB,GAAI,EAAK,MAAQ,CAAE,KAAM,EAAK,KAAM,CACpC,GAAI,GAAU,QAAU,CAAE,WAAU,CACrC,EACD,CAGJ,OAAO,EAAQ,EAAO,CAUxB,SAAgB,EACd,EACA,EAAwC,EAC3B,CACb,IAAM,EAAsB,EAAE,CACxB,EAAQ,GAAuB,CACnC,IAAK,IAAM,KAAQ,EACb,EAAO,EAAK,EACd,EAAO,KAAK,EAAK,CAEf,EAAK,UAAU,QACjB,EAAK,EAAK,SAAS,EAKzB,OADA,EAAK,EAAO,CACL"}