@robot-admin/naive-ui-components 0.24.6 → 0.25.0

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 (99) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +5 -1
  3. package/README_EN.md +5 -1
  4. package/dist/C_Form.base.css +23 -11
  5. package/dist/C_Form.css +23 -11
  6. package/dist/C_FormSearch.css +79 -79
  7. package/dist/C_Table.base.css +145 -120
  8. package/dist/C_Table.css +122 -109
  9. package/dist/C_Table2.cjs +2 -2
  10. package/dist/C_Table2.js +2 -2
  11. package/dist/config.d.cts +2 -2
  12. package/dist/config.d.ts +2 -2
  13. package/dist/constants2.d.cts +6 -6
  14. package/dist/constants2.d.ts +6 -6
  15. package/dist/constants3.d.cts +3 -3
  16. package/dist/constants3.d.ts +3 -3
  17. package/dist/data.d.cts +2 -2
  18. package/dist/data.d.ts +2 -2
  19. package/dist/data2.d.cts +8 -8
  20. package/dist/data2.d.ts +8 -8
  21. package/dist/dictionary.cjs +1 -1
  22. package/dist/dictionary.d.cts +10 -1
  23. package/dist/dictionary.d.ts +10 -1
  24. package/dist/dictionary.js +1 -1
  25. package/dist/helpers.cjs +1 -1
  26. package/dist/helpers.js +1 -1
  27. package/dist/index.d.cts +2 -2
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.vue.d.cts +5 -5
  30. package/dist/index.vue.d.ts +5 -5
  31. package/dist/index10.vue.d.ts +4 -4
  32. package/dist/index11.vue.d.cts +4 -4
  33. package/dist/index13.vue.d.ts +3 -3
  34. package/dist/index14.vue.d.cts +3 -3
  35. package/dist/index15.vue.d.ts +8 -8
  36. package/dist/index16.vue.d.cts +8 -8
  37. package/dist/index17.vue.d.ts +3 -3
  38. package/dist/index18.vue.d.cts +3 -3
  39. package/dist/index18.vue.d.ts +2 -2
  40. package/dist/index19.vue.d.cts +2 -2
  41. package/dist/index19.vue.d.ts +1 -1
  42. package/dist/index2.vue.d.cts +3 -3
  43. package/dist/index2.vue.d.ts +3 -3
  44. package/dist/index20.vue.d.cts +1 -1
  45. package/dist/index21.vue.d.ts +1 -1
  46. package/dist/index22.vue.d.cts +1 -1
  47. package/dist/index22.vue.d.ts +2 -2
  48. package/dist/index23.vue.d.cts +2 -2
  49. package/dist/index23.vue.d.ts +2 -2
  50. package/dist/index24.vue.d.cts +1 -1
  51. package/dist/index24.vue.d.ts +1 -1
  52. package/dist/index25.vue.d.cts +1 -1
  53. package/dist/index25.vue.d.ts +1 -1
  54. package/dist/index26.vue.d.cts +2 -2
  55. package/dist/index26.vue.d.ts +2 -2
  56. package/dist/index28.vue.d.cts +1 -1
  57. package/dist/index28.vue.d.ts +1 -1
  58. package/dist/index29.vue.d.cts +1 -1
  59. package/dist/index29.vue.d.ts +1 -1
  60. package/dist/index3.vue.d.cts +6 -6
  61. package/dist/index3.vue.d.ts +6 -6
  62. package/dist/index5.vue.d.cts +2 -2
  63. package/dist/index7.vue.d.ts +1 -1
  64. package/dist/index8.vue.d.cts +1 -1
  65. package/dist/mapUtils.d.cts +1 -1
  66. package/dist/mapUtils.d.ts +1 -1
  67. package/dist/serializeSearch.cjs +1 -1
  68. package/dist/serializeSearch.js +1 -1
  69. package/dist/style.css +224 -199
  70. package/dist/useCalendarEvents.d.cts +1 -1
  71. package/dist/useCalendarEvents.d.ts +1 -1
  72. package/dist/useCollapsePanel.d.cts +6 -6
  73. package/dist/useCollapsePanel.d.ts +6 -6
  74. package/dist/useComponentLocale.cjs +1 -1
  75. package/dist/useComponentLocale.js +1 -1
  76. package/dist/useCropperCore.d.cts +5 -5
  77. package/dist/useCropperCore.d.ts +5 -5
  78. package/dist/useDictionary.cjs +1 -1
  79. package/dist/useDictionary.js +1 -1
  80. package/dist/useDynamicFormState.d.cts +22 -13
  81. package/dist/useDynamicFormState.d.ts +22 -13
  82. package/dist/useEdgeInteraction.d.cts +2 -2
  83. package/dist/useEdgeInteraction.d.ts +2 -2
  84. package/dist/useFormConfig.d.cts +2 -0
  85. package/dist/useFormConfig.d.ts +2 -0
  86. package/dist/useInfiniteScroll.d.cts +1 -1
  87. package/dist/useInfiniteScroll.d.ts +1 -1
  88. package/dist/useQRCode.d.cts +2 -2
  89. package/dist/useQRCode.d.ts +2 -2
  90. package/dist/useSignatureHistory.d.cts +6 -6
  91. package/dist/useSignatureHistory.d.ts +6 -6
  92. package/dist/useSplitResize.d.cts +7 -7
  93. package/dist/useSplitResize.d.ts +7 -7
  94. package/dist/useWorkflowValidation.d.cts +5 -5
  95. package/dist/useWorkflowValidation.d.ts +5 -5
  96. package/dist/verification.d.cts +5 -5
  97. package/dist/verification.d.ts +5 -5
  98. package/docs/guides/data-workflows.md +9 -0
  99. package/package.json +1 -1
