@robot-admin/naive-ui-components 0.24.5 → 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 (104) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +9 -1
  3. package/README_EN.md +9 -1
  4. package/dist/C_Form.base.css +23 -11
  5. package/dist/C_Form.css +23 -11
  6. package/dist/C_FormModal.css +1 -3
  7. package/dist/C_FormModal2.cjs +1 -1
  8. package/dist/C_FormModal2.js +1 -1
  9. package/dist/C_FormSearch.css +79 -79
  10. package/dist/C_Table.base.css +145 -121
  11. package/dist/C_Table.css +122 -110
  12. package/dist/C_Table2.cjs +3 -3
  13. package/dist/C_Table2.js +3 -3
  14. package/dist/config.d.cts +2 -2
  15. package/dist/config.d.ts +2 -2
  16. package/dist/constants2.d.cts +4 -4
  17. package/dist/constants2.d.ts +4 -4
  18. package/dist/constants3.d.cts +1 -1
  19. package/dist/constants3.d.ts +1 -1
  20. package/dist/constants5.d.cts +2 -2
  21. package/dist/constants5.d.ts +2 -2
  22. package/dist/data.d.cts +2 -2
  23. package/dist/data.d.ts +2 -2
  24. package/dist/data2.d.cts +1 -1
  25. package/dist/data2.d.ts +1 -1
  26. package/dist/dictionary.cjs +1 -1
  27. package/dist/dictionary.d.cts +10 -1
  28. package/dist/dictionary.d.ts +10 -1
  29. package/dist/dictionary.js +1 -1
  30. package/dist/formModal.cjs +1 -0
  31. package/dist/formModal.js +1 -0
  32. package/dist/helpers.cjs +1 -1
  33. package/dist/helpers.js +1 -1
  34. package/dist/index.d.cts +2 -2
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.vue.d.cts +5 -5
  37. package/dist/index.vue.d.ts +5 -5
  38. package/dist/index10.vue.d.cts +1 -1
  39. package/dist/index10.vue.d.ts +1 -1
  40. package/dist/index11.vue.d.cts +1 -1
  41. package/dist/index13.vue.d.ts +3 -3
  42. package/dist/index14.vue.d.cts +3 -3
  43. package/dist/index15.vue.d.ts +7 -7
  44. package/dist/index16.vue.d.cts +7 -7
  45. package/dist/index17.vue.d.ts +1 -1
  46. package/dist/index18.vue.d.cts +1 -1
  47. package/dist/index18.vue.d.ts +1 -1
  48. package/dist/index19.vue.d.cts +1 -1
  49. package/dist/index19.vue.d.ts +2 -2
  50. package/dist/index2.vue.d.cts +3 -3
  51. package/dist/index2.vue.d.ts +3 -3
  52. package/dist/index20.vue.d.cts +2 -2
  53. package/dist/index21.vue.d.ts +1 -1
  54. package/dist/index22.vue.d.cts +1 -1
  55. package/dist/index22.vue.d.ts +1 -1
  56. package/dist/index23.vue.d.cts +1 -1
  57. package/dist/index25.vue.d.cts +1 -1
  58. package/dist/index25.vue.d.ts +1 -1
  59. package/dist/index26.vue.d.cts +1 -1
  60. package/dist/index26.vue.d.ts +1 -1
  61. package/dist/index28.vue.d.cts +2 -2
  62. package/dist/index28.vue.d.ts +2 -2
  63. package/dist/index29.vue.d.cts +3 -3
  64. package/dist/index29.vue.d.ts +3 -3
  65. package/dist/index3.vue.d.cts +4 -4
  66. package/dist/index3.vue.d.ts +4 -4
  67. package/dist/index7.vue.d.ts +1 -1
  68. package/dist/index8.vue.d.cts +1 -1
  69. package/dist/index9.vue.d.ts +1 -1
  70. package/dist/mapUtils.d.cts +3 -3
  71. package/dist/mapUtils.d.ts +3 -3
  72. package/dist/serializeSearch.cjs +1 -1
  73. package/dist/serializeSearch.js +1 -1
  74. package/dist/style.css +225 -203
  75. package/dist/useCollapsePanel.d.cts +5 -5
  76. package/dist/useCollapsePanel.d.ts +5 -5
  77. package/dist/useComponentLocale.cjs +1 -1
  78. package/dist/useComponentLocale.js +1 -1
  79. package/dist/useCropperCore.d.cts +6 -6
  80. package/dist/useCropperCore.d.ts +6 -6
  81. package/dist/useDictionary.cjs +1 -1
  82. package/dist/useDictionary.js +1 -1
  83. package/dist/useDynamicFormState.d.cts +21 -12
  84. package/dist/useDynamicFormState.d.ts +21 -12
  85. package/dist/useEdgeInteraction.d.cts +1 -1
  86. package/dist/useEdgeInteraction.d.ts +1 -1
  87. package/dist/useFormConfig.d.cts +2 -0
  88. package/dist/useFormConfig.d.ts +2 -0
  89. package/dist/useInfiniteScroll.d.cts +2 -2
  90. package/dist/useInfiniteScroll.d.ts +2 -2
  91. package/dist/useQRCode.d.cts +3 -3
  92. package/dist/useQRCode.d.ts +3 -3
  93. package/dist/useSignatureHistory.d.cts +3 -3
  94. package/dist/useSignatureHistory.d.ts +3 -3
  95. package/dist/useSplitResize.d.cts +9 -9
  96. package/dist/useSplitResize.d.ts +9 -9
  97. package/dist/useWorkflowValidation.d.cts +32 -32
  98. package/dist/useWorkflowValidation.d.ts +32 -32
  99. package/dist/verification.d.cts +2 -2
  100. package/dist/verification.d.ts +2 -2
  101. package/docs/guides/data-workflows.md +9 -0
  102. package/docs/guides/form-density.en.md +2 -0
  103. package/docs/guides/form-density.md +2 -0
  104. package/package.json +1 -1
