@robot-admin/naive-ui-components 0.14.3 → 0.15.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 (257) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +130 -741
  3. package/README_EN.md +137 -678
  4. package/dist/C_ActionBar.css +57 -58
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV.css +232 -238
  8. package/dist/C_AntV2.cjs +2 -2
  9. package/dist/C_AntV2.js +2 -2
  10. package/dist/C_AudioPlayer.css +9 -9
  11. package/dist/C_AvatarGroup.css +5 -6
  12. package/dist/C_Barcode.css +1 -1
  13. package/dist/C_Breadcrumb.css +15 -18
  14. package/dist/C_Breadcrumb2.cjs +1 -1
  15. package/dist/C_Breadcrumb2.js +1 -1
  16. package/dist/C_Captcha.css +46 -49
  17. package/dist/C_Captcha2.cjs +1 -1
  18. package/dist/C_Captcha2.js +1 -1
  19. package/dist/C_Cascade.css +5 -6
  20. package/dist/C_Chat.css +8 -8
  21. package/dist/C_City.css +2 -2
  22. package/dist/C_Code.css +9 -9
  23. package/dist/C_CollapsePanel.css +9 -9
  24. package/dist/C_ContextMenu.css +31 -31
  25. package/dist/C_Cron.css +271 -274
  26. package/dist/C_Date.css +1 -1
  27. package/dist/C_Draggable.css +10 -11
  28. package/dist/C_Editor.css +2 -2
  29. package/dist/C_FilePreview.css +423 -423
  30. package/dist/C_Form.base.css +608 -602
  31. package/dist/C_Form.cjs +1 -1
  32. package/dist/C_Form.css +610 -604
  33. package/dist/C_Form.d.cts +2 -2
  34. package/dist/C_Form.d.ts +2 -2
  35. package/dist/C_Form.js +1 -1
  36. package/dist/C_FormModal.cjs +1 -1
  37. package/dist/C_FormModal.css +12 -17
  38. package/dist/C_FormModal.js +1 -1
  39. package/dist/C_FormModal2.cjs +1 -1
  40. package/dist/C_FormModal2.js +1 -1
  41. package/dist/C_FormSearch.css +53 -55
  42. package/dist/C_FormSearch2.cjs +1 -1
  43. package/dist/C_FormSearch2.js +1 -1
  44. package/dist/C_FormulaEditor.css +204 -205
  45. package/dist/C_FullCalendar.css +13 -15
  46. package/dist/C_FullCalendar2.cjs +1 -1
  47. package/dist/C_FullCalendar2.js +1 -1
  48. package/dist/C_GlobalSearch.css +11 -12
  49. package/dist/C_Guide.css +10 -10
  50. package/dist/C_Icon.css +7 -8
  51. package/dist/C_ImageCropper.css +69 -69
  52. package/dist/C_Language.css +8 -8
  53. package/dist/C_Loading.css +22 -25
  54. package/dist/C_Loading2.cjs +1 -1
  55. package/dist/C_Loading2.js +1 -1
  56. package/dist/C_Login.css +130 -135
  57. package/dist/C_Login2.cjs +1 -1
  58. package/dist/C_Login2.js +1 -1
  59. package/dist/C_Map.css +22 -23
  60. package/dist/C_Markdown.css +6 -7
  61. package/dist/C_Menu.css +2 -5
  62. package/dist/C_Menu2.cjs +1 -1
  63. package/dist/C_Menu2.js +1 -1
  64. package/dist/C_NotificationCenter.css +252 -253
  65. package/dist/C_OrgChart.css +8 -8
  66. package/dist/C_PageLoading.css +34 -39
  67. package/dist/C_QRCode.css +5 -6
  68. package/dist/C_Signature.css +5 -6
  69. package/dist/C_Skeleton.css +2 -2
  70. package/dist/C_SplitPane.css +2 -2
  71. package/dist/C_Steps.css +5 -6
  72. package/dist/C_Table.base.css +1090 -879
  73. package/dist/C_Table.cjs +1 -1
  74. package/dist/C_Table.css +1096 -885
  75. package/dist/C_Table.d.cts +1 -1
  76. package/dist/C_Table.d.ts +1 -1
  77. package/dist/C_Table.js +1 -1
  78. package/dist/C_Tabs.css +5 -6
  79. package/dist/C_TagsView.css +60 -63
  80. package/dist/C_TagsView2.cjs +1 -1
  81. package/dist/C_TagsView2.js +1 -1
  82. package/dist/C_Theme.css +7 -8
  83. package/dist/C_Time.css +1 -1
  84. package/dist/C_Timeline.css +8 -8
  85. package/dist/C_Transfer.css +10 -11
  86. package/dist/C_Tree.css +16 -17
  87. package/dist/C_Upload.css +156 -157
  88. package/dist/C_VideoPlayer.css +267 -267
  89. package/dist/C_VtableGantt.css +2 -2
  90. package/dist/C_WaterFall.css +2 -2
  91. package/dist/C_WorkFlow.css +466 -470
  92. package/dist/C_WorkFlow2.cjs +1 -1
  93. package/dist/C_WorkFlow2.js +1 -1
  94. package/dist/Card.cjs +1 -0
  95. package/dist/Card.js +1 -0
  96. package/dist/Custom.cjs +1 -0
  97. package/dist/Custom.js +1 -0
  98. package/dist/Dynamic.cjs +1 -0
  99. package/dist/Dynamic.js +1 -0
  100. package/dist/Steps.cjs +1 -0
  101. package/dist/Steps.js +1 -0
  102. package/dist/Tabs.cjs +1 -0
  103. package/dist/Tabs.js +1 -0
  104. package/dist/cascader.cjs +1 -0
  105. package/dist/cascader.js +1 -0
  106. package/dist/color-picker.cjs +1 -0
  107. package/dist/color-picker.js +1 -0
  108. package/dist/constants.d.cts +1 -1
  109. package/dist/constants.d.ts +1 -1
  110. package/dist/constants3.d.cts +2 -2
  111. package/dist/constants3.d.ts +2 -2
  112. package/dist/constants4.d.cts +4 -4
  113. package/dist/constants4.d.ts +4 -4
  114. package/dist/constants5.d.cts +2 -2
  115. package/dist/constants5.d.ts +2 -2
  116. package/dist/context.cjs +1 -0
  117. package/dist/context.js +1 -0
  118. package/dist/contracts.d.cts +24 -0
  119. package/dist/contracts.d.ts +24 -0
  120. package/dist/createPageLoading.cjs +1 -1
  121. package/dist/createPageLoading.js +1 -1
  122. package/dist/data.cjs +1 -1
  123. package/dist/data.d.cts +4 -4
  124. package/dist/data.d.ts +4 -4
  125. package/dist/data.js +1 -1
  126. package/dist/date-picker.cjs +1 -0
  127. package/dist/date-picker.js +1 -0
  128. package/dist/feedback.cjs +1 -0
  129. package/dist/feedback.js +1 -0
  130. package/dist/helpers.cjs +1 -1
  131. package/dist/helpers.js +1 -1
  132. package/dist/index.cjs +1 -1
  133. package/dist/index.d.cts +6 -4
  134. package/dist/index.d.ts +6 -4
  135. package/dist/index.js +1 -1
  136. package/dist/index.vue.d.cts +4 -4
  137. package/dist/index.vue.d.ts +4 -4
  138. package/dist/index10.vue.d.cts +3 -3
  139. package/dist/index10.vue.d.ts +3 -3
  140. package/dist/index11.vue.d.cts +3 -3
  141. package/dist/index11.vue.d.ts +2 -2
  142. package/dist/index12.vue.d.cts +2 -2
  143. package/dist/index12.vue.d.ts +1 -1
  144. package/dist/index13.vue.d.cts +1 -1
  145. package/dist/index13.vue.d.ts +2 -2
  146. package/dist/index14.vue.d.cts +2 -2
  147. package/dist/index14.vue.d.ts +7 -7
  148. package/dist/index15.vue.d.cts +7 -7
  149. package/dist/index16.vue.d.ts +1 -1
  150. package/dist/index17.vue.d.cts +1 -1
  151. package/dist/index17.vue.d.ts +2 -2
  152. package/dist/index18.vue.d.cts +2 -2
  153. package/dist/index18.vue.d.ts +2 -2
  154. package/dist/index19.vue.d.cts +2 -2
  155. package/dist/index19.vue.d.ts +1 -8
  156. package/dist/index2.vue.d.cts +1 -1
  157. package/dist/index2.vue.d.ts +1 -1
  158. package/dist/index20.vue.d.cts +1 -1
  159. package/dist/index20.vue.d.ts +1 -1
  160. package/dist/index21.vue.d.cts +2 -2
  161. package/dist/index21.vue.d.ts +2 -2
  162. package/dist/index22.vue.d.cts +3 -3
  163. package/dist/index22.vue.d.ts +3 -3
  164. package/dist/index23.vue.d.cts +1 -1
  165. package/dist/index23.vue.d.ts +1 -1
  166. package/dist/index25.vue.d.cts +4 -4
  167. package/dist/index25.vue.d.ts +4 -4
  168. package/dist/index26.vue.d.cts +1 -1
  169. package/dist/index26.vue.d.ts +1 -1
  170. package/dist/index27.vue.d.cts +3 -3
  171. package/dist/index27.vue.d.ts +3 -3
  172. package/dist/index3.vue.d.cts +4 -4
  173. package/dist/index3.vue.d.ts +4 -4
  174. package/dist/index4.vue.d.cts +1 -8
  175. package/dist/index6.vue.d.ts +2 -2
  176. package/dist/index7.vue.d.cts +2 -2
  177. package/dist/index8.vue.d.ts +3 -3
  178. package/dist/index9.vue.d.cts +3 -3
  179. package/dist/index9.vue.d.ts +3 -3
  180. package/dist/mapUtils.d.cts +2 -2
  181. package/dist/mapUtils.d.ts +2 -2
  182. package/dist/presets.d.cts +8 -2
  183. package/dist/presets.d.ts +8 -2
  184. package/dist/rate.cjs +1 -0
  185. package/dist/rate.js +1 -0
  186. package/dist/slider.cjs +1 -0
  187. package/dist/slider.js +1 -0
  188. package/dist/style.css +10671 -10704
  189. package/dist/time-picker.cjs +1 -0
  190. package/dist/time-picker.js +1 -0
  191. package/dist/upload.cjs +1 -0
  192. package/dist/upload.js +1 -0
  193. package/dist/useActionTask.cjs +1 -0
  194. package/dist/useActionTask.js +1 -0
  195. package/dist/useCalendarEvents.d.cts +1 -1
  196. package/dist/useCalendarEvents.d.ts +1 -1
  197. package/dist/useCollapsePanel.d.cts +6 -6
  198. package/dist/useCollapsePanel.d.ts +6 -6
  199. package/dist/useComponentLocale.cjs +1 -0
  200. package/dist/useComponentLocale.js +1 -0
  201. package/dist/useCropperCore.d.cts +4 -4
  202. package/dist/useCropperCore.d.ts +4 -4
  203. package/dist/useDraggableLayout.d.cts +8 -8
  204. package/dist/useDraggableLayout.d.ts +8 -8
  205. package/dist/useDynamicFormState.cjs +1 -0
  206. package/dist/useDynamicFormState.d.cts +62 -38
  207. package/dist/useDynamicFormState.d.ts +62 -38
  208. package/dist/useDynamicFormState.js +1 -0
  209. package/dist/useEdgeInteraction.d.cts +2 -2
  210. package/dist/useEdgeInteraction.d.ts +2 -2
  211. package/dist/useFullscreen.d.cts +2 -2
  212. package/dist/useFullscreen.d.ts +2 -2
  213. package/dist/useInfiniteScroll.d.cts +1 -1
  214. package/dist/useInfiniteScroll.d.ts +1 -1
  215. package/dist/useQRCode.d.cts +3 -3
  216. package/dist/useQRCode.d.ts +3 -3
  217. package/dist/useSearchState.d.cts +16 -726
  218. package/dist/useSearchState.d.ts +16 -835
  219. package/dist/useSignatureHistory.d.cts +2 -2
  220. package/dist/useSignatureHistory.d.ts +2 -2
  221. package/dist/useSplitResize.d.cts +9 -9
  222. package/dist/useSplitResize.d.ts +9 -9
  223. package/dist/useTableQuery.cjs +3 -3
  224. package/dist/useTableQuery.d.cts +66 -33
  225. package/dist/useTableQuery.d.ts +66 -33
  226. package/dist/useTableQuery.js +3 -3
  227. package/dist/useTimeSelection.d.cts +2 -2
  228. package/dist/useTimeSelection.d.ts +2 -2
  229. package/dist/useTreeOperations.d.cts +4 -4
  230. package/dist/useTreeOperations.d.ts +4 -4
  231. package/dist/useWorkflowValidation.d.cts +3 -3
  232. package/dist/useWorkflowValidation.d.ts +3 -3
  233. package/dist/verification.d.cts +2 -2
  234. package/dist/verification.d.ts +2 -2
  235. package/docs/architecture.en.md +83 -0
  236. package/docs/architecture.md +83 -0
  237. package/docs/assets/README.md +47 -0
  238. package/docs/assets/naive-ui-components-banner.png +0 -0
  239. package/docs/assets/naive-ui-components-banner.svg +69 -0
  240. package/docs/assets/naive-ui-components-logo.png +0 -0
  241. package/docs/assets/naive-ui-components-logo.svg +22 -0
  242. package/docs/components.en.md +118 -0
  243. package/docs/components.md +118 -0
  244. package/docs/engineering.en.md +132 -0
  245. package/docs/engineering.md +133 -0
  246. package/docs/guides/usage.en.md +638 -0
  247. package/docs/guides/usage.md +699 -0
  248. package/docs/performance-0.15.0.md +20 -0
  249. package/docs/security-scan-2026-10-06.md +11 -0
  250. package/docs/security-scan-2026-10-18.md +16 -0
  251. package/package.json +29 -11
  252. package/dist/C_Form2.cjs +0 -1
  253. package/dist/C_Form2.js +0 -1
  254. package/dist/config.cjs +0 -1
  255. package/dist/config.d.cts +0 -33
  256. package/dist/config.d.ts +0 -33
  257. package/dist/config.js +0 -1