@@ -38,6 +38,8 @@ interface UseFormRendererOptions {
38
38
  asyncLoadingMap: Ref<Record<string, boolean>>;
39
39
  getDictionaryOptions?: (field: string) => readonly DictionaryOption[];
40
40
  isDictionaryLoading?: (field: string) => boolean;
41
+ getOptionsError?: (field: string) => unknown;
42
+ reloadOptions?: (field: string) => Promise<void>;
41
43
  renderers?: ComputedRef<Record<string, FormRenderer> | undefined>;
42
44
  /** Overrides application injection. An isolated registry never reads legacy globals. */
43
45
  registry?: FormRendererRegistry;
@@ -79,10 +81,10 @@ declare const __VLS_export$3: <T extends object = FormRecord>(__VLS_props: NonNu
79
81
  config?: FormConfig<T>; /** 当前表单实例的自定义渲染器,不污染全局注册表 */
80
82
  renderers?: Record<string, FormRenderer>;
81
83
  } & {
82
- "onUpdate:modelValue"?: ((model: T) => any) | undefined;
83
84
  onSubmit?: ((payload: SubmitEventPayload<T>) => any) | undefined;
84
- "onValidate-success"?: ((model: T) => any) | undefined;
85
+ "onUpdate:modelValue"?: ((model: T) => any) | undefined;
85
86
  "onValidate-error"?: ((errors: unknown) => any) | undefined;
87
+ "onValidate-success"?: ((model: T) => any) | undefined;
86
88
  }> & (typeof globalThis extends {
87
89
  __VLS_PROPS_FALLBACK: infer P;
88
90
  } ? P : {});
@@ -112,13 +114,14 @@ declare const __VLS_export$3: <T extends object = FormRecord>(__VLS_props: NonNu
112
114
  markAsClean: () => void;
113
115
  asyncLoadingMap: Ref<Record<string, boolean>, Record<string, boolean>>;
114
116
  asyncErrorMap: Ref<Record<string, unknown>, Record<string, unknown>>;
117
+ getDictionaryError: (key: string) => unknown;
115
118
  reloadOptions: (field?: string) => Promise<void>;
116
119
  isSubmitting: Ref<boolean, boolean>;
117
120
  submit: () => Promise<boolean>;
118
121
  }>) => void;
119
122
  attrs: any;
120
123
  slots: FormSlots<T>;
121
- emit: ((evt: "update:modelValue", model: T) => void) & ((evt: "submit", payload: SubmitEventPayload<T>) => void) & ((evt: "validate-success", model: T) => void) & ((evt: "validate-error", errors: unknown) => void);
124
+ emit: ((evt: "submit", payload: SubmitEventPayload<T>) => void) & ((evt: "update:modelValue", model: T) => void) & ((evt: "validate-error", errors: unknown) => void) & ((evt: "validate-success", model: T) => void);
122
125
  }>) => vue.VNode & {
123
126
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
124
127
  };
@@ -189,8 +192,8 @@ declare function setupHighlight(app: App, options?: HighlightPluginOptions): Hig
189
192
  //#region src/components/C_Table/index.vue.d.ts