@@ -261,16 +261,16 @@ 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
264
  "node-click": (node: WorkflowNode<NodeType>) => any;
266
265
  "edge-click": (edge: WorkflowEdge) => any;
266
+ save: (data: WorkflowData) => any;
267
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
271
  "onNode-click"?: ((node: WorkflowNode<NodeType>) => any) | undefined;
273
272
  "onEdge-click"?: ((edge: WorkflowEdge) => any) | undefined;
273
+ onSave?: ((data: WorkflowData) => any) | undefined;
274
274
  "onValidate-error"?: ((errors: ValidationError[]) => any) | undefined;
275
275
  }>, {
276
276
  theme: "light" | "dark";
@@ -337,9 +337,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
337
337
  zIndex?: number | undefined;
338
338
  extent?: "parent" | [[number, number], [number, number]] | undefined;
339
339
  expandParent?: boolean | undefined;
340
- type: "approval";
340
+ type: "copy";
341
341
  data: {
342
- approvers?: {
342
+ copyUsers?: {
343
343
  id: string;
344
344
  name: string;
345
345
  avatar?: string | undefined;
@@ -348,7 +348,6 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
348
348
  email?: string | undefined;
349
349
  phone?: string | undefined;
350
350
  }[] | undefined;
351
- approvalMode?: ApprovalMode | undefined;
352
351
  title: string;
353
352
  status?: NodeStatus | undefined;
354
353
  config?: Record<string, unknown> | undefined;
@@ -380,9 +379,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
380
379
  zIndex?: number | undefined;
381
380
  extent?: "parent" | [[number, number], [number, number]] | undefined;
382
381
  expandParent?: boolean | undefined;
383
- type: "copy";
382
+ type: "approval";
384
383
  data: {
385
- copyUsers?: {
384
+ approvers?: {
386
385
  id: string;
387
386
  name: string;
388
387
  avatar?: string | undefined;
@@ -391,6 +390,7 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
391
390
  email?: string | undefined;
392
391
  phone?: string | undefined;
393
392
  }[] | undefined;
393
+ approvalMode?: ApprovalMode | undefined;
394
394
  title: string;
395
395
  status?: NodeStatus | undefined;
396
396
  config?: Record<string, unknown> | undefined;
@@ -495,9 +495,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
495
495
  zIndex?: number | undefined;
496
496
  extent?: "parent" | [[number, number], [number, number]] | undefined;
497
497
  expandParent?: boolean | undefined;
498
- type: "approval";
498
+ type: "copy";
499
499
  data: {
500
- approvers?: {
500
+ copyUsers?: {
501
501
  id: string;
502
502
  name: string;
503
503
  avatar?: string | undefined;
@@ -506,7 +506,6 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
506
506
  email?: string | undefined;
507
507
  phone?: string | undefined;
508
508
  }[] | undefined;
509
- approvalMode?: ApprovalMode | undefined;
510
509
  title: string;
511
510
  status?: NodeStatus | undefined;
512
511
  config?: Record<string, unknown> | undefined;
@@ -538,9 +537,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
538
537
  zIndex?: number | undefined;
539
538
  extent?: "parent" | [[number, number], [number, number]] | undefined;
540
539
  expandParent?: boolean | undefined;
541
- type: "copy";
540
+ type: "approval";
542
541
  data: {
543
- copyUsers?: {
542
+ approvers?: {
544
543
  id: string;
545
544
  name: string;
546
545
  avatar?: string | undefined;
@@ -549,6 +548,7 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
549
548
  email?: string | undefined;
550
549
  phone?: string | undefined;
551
550
  }[] | undefined;
551
+ approvalMode?: ApprovalMode | undefined;
552
552
  title: string;
553
553
  status?: NodeStatus | undefined;
554
554
  config?: Record<string, unknown> | undefined;
@@ -706,9 +706,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
706
706
  zIndex?: number | undefined;
707
707
  extent?: "parent" | [[number, number], [number, number]] | undefined;
708
708
  expandParent?: boolean | undefined;
709
- type: "approval";
709
+ type: "copy";
710
710
  data: {
711
- approvers?: {
711
+ copyUsers?: {
712
712
  id: string;
713
713
  name: string;
714
714
  avatar?: string | undefined;
@@ -717,7 +717,6 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
717
717
  email?: string | undefined;
718
718
  phone?: string | undefined;
719
719
  }[] | undefined;
720
- approvalMode?: ApprovalMode | undefined;
721
720
  title: string;
722
721
  status?: NodeStatus | undefined;
723
722
  config?: Record<string, unknown> | undefined;
@@ -749,9 +748,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
749
748
  zIndex?: number | undefined;
750
749
  extent?: "parent" | [[number, number], [number, number]] | undefined;
751
750
  expandParent?: boolean | undefined;
752
- type: "copy";
751
+ type: "approval";
753
752
  data: {
754
- copyUsers?: {
753
+ approvers?: {
755
754
  id: string;
756
755
  name: string;
757
756
  avatar?: string | undefined;
@@ -760,6 +759,7 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
760
759
  email?: string | undefined;
761
760
  phone?: string | undefined;
762
761
  }[] | undefined;
762
+ approvalMode?: ApprovalMode | undefined;
763
763
  title: string;
764
764
  status?: NodeStatus | undefined;
765
765
  config?: Record<string, unknown> | undefined;
@@ -864,9 +864,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
864
864
  zIndex?: number | undefined;
865
865
  extent?: "parent" | [[number, number], [number, number]] | undefined;
866
866
  expandParent?: boolean | undefined;
867
- type: "approval";
867
+ type: "copy";
868
868
  data: {
869
- approvers?: {
869
+ copyUsers?: {
870
870
  id: string;
871
871
  name: string;
872
872
  avatar?: string | undefined;
@@ -875,7 +875,6 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
875
875
  email?: string | undefined;
876
876
  phone?: string | undefined;
877
877
  }[] | undefined;
878
- approvalMode?: ApprovalMode | undefined;
879
878
  title: string;
880
879
  status?: NodeStatus | undefined;
881
880
  config?: Record<string, unknown> | undefined;
@@ -907,9 +906,9 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
907
906
  zIndex?: number | undefined;
908
907
  extent?: "parent" | [[number, number], [number, number]] | undefined;
909
908
  expandParent?: boolean | undefined;
910
- type: "copy";
909
+ type: "approval";
911
910
  data: {
912
- copyUsers?: {
911
+ approvers?: {
913
912
  id: string;
914
913
  name: string;
915
914
  avatar?: string | undefined;
@@ -918,6 +917,7 @@ declare function useWorkflowNodes(props: WorkflowProps, emit: EmitFn$1, vueFlowR
918
917
  email?: string | undefined;
919
918
  phone?: string | undefined;
920
919
  }[] | undefined;
920
+ approvalMode?: ApprovalMode | undefined;
921
921
  title: string;
922
922
  status?: NodeStatus | undefined;
923
923
  config?: Record<string, unknown> | undefined;
@@ -1088,9 +1088,9 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1088
1088
  zIndex?: number | undefined;
1089
1089
  extent?: "parent" | [[number, number], [number, number]] | undefined;
1090
1090
  expandParent?: boolean | undefined;
1091
- type: "approval";
1091
+ type: "copy";
1092
1092
  data: {
1093
- approvers?: {
1093
+ copyUsers?: {
1094
1094
  id: string;
1095
1095
  name: string;
1096
1096
  avatar?: string | undefined;
@@ -1099,7 +1099,6 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1099
1099
  email?: string | undefined;
1100
1100
  phone?: string | undefined;
1101
1101
  }[] | undefined;
1102
- approvalMode?: ApprovalMode | undefined;
1103
1102
  title: string;
1104
1103
  status?: NodeStatus | undefined;
1105
1104
  config?: Record<string, unknown> | undefined;
@@ -1131,9 +1130,9 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1131
1130
  zIndex?: number | undefined;
1132
1131
  extent?: "parent" | [[number, number], [number, number]] | undefined;
1133
1132
  expandParent?: boolean | undefined;
1134
- type: "copy";
1133
+ type: "approval";
1135
1134
  data: {
1136
- copyUsers?: {
1135
+ approvers?: {
1137
1136
  id: string;
1138
1137
  name: string;
1139
1138
  avatar?: string | undefined;
@@ -1142,6 +1141,7 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1142
1141
  email?: string | undefined;
1143
1142
  phone?: string | undefined;
1144
1143
  }[] | undefined;
1144
+ approvalMode?: ApprovalMode | undefined;
1145
1145
  title: string;
1146
1146
  status?: NodeStatus | undefined;
1147
1147
  config?: Record<string, unknown> | undefined;
@@ -1263,9 +1263,9 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1263
1263
  zIndex?: number | undefined;
1264
1264
  extent?: "parent" | [[number, number], [number, number]] | undefined;
1265
1265
  expandParent?: boolean | undefined;
1266
- type: "approval";
1266
+ type: "copy";
1267
1267
  data: {
1268
- approvers?: {
1268
+ copyUsers?: {
1269
1269
  id: string;
1270
1270
  name: string;
1271
1271
  avatar?: string | undefined;
@@ -1274,7 +1274,6 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1274
1274
  email?: string | undefined;
1275
1275
  phone?: string | undefined;
1276
1276
  }[] | undefined;
1277
- approvalMode?: ApprovalMode | undefined;
1278
1277
  title: string;
1279
1278
  status?: NodeStatus | undefined;
1280
1279
  config?: Record<string, unknown> | undefined;
@@ -1306,9 +1305,9 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1306
1305
  zIndex?: number | undefined;
1307
1306
  extent?: "parent" | [[number, number], [number, number]] | undefined;
1308
1307
  expandParent?: boolean | undefined;
1309
- type: "copy";
1308
+ type: "approval";
1310
1309
  data: {
1311
- copyUsers?: {
1310
+ approvers?: {
1312
1311
  id: string;
1313
1312
  name: string;
1314
1313
  avatar?: string | undefined;
@@ -1317,6 +1316,7 @@ declare function useWorkflowPreview(nodes: Ref<WorkflowNode[]>, edges: Ref<Workf
1317
1316
  email?: string | undefined;
1318
1317
  phone?: string | undefined;
1319
1318
  }[] | undefined;
1319
+ approvalMode?: ApprovalMode | undefined;
1320
1320
  title: string;
1321
1321
  status?: NodeStatus | undefined;
1322
1322
  config?: Record<string, unknown> | undefined;
@@ -77,16 +77,16 @@ 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;
81
+ success: (data: CaptchaSuccessPayload) => any;
82
82
  fail: (error: string) => any;
83
83
  "verify-error": (error: unknown) => any;
84
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;
89
+ onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
90
90
  onFail?: ((error: string) => any) | undefined;
91
91
  "onVerify-error"?: ((error: unknown) => any) | undefined;
92
92
  "onLoad-error"?: ((error: unknown) => any) | undefined;
@@ -77,16 +77,16 @@ 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;
81
+ success: (data: CaptchaSuccessPayload) => any;
82
82
  fail: (error: string) => any;
83
83
  "verify-error": (error: unknown) => any;
84
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;
89
+ onSuccess?: ((data: CaptchaSuccessPayload) => any) | undefined;
90
90
  onFail?: ((error: string) => any) | undefined;
91
91
  "onVerify-error"?: ((error: unknown) => any) | undefined;
92
92
  "onLoad-error"?: ((error: unknown) => any) | undefined;
@@ -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
@@ -45,6 +45,8 @@ Density presets are plain data and preserve lazy loading of layouts and fields.
45
45
 
46
46
  Compact modals leave 10px between the header and first field and 12px on either side. Bottom spacing does not constrain real validation feedback. Viewport limits keep the header and footer visible while long content scrolls. Native Card section styles affect only the modal shell, preserving nested cards and slots without adding per-field measurements or watchers.
47
47
 
48
+ `C_Table` editor dialogs share these section styles and viewport limits. `edit.modalWidth` is in pixels and defaults to 600. A configured width of 700 remains 700px on desktop and is capped at the viewport width minus 24px on narrow screens. Fields collapse from two columns to one as needed. Invalid numeric widths fall back to the default; saving, cancellation and validation retain their existing edit-session behavior.
49
+
48
50
  ## Application defaults with on-demand imports
49
51
 
50
52
  Provide defaults once during application startup. Local `config.density` takes precedence; search inherits only density, not form layout, callbacks or size.
@@ -62,6 +62,8 @@ const largeFields = { density: 'compact', size: 'large' } as const
62
62
 
63
63
  紧凑弹窗在标题底部与首行字段之间保留 10px,内容两侧为 12px;末行保留底部留白,不压缩实际校验提示。弹窗宽高受视口约束,长表单仅内容区滚动,标题和页脚保持可见。外壳使用原生 Card 分区样式,不修改内嵌业务卡片或插槽的间距,也不增加逐字段测量或监听。
64
64
 
65
+ `C_Table` 的编辑弹窗共用这套分区与视口约束。`edit.modalWidth` 单位为 px,默认 600;如配置 700,桌面以 700px 居中,窄屏最多为视口宽度减 24px。表单按容器宽度从两列收为单列,数值宽度必须为有限正数,无效数值使用默认宽度。保存、取消及校验职责保持在表格原有编辑会话中。
66
+
65
67
  ## 按需设置应用默认值
66
68
 
67
69
  在应用启动时提供一次即可,局部的 `config.density` 优先,搜索只继承密度,不继承表单布局、回调或尺寸。
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.24.5",
6
+ "version": "0.25.0",
7
7
  "description": "基于 Naive UI 的 Vue 3 组件库",
8
8
  "packageManager": "bun@1.4.2",
9
9
  "engines": {