@@ -1,10 +1,8 @@
1
- import { i as ComponentLocale, r as ComponentFeedback } from "./config.js";
1
+ import { n as ComponentLocale, t as ComponentFeedback } from "./contracts.js";
2
2
  import * as vue from "vue";
3
- import { CSSProperties, Component, ComputedRef, DeepReadonly, InjectionKey, MaybeRefOrGetter, Ref, Slots, VNode } from "vue";
3
+ import { CSSProperties, Component, ComputedRef, DeepReadonly, InjectionKey, MaybeRefOrGetter, Ref, ShallowRef, Slots, VNode } from "vue";
4
4
  import { FormInst, FormItemInst, FormItemRule, FormRules } from "naive-ui";
5
5
  import { NAIVE_COMBOS, NaiveRule, PRESET_RULES, RuleSpec, RuleSpec as RuleSpec$1, SPEC_RULES } from "@robot-admin/form-validate";
6
- import * as naive_ui_es_form_src_interface0 from "naive-ui/es/form/src/interface";
7
- import * as _vue_shared0 from "@vue/shared";
8
6
 
9
7
  //#region src/components/C_Form/utils/formValidation.d.ts
10
8
  /** 原生规则、验证库规则和框架无关规则均可直接作为字段配置。 */
@@ -139,6 +137,13 @@ interface ItemLayoutConfig {
139
137
  class?: string;
140
138
  style?: CSSProperties | Record<string, unknown>;
141
139
  hidden?: boolean;
140
+ suffix?: boolean;
141
+ /** Legacy nested grid attributes; top-level layout values take precedence. */
142
+ grid?: {
143
+ span?: number;
144
+ offset?: number;
145
+ suffix?: boolean;
146
+ };
142
147
  }