190
193
  declare const __VLS_export$2: <T extends object = DataRecord, C = unknown>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal$2<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
191
194
  props: vue.PublicProps & __VLS_PrettifyLocal$2<TableRuntimeProps<T, C> & {
192
- onCancel?: ((rowData: T, rowIndex: number) => any) | undefined;
193
195
  onSave?: ((rowData: T, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
196
+ onCancel?: ((rowData: T, rowIndex: number) => any) | undefined;
194
197
  "onPagination-change"?: ((page: number, pageSize: number) => any) | undefined;
195
198
  "onRow-delete"?: ((deletedRow: T, index: number) => any) | undefined;
196
199
  "onBatch-action-error"?: ((error: unknown, actionKey: string) => any) | undefined;
@@ -225,7 +228,7 @@ declare const __VLS_export$2: <T extends object = DataRecord, C = unknown>(__VLS
225
228
  } & {
226
229
  empty?: (props: {}) => any;
227
230
  };
228
- emit: ((evt: "cancel", rowData: T, rowIndex: number) => void) & ((evt: "save", rowData: T, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", page: number, pageSize: number) => void) & ((evt: "row-delete", deletedRow: T, index: number) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<T>[]) => void) & ((evt: "row-add", newRow: T) => void) & ((evt: "row-copy", originalRow: T, newRow: T) => void) & ((evt: "row-move", row: T, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: T | null) => void) & ((evt: "view-detail", data: T) => void) & ((evt: "column-change", columns: TableColumn<T>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: T | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: T[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: C[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: T[]) => void) & ((evt: "edit-error", error: unknown) => void);
231
+ emit: ((evt: "save", rowData: T, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "cancel", rowData: T, rowIndex: number) => void) & ((evt: "pagination-change", page: number, pageSize: number) => void) & ((evt: "row-delete", deletedRow: T, index: number) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<T>[]) => void) & ((evt: "row-add", newRow: T) => void) & ((evt: "row-copy", originalRow: T, newRow: T) => void) & ((evt: "row-move", row: T, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: T | null) => void) & ((evt: "view-detail", data: T) => void) & ((evt: "column-change", columns: TableColumn<T>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: T | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: T[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: C[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: T[]) => void) & ((evt: "edit-error", error: unknown) => void);
229
232
  }>) => vue.VNode & {
230
233
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
231
234
  };
@@ -302,6 +305,11 @@ interface UseTableColumnsReturn {
302
305
  computedColumns: ComputedRef<DataTableColumn[]>;
303
306
  computedScrollX: ComputedRef<number | string | undefined>;
304
307
  getDictionaryLabel: (column: TableColumn, value: unknown) => string;
308
+ dictionaryStatus: ComputedRef<{
309
+ failed: number;
310
+ loading: number;
311
+ }>;
312
+ retryDictionaries: () => Promise<void>;
305
313
  handleColumnChange: (columns: TableColumn[]) => void;
306
314
  }
307
315
  /**
@@ -957,15 +965,15 @@ interface TreeSlots<T extends object = TreeOption$1> {
957
965
  declare const __VLS_export$1: <T extends object = TreeNodeData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal$1<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
958
966
  props: vue.PublicProps & __VLS_PrettifyLocal$1<TreeProps$1<T> & {
959
967
  onAdd?: ((parentNode?: T | undefined) => any) | undefined;
968
+ "onLoad-error"?: ((error: unknown, node: T) => any) | undefined;
969
+ "onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
970
+ onRefresh?: (() => any) | undefined;
960
971
  "onUpdate:searchPattern"?: ((pattern: string) => any) | undefined;
961
- "onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => any) | undefined;
962
- "onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => any) | undefined;
963
- "onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => any) | undefined;
972
+ "onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
973
+ "onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => any) | undefined;
964
974
  "onNode-select"?: ((node: T | null, selectedKeys: TreeKey[]) => any) | undefined;
965
975
  "onNode-action"?: ((action: string, node: T) => any) | undefined;
966
976
  "onNode-drop"?: ((info: DropInfo<T>) => any) | undefined;
967
- "onLoad-error"?: ((error: unknown, node: T) => any) | undefined;
968
- onRefresh?: (() => any) | undefined;
969
977
  }> & (typeof globalThis extends {
970
978
  __VLS_PROPS_FALLBACK: infer P;
971
979
  } ? P : {});
@@ -976,7 +984,7 @@ declare const __VLS_export$1: <T extends object = TreeNodeData>(__VLS_props: Non
976
984
  }>) => void;
977
985
  attrs: any;
978
986
  slots: TreeSlots<T>;
979
- emit: ((evt: "add", parentNode?: T | undefined) => void) & ((evt: "update:searchPattern", pattern: string) => void) & ((evt: "update:expandedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => void) & ((evt: "update:selectedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => void) & ((evt: "update:checkedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "expand" | "unselect" | "collapse" | "check" | "uncheck">) => void) & ((evt: "node-select", node: T | null, selectedKeys: TreeKey[]) => void) & ((evt: "node-action", action: string, node: T) => void) & ((evt: "node-drop", info: DropInfo<T>) => void) & ((evt: "load-error", error: unknown, node: T) => void) & ((evt: "refresh") => void);
987
+ emit: ((evt: "add", parentNode?: T | undefined) => void) & ((evt: "load-error", error: unknown, node: T) => void) & ((evt: "update:expandedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "refresh") => void) & ((evt: "update:searchPattern", pattern: string) => void) & ((evt: "update:selectedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "update:checkedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "expand" | "collapse" | "select" | "unselect" | "check" | "uncheck">) => void) & ((evt: "node-select", node: T | null, selectedKeys: TreeKey[]) => void) & ((evt: "node-action", action: string, node: T) => void) & ((evt: "node-drop", info: DropInfo<T>) => void);
980
988
  }>) => vue.VNode & {
981
989
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
982
990
  };
@@ -1057,8 +1065,8 @@ interface FormModalEmits<T extends object = FormRecord> {
1057
1065
  //#region src/components/C_FormModal/index.vue.d.ts
1058
1066
  declare const __VLS_export: <T extends object = FormRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
1059
1067
  props: vue.PublicProps & __VLS_PrettifyLocal<FormModalProps<T> & {
1060
- onClose?: (() => any) | undefined;
1061
1068
  onSubmit?: ((payload: SubmitEventPayload<T>, saved: boolean) => any) | undefined;
1069
+ onClose?: (() => any) | undefined;
1062
1070
  }> & (typeof globalThis extends {
1063
1071
  __VLS_PROPS_FALLBACK: infer P;
1064
1072
  } ? P : {});
@@ -1067,7 +1075,7 @@ declare const __VLS_export: <T extends object = FormRecord>(__VLS_props: NonNull
1067
1075
  slots: {
1068
1076
  [x: string]: ((props: any) => any) | undefined;
1069
1077
  };
1070
- emit: ((evt: "close") => void) & ((evt: "submit", payload: SubmitEventPayload<T>, saved: boolean) => void);
1078
+ emit: ((evt: "submit", payload: SubmitEventPayload<T>, saved: boolean) => void) & ((evt: "close") => void);
1071
1079
  }>) => vue.VNode & {
1072
1080
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
1073
1081
  };
@@ -1130,6 +1138,7 @@ declare function useFormState(options: ComputedRef<FormOption[]>, config: Comput
1130
1138
  asyncErrorMap: Ref<Record<string, unknown>, Record<string, unknown>>;
1131
1139
  getDictionaryOptions: (key: string) => readonly DictionaryOption[];
1132
1140
  isDictionaryLoading: (key: string) => boolean;
1141
+ getDictionaryError: (key: string) => unknown;
1133
1142
  reloadOptions: (field?: string) => Promise<void>;
1134
1143
  };
1135
1144
  //#endregion
@@ -264,10 +264,10 @@ declare const __VLS_export: vue.DefineComponent<Props, {
264
264
  onReady?: ((graph: Graph) => any) | undefined;
265
265
  "onData-change"?: ((data: DiagramData) => any) | undefined;
266
266
  }>, {
267
- readonly: boolean;
268
- width: string | number;
269
267
  theme: "light" | "dark";
270
268
  height: string | number;
269
+ width: string | number;
270
+ readonly: boolean;
271
271
  showToolbar: boolean;
272
272
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
273
273
  declare const _default: typeof __VLS_export;
@@ -264,10 +264,10 @@ declare const __VLS_export: vue.DefineComponent<Props, {
264
264
  onReady?: ((graph: Graph) => any) | undefined;
265
265
  "onData-change"?: ((data: DiagramData) => any) | undefined;
266
266
  }>, {
267
- readonly: boolean;
268
- width: string | number;
269
267
  theme: "light" | "dark";
270
268
  height: string | number;
269
+ width: string | number;
270
+ readonly: boolean;
271
271
  showToolbar: boolean;
272
272
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
273
273
  declare const _default: typeof __VLS_export;
@@ -365,6 +365,8 @@ interface FormInstance<T extends object = FormRecord> {
365
365
  asyncLoadingMap: Record<string, boolean>;
366
366
  /** 字段异步选项加载错误 */
367
367
  asyncErrorMap: Record<string, unknown>;
368
+ /** 当前字段字典加载错误;不修改模型,不等同于业务校验错误。 */
369
+ getDictionaryError(field: FieldPath<T>): unknown;
368
370
  /** 重新加载全部或指定字段的异步选项 */
369
371
  reloadOptions(field?: FieldPath<T>): Promise<void>;
370
372
  /** 是否正在提交 */
@@ -365,6 +365,8 @@ interface FormInstance<T extends object = FormRecord> {
365
365
  asyncLoadingMap: Record<string, boolean>;
366
366
  /** 字段异步选项加载错误 */
367
367
  asyncErrorMap: Record<string, unknown>;
368
+ /** 当前字段字典加载错误;不修改模型,不等同于业务校验错误。 */
369
+ getDictionaryError(field: FieldPath<T>): unknown;
368
370
  /** 重新加载全部或指定字段的异步选项 */
369
371
  reloadOptions(field?: FieldPath<T>): Promise<void>;
370
372
  /** 是否正在提交 */
@@ -87,9 +87,9 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
87
87
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
88
88
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
89
89
  }>, {
90
- columns: number;
91
90
  loading: boolean;
92
91
  virtualScroll: boolean;
92
+ columns: number;
93
93
  gap: number;
94
94
  lazy: boolean;
95
95
  infinite: boolean;
@@ -87,9 +87,9 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
87
87
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
88
88
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
89
89
  }>, {
90
- columns: number;
91
90
  loading: boolean;
92
91
  virtualScroll: boolean;
92
+ columns: number;
93
93
  gap: number;
94
94
  lazy: boolean;
95
95
  infinite: boolean;
@@ -50,10 +50,10 @@ 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
- color: string;
55
53
  size: number;
54
+ color: string;
56
55
  label: string;
56
+ mode: RenderMode;
57
57
  showBorder: boolean;
58
58
  showLabel: boolean;
59
59
  bgColor: string;
@@ -50,10 +50,10 @@ 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
- color: string;
55
53
  size: number;
54
+ color: string;
56
55
  label: string;
56
+ mode: RenderMode;
57
57
  showBorder: boolean;
58
58
  showLabel: boolean;
59
59
  bgColor: string;
@@ -92,28 +92,28 @@ interface SignatureEmits {
92
92
  //#endregion
93
93
  //#region src/components/C_Signature/index.vue.d.ts
94
94
  declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
95
- clear: () => any;
95
+ change: (data: SignatureStroke[]) => any;
96
96
  error: (error: Error) => any;
97
+ clear: () => any;
97
98
  "start-draw": () => any;
98
99
  drawing: (point: SignaturePoint) => any;
99
100
  "end-draw": (stroke: SignatureStroke) => any;
100
101
  undo: () => any;
101
102
  redo: () => any;
102
- change: (data: SignatureStroke[]) => any;
103
103
  }, string, vue.PublicProps, Readonly<SignatureProps> & Readonly<{
104
- onClear?: (() => any) | undefined;
104
+ onChange?: ((data: SignatureStroke[]) => any) | undefined;
105
105
  onError?: ((error: Error) => any) | undefined;
106
+ onClear?: (() => any) | undefined;
106
107
  "onStart-draw"?: (() => any) | undefined;
107
108
  onDrawing?: ((point: SignaturePoint) => any) | undefined;
108
109
  "onEnd-draw"?: ((stroke: SignatureStroke) => any) | undefined;
109
110
  onUndo?: (() => any) | undefined;
110
111
  onRedo?: (() => any) | undefined;
111
- onChange?: ((data: SignatureStroke[]) => any) | undefined;
112
112
  }>, {
113
113
  disabled: boolean;
114
- readonly: boolean;
115
- width: number | string;
116
114
  height: number | string;
115
+ width: number | string;
116
+ readonly: boolean;
117
117
  showToolbar: boolean;
118
118
  maxHistory: number;
119
119
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -92,28 +92,28 @@ interface SignatureEmits {
92
92
  //#endregion
93
93
  //#region src/components/C_Signature/index.vue.d.ts
94
94
  declare const __VLS_export: vue.DefineComponent<SignatureProps, SignatureExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
95
- clear: () => any;
95
+ change: (data: SignatureStroke[]) => any;
96
96
  error: (error: Error) => any;
97
+ clear: () => any;
97
98
  "start-draw": () => any;
98
99
  drawing: (point: SignaturePoint) => any;
99
100
  "end-draw": (stroke: SignatureStroke) => any;
100
101
  undo: () => any;
101
102
  redo: () => any;
102
- change: (data: SignatureStroke[]) => any;
103
103
  }, string, vue.PublicProps, Readonly<SignatureProps> & Readonly<{
104
- onClear?: (() => any) | undefined;
104
+ onChange?: ((data: SignatureStroke[]) => any) | undefined;
105
105
  onError?: ((error: Error) => any) | undefined;
106
+ onClear?: (() => any) | undefined;
106
107
  "onStart-draw"?: (() => any) | undefined;
107
108
  onDrawing?: ((point: SignaturePoint) => any) | undefined;
108
109
  "onEnd-draw"?: ((stroke: SignatureStroke) => any) | undefined;
109
110
  onUndo?: (() => any) | undefined;
110
111
  onRedo?: (() => any) | undefined;
111
- onChange?: ((data: SignatureStroke[]) => any) | undefined;
112
112
  }>, {
113
113
  disabled: boolean;
114
- readonly: boolean;
115
- width: number | string;
116
114
  height: number | string;
115
+ width: number | string;
116
+ readonly: boolean;
117
117
  showToolbar: boolean;
118
118
  maxHistory: number;
119
119
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -56,28 +56,28 @@ type __VLS_Slots = {
56
56
  };
57
57
  declare const __VLS_base: vue.DefineComponent<SplitPaneProps, SplitPaneExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
58
58
  expand: (target: CollapseTarget) => any;
59
- "update:size": (size: number) => any;
60
- resize: (firstSize: number, secondSize: number) => any;
61
59
  collapse: (target: CollapseTarget) => any;
62
60
  "drag-start": (size: number) => any;
63
61
  "drag-end": (size: number) => any;
62
+ resize: (firstSize: number, secondSize: number) => any;
63
+ "update:size": (size: number) => any;
64
64
  }, string, vue.PublicProps, Readonly<SplitPaneProps> & Readonly<{
65
65
  onExpand?: ((target: CollapseTarget) => any) | undefined;
66
- "onUpdate:size"?: ((size: number) => any) | undefined;
67
- onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
68
66
  onCollapse?: ((target: CollapseTarget) => any) | undefined;
69
67
  "onDrag-start"?: ((size: number) => any) | undefined;
70
68
  "onDrag-end"?: ((size: number) => any) | undefined;
69
+ onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
70
+ "onUpdate:size"?: ((size: number) => any) | undefined;
71
71
  }>, {
72
- step: number;
73
72
  disabled: boolean;
73
+ step: number;
74
74
  direction: SplitDirection;
75
+ collapsible: boolean;
76
+ maxSize: number;
75
77
  defaultSize: number;
76
78
  minSize: number;
77
- maxSize: number;
78
79
  minFirstSize: number;
79
80
  minSecondSize: number;
80
- collapsible: boolean;
81
81
  showCollapseButton: boolean;
82
82
  gutterSize: number;
83
83
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -56,28 +56,28 @@ type __VLS_Slots = {
56
56
  };
57
57
  declare const __VLS_base: vue.DefineComponent<SplitPaneProps, SplitPaneExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
58
58
  expand: (target: CollapseTarget) => any;
59
- "update:size": (size: number) => any;
60
- resize: (firstSize: number, secondSize: number) => any;
61
59
  collapse: (target: CollapseTarget) => any;
62
60
  "drag-start": (size: number) => any;
63
61
  "drag-end": (size: number) => any;
62
+ resize: (firstSize: number, secondSize: number) => any;
63
+ "update:size": (size: number) => any;
64
64
  }, string, vue.PublicProps, Readonly<SplitPaneProps> & Readonly<{
65
65
  onExpand?: ((target: CollapseTarget) => any) | undefined;
66
- "onUpdate:size"?: ((size: number) => any) | undefined;
67
- onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
68
66
  onCollapse?: ((target: CollapseTarget) => any) | undefined;
69
67
  "onDrag-start"?: ((size: number) => any) | undefined;
70
68
  "onDrag-end"?: ((size: number) => any) | undefined;
69
+ onResize?: ((firstSize: number, secondSize: number) => any) | undefined;
70
+ "onUpdate:size"?: ((size: number) => any) | undefined;
71
71
  }>, {
72
- step: number;
73
72
  disabled: boolean;
73
+ step: number;
74
74
  direction: SplitDirection;
75
+ collapsible: boolean;
76
+ maxSize: number;
75
77
  defaultSize: number;
76
78
  minSize: number;
77
- maxSize: number;
78
79
  minFirstSize: number;
79
80
  minSecondSize: number;
80
- collapsible: boolean;
81
81
  showCollapseButton: boolean;
82
82
  gutterSize: number;
83
83
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -261,20 +261,20 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
261
261
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
262
262
  "update:modelValue": (value: WorkflowData) => any;
263
263
  change: (value: WorkflowData) => any;
264
- save: (data: WorkflowData) => any;
265
- "validate-error": (errors: ValidationError[]) => any;
266
264
  "node-click": (node: WorkflowNode<NodeType>) => any;
267
265
  "edge-click": (edge: WorkflowEdge) => any;
266
+ save: (data: WorkflowData) => any;
267
+ "validate-error": (errors: ValidationError[]) => any;
268
268
  }, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
269
269
  "onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
270
270
  onChange?: ((value: WorkflowData) => any) | undefined;
271
- onSave?: ((data: WorkflowData) => any) | undefined;
272
- "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
273
271
  "onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
274
272
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
273
+ onSave?: ((data: WorkflowData) => any) | undefined;
274
+ "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
275
275
  }>, {
276
- readonly: boolean;
277
276
  theme: "light" | "dark";
277
+ readonly: boolean;
278
278
  users: User[];
279
279
  roles: Role[];
280
280
  departments: Department[];
@@ -261,20 +261,20 @@ declare const __VLS_export: vue.DefineComponent<WorkflowProps, {
261
261
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
262
262
  "update:modelValue": (value: WorkflowData) => any;
263
263
  change: (value: WorkflowData) => any;
264
- save: (data: WorkflowData) => any;
265
- "validate-error": (errors: ValidationError[]) => any;
266
264
  "node-click": (node: WorkflowNode<NodeType>) => any;
267
265
  "edge-click": (edge: WorkflowEdge) => any;
266
+ save: (data: WorkflowData) => any;
267
+ "validate-error": (errors: ValidationError[]) => any;
268
268
  }, string, vue.PublicProps, Readonly<WorkflowProps> & Readonly<{
269
269
  "onUpdate:modelValue"?: ((value: WorkflowData) => any) | undefined;
270
270
  onChange?: ((value: WorkflowData) => any) | undefined;
271
- onSave?: ((data: WorkflowData) => any) | undefined;
272
- "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
273
271
  "onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
274
272
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
273
+ onSave?: ((data: WorkflowData) => any) | undefined;
274
+ "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
275
275
  }>, {
276
- readonly: boolean;
277
276
  theme: "light" | "dark";
277
+ readonly: boolean;
278
278
  users: User[];
279
279
  roles: Role[];
280
280
  departments: Department[];
@@ -77,23 +77,23 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
77
77
  show: () => void;
78
78
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
79
79
  change: (valid: boolean) => any;
80
- success: (data: CaptchaSuccessPayload) => any;
81
80
  reset: () => any;
82
- "load-error": (error: unknown) => any;
81
+ success: (data: CaptchaSuccessPayload) => any;
83
82
  fail: (error: string) => any;
84
83
  "verify-error": (error: unknown) => any;
84
+ "load-error": (error: unknown) => any;
85
85
  "visible-change": (visible: boolean) => any;
86
86
  }, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
87
87
  onChange?: ((valid: boolean) => any) | undefined;
88
- onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
89
88
  onReset?: (() => any) | undefined;
90
- "onLoad-error"?: ((error: unknown) => any) | undefined;
89
+ onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
91
90
  onFail?: ((error: string) => any) | undefined;
92
91
  "onVerify-error"?: ((error: unknown) => any) | undefined;
92
+ "onLoad-error"?: ((error: unknown) => any) | undefined;
93
93
  "onVisible-change"?: ((visible: boolean) => any) | undefined;
94
94
  }>, {
95
- disabled: boolean;
96
95
  theme: "light" | "dark";
96
+ disabled: boolean;
97
97
  provider: CaptchaProvider;
98
98
  images: string[];
99
99
  verificationTimeout: number;
@@ -77,23 +77,23 @@ declare const __VLS_export: vue.DefineComponent<CaptchaProps, {
77
77
  show: () => void;
78
78
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
79
79
  change: (valid: boolean) => any;
80
- success: (data: CaptchaSuccessPayload) => any;
81
80
  reset: () => any;
82
- "load-error": (error: unknown) => any;
81
+ success: (data: CaptchaSuccessPayload) => any;
83
82
  fail: (error: string) => any;
84
83
  "verify-error": (error: unknown) => any;
84
+ "load-error": (error: unknown) => any;
85
85
  "visible-change": (visible: boolean) => any;
86
86
  }, string, vue.PublicProps, Readonly<CaptchaProps> & Readonly<{
87
87
  onChange?: ((valid: boolean) => any) | undefined;
88
- onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
89
88
  onReset?: (() => any) | undefined;
90
- "onLoad-error"?: ((error: unknown) => any) | undefined;
89
+ onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
91
90
  onFail?: ((error: string) => any) | undefined;
92
91
  "onVerify-error"?: ((error: unknown) => any) | undefined;
92
+ "onLoad-error"?: ((error: unknown) => any) | undefined;
93
93
  "onVisible-change"?: ((visible: boolean) => any) | undefined;
94
94
  }>, {
95
- disabled: boolean;
96
95
  theme: "light" | "dark";
96
+ disabled: boolean;
97
97
  provider: CaptchaProvider;
98
98
  images: string[];
99
99
  verificationTimeout: number;
@@ -30,11 +30,20 @@ app.use(Components, {
30
30
  - `getOptions()`:同步快照,编码保留 string/number/boolean 类型。
31
31
  - `load({ signal })`:可选的异步准备;视图会忽略已失效的请求。
32
32
  - `subscribe(listener)`:可选的更新通知,返回取消订阅函数。
33
+ - `getState()`:可选的共享状态快照,`status` 为 `idle/loading/ready/empty/error`,失败时可带 `error`。提供它时,订阅同时通知状态变化;源应先更新快照再通知。未提供时保持原有协议。
34
+
35
+ 状态快照可选带 `options`,这代表该数组不可变,并且与 `getOptions()` 返回同一份数据。此时仅加载/失败变化不会复制选项或重建翻译索引。未提供这个承诺的旧源仍支持修改原数组后发出订阅通知。
36
+
37
+ 初次绑定调用 `load({ signal })`,字段或表格的显式重试调用 `load({ signal, force: true })`。源负责合并同一字典的并发请求,某个控件卸载仅取消自己的等待,不能打断其他使用者。空数组是成功的空字典,不应通过抛错表示空结果。
38
+
39
+ 表单和搜索就地显示失败与重试,表格只显示一条按字典源去重的状态条;失败保留旧标签和原值,不逐单元格弹消息。`C_Form.getDictionaryError(field)` 可读取诊断,显式 `config.onError` 仍可观测表单异常。组件不把字典错误当作字段业务校验错误,也不会覆盖校验提示。表格的显式 `feedback.error` 继续可选接管诊断。
33
40
 
34
41
  应用已有 store/resolver 时直接桥接,不叠加第二套 TTL 缓存。源负责组织、租户、语言和业务参数隔离:请求开始时捕获作用域,参数切换后不得把旧响应写进新作用域。可由 `getDictionary` 返回该作用域的稳定源,或发布当前快照变更通知。组件仅管理可销毁的选项视图及派生索引。
35
42
 
36
43
  选项必须是有效且唯一的原始编码、字符串标签及可选 boolean disabled。空数组是已提供的空选项,不回退到旧数据。未知编码原样回显;停用历史编码可以保留在源中供展示。重复标签在反向解析时报告歧义,不自动选择第一项。高频展示使用 `createDictionaryLabelResolver(options)`,快照变化时重建一次索引。
37
44
 
45
+ 数组编码逐项翻译,以 `、` 连接;空数组显示为空。字符串编码不按逗号或其他字符自动拆分。普通枚举仅负责文字转换,状态色仍由表格列的 `status` 显式声明。
46
+
38
47
  ## 数值:存储、显示和校验分别定义
39
48
 
40
49
  ```ts
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.24.6",
6
+ "version": "0.25.0",
7
7
  "description": "基于 Naive UI 的 Vue 3 组件库",
8
8
  "packageManager": "bun@1.4.2",
9
9
  "engines": {