143
148
  /**
144
149
  * 网格布局配置
@@ -150,6 +155,9 @@ interface GridLayoutConfig {
150
155
  yGutter?: number;
151
156
  xGap?: number;
152
157
  yGap?: number;
158
+ responsive?: boolean;
159
+ showConfigPanel?: boolean;
160
+ showStats?: boolean;
153
161
  }
154
162
  /**
155
163
  * 内联布局配置
@@ -157,6 +165,8 @@ interface GridLayoutConfig {
157
165
  */
158
166
  interface InlineLayoutConfig {
159
167
  gap?: number;
168
+ rowGap?: number;
169
+ itemWidth?: number;
160
170
  align?: 'start' | 'center' | 'end' | 'baseline' | 'stretch';
161
171
  wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
162
172
  }
@@ -168,6 +178,10 @@ interface CardLayoutConfig {
168
178
  groups?: GroupConfig[];
169
179
  spacing?: number;
170
180
  bordered?: boolean;
181
+ direction?: 'vertical' | 'horizontal';
182
+ showLayoutConfig?: boolean;
183
+ showActionPanel?: boolean;
184
+ showProgress?: boolean;
171
185
  }
172
186
  /**
173
187
  * 标签页布局配置
@@ -301,7 +315,7 @@ interface SubmitEventPayload<T extends object = FormRecord> {
301
315
  interface FormInstance<T extends object = FormRecord> {
302
316
  validate(): Promise<void>;
303
317
  validateField(field: FieldPath<T> | FieldPath<T>[]): Promise<void>;
304
- validateStep(stepIndex: number): Promise<boolean>;
318
+ validateStep(step: number | string): Promise<boolean>;
305
319
  validateTab(tabKey: string): Promise<boolean>;
306
320
  validateDynamicFields(): Promise<boolean>;
307
321
  validateCustomGroup(groupKey: string): Promise<boolean>;
@@ -315,10 +329,10 @@ interface FormInstance<T extends object = FormRecord> {
315
329
  formRef: FormInst | null;
316
330
  formModel: FormModel<T>;
317
331
  initialize(): void;
318
- layoutType: ComputedRef<LayoutType>;
319
- shouldShowDefaultActions: ComputedRef<boolean>;
332
+ layoutType: LayoutType;
333
+ shouldShowDefaultActions: boolean;
320
334
  /** 表单是否被修改过 */
321
- isDirty: Ref<boolean>;
335
+ isDirty: boolean;
322
336
  /** 获取被修改的字段列表 */
323
337
  getChangedFields(): FieldPath<T>[];
324
338
  /** 检查某字段是否被修改 */
@@ -326,13 +340,13 @@ interface FormInstance<T extends object = FormRecord> {
326
340
  /** 将当前值设为初始快照(常用于编辑模式加载数据后) */
327
341
  markAsClean(): void;
328
342
  /** 字段异步选项的 loading 状态 */
329
- asyncLoadingMap: Ref<Record<string, boolean>>;
343
+ asyncLoadingMap: Record<string, boolean>;
330
344
  /** 字段异步选项加载错误 */
331
- asyncErrorMap: Ref<Record<string, unknown>>;
345
+ asyncErrorMap: Record<string, unknown>;
332
346
  /** 重新加载全部或指定字段的异步选项 */
333
347
  reloadOptions(field?: FieldPath<T>): Promise<void>;
334
348
  /** 是否正在提交 */
335
- isSubmitting: Ref<boolean>;
349
+ isSubmitting: boolean;
336
350
  /** 验证并提交,成功返回 true */
337
351
  submit(): Promise<boolean>;
338
352
  }
@@ -561,6 +575,15 @@ interface FormRendererContext {
561
575
  components: ComponentMap;
562
576
  }
563
577
  type FormRenderer = (baseProps: RendererProps, item: FormOption, config: ResolvedFormConfig, context: FormRendererContext) => VNode | null;
578
+ /** A renderer collection owned by one application or explicitly shared scope. */
579
+ interface FormRendererRegistry {
580
+ get(type: string): FormRenderer | undefined;
581
+ register(type: string, renderer: FormRenderer): () => boolean;
582
+ unregister(type: string, renderer?: FormRenderer): boolean;
583
+ }
584
+ declare const FORM_RENDERER_REGISTRY_KEY: InjectionKey<FormRendererRegistry>;
585
+ /** Create an isolated, reactive registry without copying legacy registrations. */
586
+ declare function createFormRendererRegistry(initial?: Readonly<Record<string, FormRenderer>>): FormRendererRegistry;
564
587
  interface UseFormRendererOptions {
565
588
  formModel: FormModel;
566
589
  visibleOptions: ComputedRef<FormOption[]>;
@@ -571,14 +594,20 @@ interface UseFormRendererOptions {
571
594
  asyncOptionsCache: Ref<Record<string, OptionItem[]>>;
572
595
  asyncLoadingMap: Ref<Record<string, boolean>>;
573
596
  renderers?: ComputedRef<Record<string, FormRenderer> | undefined>;
597
+ /** Overrides application injection. An isolated registry never reads legacy globals. */
598
+ registry?: FormRendererRegistry;
574
599
  setFormItemRef?: (field: string, instance: FormItemInst | null) => void;
575
600
  onError?: (error: unknown, field: string) => void;
576
601
  }
577
602
  /**
578
- * 运行时注册自定义渲染器 — 开闭原则
603
+ * Register a legacy process-wide renderer, used only without an isolated registry.
604
+ * @deprecated Prefer createFormRendererRegistry and application injection.
579
605
  */
580
606
  declare function registerRenderer(type: string, renderer: FormRenderer): () => boolean;
581
- /** Remove a global renderer. Passing the renderer prevents deleting a newer registration. */
607
+ /**
608
+ * Remove a legacy process-wide renderer, optionally checking its function identity.
609
+ * @deprecated Prefer an application-owned FormRendererRegistry.
610
+ */
582
611
  declare function unregisterRenderer(type: string, renderer?: FormRenderer): boolean;
583
612
  /**
584
613
  * 渲染引擎 Composable — 生成 formItems VNode 数组
@@ -615,7 +644,7 @@ declare const __VLS_export: <T extends object = FormRecord>(__VLS_props: NonNull
615
644
  expose: (exposed: vue.ShallowUnwrapRef<{
616
645
  validate: () => Promise<void>;
617
646
  validateField: (field: string | string[]) => Promise<void>;
618
- validateStep: (stepIndex: number) => Promise<boolean>;
647
+ validateStep: (step: number | string) => Promise<boolean>;
619
648
  validateTab: (tabKey: string) => Promise<boolean>;
620
649
  validateDynamicFields: () => Promise<boolean>;
621
650
  validateCustomGroup: (groupKey: string) => Promise<boolean>;
@@ -626,27 +655,19 @@ declare const __VLS_export: <T extends object = FormRecord>(__VLS_props: NonNull
626
655
  setFieldValue: (field: string, value: unknown, shouldValidate?: boolean) => Promise<void>;
627
656
  getFieldValue: (field: string) => unknown;
628
657
  setFieldsValue: (fields: FormModel, shouldValidate?: boolean) => Promise<void>;
629
- formRef: vue.Ref<{
630
- validate: naive_ui_es_form_src_interface0.FormValidate;
631
- restoreValidation: () => void;
632
- invalidateLabelWidth: () => void;
633
- } | null, FormInst | {
634
- validate: naive_ui_es_form_src_interface0.FormValidate;
635
- restoreValidation: () => void;
636
- invalidateLabelWidth: () => void;
637
- } | null>;
658
+ formRef: Ref<FormInst | null, FormInst | null>;
638
659
  formModel: FormRecord;
639
660
  initialize: () => void;
640
661
  layoutType: ComputedRef<LayoutType>;
641
662
  shouldShowDefaultActions: ComputedRef<boolean>;
642
- isDirty: vue.Ref<boolean, boolean>;
663
+ isDirty: Ref<boolean, boolean>;
643
664
  getChangedFields: () => string[];
644
665
  isFieldDirty: (field: string) => boolean;
645
666
  markAsClean: () => void;
646
- asyncLoadingMap: vue.Ref<Record<string, boolean>, Record<string, boolean>>;
647
- asyncErrorMap: vue.Ref<Record<string, unknown>, Record<string, unknown>>;
667
+ asyncLoadingMap: Ref<Record<string, boolean>, Record<string, boolean>>;
668
+ asyncErrorMap: Ref<Record<string, unknown>, Record<string, unknown>>;
648
669
  reloadOptions: (field?: string) => Promise<void>;
649
- isSubmitting: vue.Ref<boolean, boolean>;
670
+ isSubmitting: Ref<boolean, boolean>;
650
671
  submit: () => Promise<boolean>;
651
672
  }>) => void;
652
673
  attrs: any;
@@ -668,20 +689,23 @@ interface UseCFormOptions<T extends object> {
668
689
  options: MaybeRefOrGetter<FormOption<T>[]>;
669
690
  config?: MaybeRefOrGetter<FormConfig<T> | undefined>;
670
691
  }
671
- /** Small binding helper for the common controlled C_Form setup. */
672
- declare function useCForm<T extends object>(setup: UseCFormOptions<T>): {
673
- model: vue.Ref<any, any> extends T ? T extends T & vue.Ref<any, any> ? _vue_shared0.IfAny<T, vue.ShallowRef<T, T>, T> : vue.ShallowRef<T, T> : vue.ShallowRef<T, T>;
674
- formRef: vue.ShallowRef<FormInstance<T> | null, FormInstance<T> | null>;
675
- bindings: vue.ComputedRef<{
676
- modelValue: any;
692
+ interface UseCFormReturn<T extends object> {
693
+ model: ShallowRef<FormModel<T>>;
694
+ formRef: ShallowRef<FormInstance<T> | null>;
695
+ bindings: ComputedRef<{
696
+ modelValue: FormModel<T>;
677
697
  options: FormOption<T>[];
678
698
  config: FormConfig<T> | undefined;
679
699
  'onUpdate:modelValue': (value: FormModel<T>) => void;
680
700
  }>;
681
701
  validate: () => Promise<void>;
682
702
  submit: () => Promise<boolean>;
683
- reset: () => void | undefined;
684
- };
703
+ reset: () => void;
704
+ getValues: () => FormModel<T>;
705
+ setValues: (values: Partial<FormModel<T>>, shouldValidate?: boolean) => Promise<void>;
706
+ }
707
+ /** Small binding helper for the common controlled C_Form setup. */
708
+ declare function useCForm<T extends object>(setup: UseCFormOptions<T>): UseCFormReturn<T>;
685
709
  //#endregion
686
710
  //#region src/components/C_Form/composables/useFormState.d.ts
687
711
  type FormEmit = {
@@ -691,7 +715,7 @@ type FormEmit = {
691
715
  (event: 'submit', payload: SubmitEventPayload): void;
692
716
  };
693
717
  /** C_Form state, validation, async options and model synchronization engine. */
694
- declare function useFormState(options: ComputedRef<FormOption[]>, config: ComputedRef<ResolvedFormConfig>, formRef: Ref<FormInst | null>, emit: FormEmit, externalModel?: ComputedRef<FormModel | undefined>): {
718
+ declare function useFormState(options: ComputedRef<FormOption[]>, config: ComputedRef<ResolvedFormConfig>, formRef: Ref<FormInst | null>, emit: FormEmit, externalModel?: ComputedRef<FormModel | undefined>, validationReady?: ComputedRef<boolean>): {
695
719
  formModel: FormRecord;
696
720
  formRules: FormRules;
697
721
  visibleOptions: ComputedRef<FormOption<FormRecord>[]>;
@@ -700,7 +724,7 @@ declare function useFormState(options: ComputedRef<FormOption[]>, config: Comput
700
724
  setFormItemRef: (field: string, instance: FormItemInst | null) => void;
701
725
  validate: () => Promise<void>;
702
726
  validateField: (field: string | string[]) => Promise<void>;
703
- validateStep: (stepIndex: number) => Promise<boolean>;
727
+ validateStep: (step: number | string) => Promise<boolean>;
704
728
  validateTab: (tabKey: string) => Promise<boolean>;
705
729
  validateDynamicFields: () => Promise<boolean>;
706
730
  validateCustomGroup: (groupKey: string) => Promise<boolean>;
@@ -781,4 +805,4 @@ type DynamicFormStateType = DynamicFormController;
781
805
  */
782
806
  declare const DYNAMIC_FORM_STATE_KEY: unique symbol;
783
807
  //#endregion
784
- export { InlineLayoutConfig as $, useFormGlobalConfig as A, FieldPathValue as B, FormConfig as C, mergeFormConfig as D, ResolvedFormConfig as E, DynamicFieldConfig as F, FormModel as G, FormErrorContext as H, DynamicFormConfig as I, FormSlots as J, FormOption as K, DynamicFormController as L, CardLayoutConfig as M, ComponentType as N, resolveFormConfig as O, CustomLayoutConfig as P, GridLayoutConfig as Q, DynamicFormState as R, FORM_GLOBAL_CONFIG_KEY as S, LayoutCallbacks as T, FormInstance as U, FormActionSlotProps as V, FormMode as W, FormSubmitContext as X, FormStepActionsSlotProps as Y, FormTabActionsSlotProps as Z, UseFormRendererOptions as _, UseFormDirtyReturn as a, StepsLayoutConfig as at, useFormRenderer as b, UseCFormOptions as c, FormValidationRule as ct, useCForm as d, RuleSpec$1 as dt, LabelPlacement as et, _default as f, SPEC_RULES as ft, RendererProps as g, FormRendererContext as h, useDynamicFormState as i, OptionItem as it, AsyncOptionsContext as j, shouldShowActions as k, defineFormConfig as l, NAIVE_COMBOS$1 as lt, FormRenderer as m, DynamicFormStateType as n, LayoutType as nt, useFormDirty as o, SubmitEventPayload as ot, ComponentMap as p, FormRecord as q, FIELD_TYPE_OPTIONS as r, MaybePromise as rt, useFormState as s, TabsLayoutConfig as st, DYNAMIC_FORM_STATE_KEY as t, LayoutConfig as tt, defineFormOptions as u, PRESET_RULES$1 as ut, registerRenderer as v, LAYOUTS_WITH_OWN_CONTROLS as w, FORM_DEFAULTS as x, unregisterRenderer as y, FieldPath as z };
808
+ export { FormStepActionsSlotProps as $, ResolvedFormConfig as A, DynamicFormConfig as B, unregisterRenderer as C, FormConfig as D, FORM_GLOBAL_CONFIG_KEY as E, AsyncOptionsContext as F, FormActionSlotProps as G, DynamicFormState as H, CardLayoutConfig as I, FormMode as J, FormErrorContext as K, ComponentType as L, resolveFormConfig as M, shouldShowActions as N, LAYOUTS_WITH_OWN_CONTROLS as O, useFormGlobalConfig as P, FormSlots as Q, CustomLayoutConfig as R, registerRenderer as S, FORM_DEFAULTS as T, FieldPath as U, DynamicFormController as V, FieldPathValue as W, FormOption as X, FormModel as Y, FormRecord as Z, FormRendererContext as _, UseFormDirtyReturn as a, LayoutConfig as at, UseFormRendererOptions as b, UseCFormOptions as c, OptionItem as ct, defineFormOptions as d, TabsLayoutConfig as dt, FormSubmitContext as et, useCForm as f, FormValidationRule as ft, FormRenderer as g, SPEC_RULES as gt, FORM_RENDERER_REGISTRY_KEY as h, RuleSpec$1 as ht, useDynamicFormState as i, LabelPlacement as it, mergeFormConfig as j, LayoutCallbacks as k, UseCFormReturn as l, StepsLayoutConfig as lt, ComponentMap as m, PRESET_RULES$1 as mt, DynamicFormStateType as n, GridLayoutConfig as nt, useFormDirty as o, LayoutType as ot, _default as p, NAIVE_COMBOS$1 as pt, FormInstance as q, FIELD_TYPE_OPTIONS as r, InlineLayoutConfig as rt, useFormState as s, MaybePromise as st, DYNAMIC_FORM_STATE_KEY as t, FormTabActionsSlotProps as tt, defineFormConfig as u, SubmitEventPayload as ut, FormRendererRegistry as v, useFormRenderer as w, createFormRendererRegistry as x, RendererProps as y, DynamicFieldConfig as z };
@@ -0,0 +1 @@
1
+ import{computed as e,reactive as t,readonly as n}from"vue";const r={maxFields:20,autoSave:!1,enableSort:!0,showControls:!0,showItemControls:!0},i=[{label:`文本输入`,value:`input`},{label:`数字输入`,value:`inputNumber`},{label:`多行文本`,value:`textarea`},{label:`下拉选择`,value:`select`},{label:`开关切换`,value:`switch`},{label:`评分组件`,value:`rate`}];function a(e,t){let n=t.label||`动态字段 ${e}`;return{...t,id:t.id?.trim()||`dynamic_field_${e}`,type:t.type||i[0].value,prop:t.prop?.trim()||`dynamic_${e}`,label:n,placeholder:t.placeholder||`请输入${n||`内容`}`,visible:t.visible??!0,removable:t.removable??!0,created:t.created??Date.now(),layout:t.layout||{span:12}}}const o=()=>{let o=t({config:{...r},baseFields:[],dynamicFields:[],hiddenFieldIds:new Set,fieldCounter:0,isInitialized:!1}),s=e(()=>[...o.baseFields,...o.dynamicFields.map(e=>({...e,show:!o.hiddenFieldIds.has(e.prop)}))]),c=e(()=>s.value.filter(e=>e.show!==!1)),l=e(()=>o.dynamicFields.length),u=e(()=>o.hiddenFieldIds.size),d=e(()=>o.dynamicFields.length<o.config.maxFields),f=e(()=>o.hiddenFieldIds.size===0),p=(e={})=>{if(!d.value)return null;o.fieldCounter++;let t=a(o.fieldCounter,e);return s.value.some(e=>e.prop===t.prop)?null:(o.dynamicFields.push(t),t)},m=e=>{if(o.dynamicFields.length===0)return null;let t=e??o.dynamicFields.length-1;if(t<0||t>=o.dynamicFields.length||o.dynamicFields[t]?.removable===!1)return null;let n=o.dynamicFields.splice(t,1)[0];return n&&o.hiddenFieldIds.delete(n.prop),n??null},h=()=>{let e=o.dynamicFields.length;return o.dynamicFields.forEach(e=>o.hiddenFieldIds.delete(e.prop)),o.dynamicFields.length=0,o.fieldCounter=0,e},g=e=>s.value.some(t=>t.prop===e)?(o.hiddenFieldIds.has(e)?o.hiddenFieldIds.delete(e):o.hiddenFieldIds.add(e),!o.hiddenFieldIds.has(e)):!1,_=()=>(f.value?o.dynamicFields.forEach(e=>{o.hiddenFieldIds.add(e.prop)}):o.hiddenFieldIds.clear(),f.value),v=e=>{let t={...e};t.maxFields!==void 0&&(t.maxFields=Math.max(0,Math.trunc(t.maxFields))),Object.assign(o.config,t)};return{state:n(o),allFields:s,visibleFields:c,dynamicFieldsCount:l,hiddenFieldsCount:u,canAddMoreFields:d,allVisible:f,FIELD_TYPE_OPTIONS:i,addField:p,removeField:m,clearDynamicFields:h,toggleFieldVisibility:g,toggleAllVisibility:_,updateConfig:v,exportConfig:()=>{let e={baseFields:o.baseFields,dynamicFields:o.dynamicFields,config:o.config,hiddenFields:Array.from(o.hiddenFieldIds),timestamp:Date.now()};return JSON.stringify(e,null,2)},initialize:(e,t={})=>{o.baseFields=[...e],o.dynamicFields.length=0,o.hiddenFieldIds.clear(),o.fieldCounter=0,Object.assign(o.config,r),v(t),o.isInitialized=!0}}},s=Symbol(`dynamicFormState`);export{i as n,o as r,s as t};
@@ -259,11 +259,11 @@ declare const __VLS_export: vue.DefineComponent<Props, {
259
259
  onReady?: ((graph: Graph) => any) | undefined;
260
260
  "onData-change"?: ((data: DiagramData) => any) | undefined;
261
261
  }>, {
262
- theme: "light" | "dark";
263
- showToolbar: boolean;
264
262
  height: string | number;
265
263
  width: string | number;
266
264
  readonly: boolean;
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
@@ -259,11 +259,11 @@ declare const __VLS_export: vue.DefineComponent<Props, {
259
259
  onReady?: ((graph: Graph) => any) | undefined;
260
260
  "onData-change"?: ((data: DiagramData) => any) | undefined;
261
261
  }>, {
262
- theme: "light" | "dark";
263
- showToolbar: boolean;
264
262
  height: string | number;
265
263
  width: string | number;
266
264
  readonly: boolean;
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;
@@ -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;
@@ -89,9 +89,9 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
89
89
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
90
90
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
91
91
  }>, {
92
+ gap: number;
92
93
  loading: boolean;
93
94
  columns: number;
94
- gap: number;
95
95
  lazy: boolean;
96
96
  infinite: boolean;
97
97
  skeleton: boolean;
@@ -89,9 +89,9 @@ declare const __VLS_base: vue.DefineComponent<WaterFallProps, WaterFallExpose, {
89
89
  "onImage-loaded"?: ((item: WaterFallItem) => any) | undefined;
90
90
  "onImage-error"?: ((item: WaterFallItem) => any) | undefined;
91
91
  }>, {
92
+ gap: number;
92
93
  loading: boolean;
93
94
  columns: number;
94
- gap: number;
95
95
  lazy: boolean;
96
96
  infinite: boolean;
97
97
  skeleton: boolean;
@@ -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
- color: string;
54
- size: number;
55
53
  label: string;
54
+ color: string;
56
55
  mode: RenderMode;
57
- margin: number;
56
+ size: number;
58
57
  bgColor: string;
59
58
  errorCorrectionLevel: ErrorCorrectionLevel;
59
+ margin: number;
60
60
  logo: LogoOptions;
61
61
  showBorder: boolean;
62
62
  showLabel: boolean;
@@ -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
- color: string;
54
- size: number;
55
53
  label: string;
54
+ color: string;
56
55
  mode: RenderMode;
57
- margin: number;
56
+ size: number;
58
57
  bgColor: string;
59
58
  errorCorrectionLevel: ErrorCorrectionLevel;
59
+ margin: number;
60
60
  logo: LogoOptions;
61
61
  showBorder: boolean;
62
62
  showLabel: boolean;