@robot-admin/naive-ui-components 0.22.1 → 0.23.1

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 (306) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +7 -5
  3. package/README_EN.md +7 -5
  4. package/dist/C_ActionBar.d.cts +2 -1
  5. package/dist/C_ActionBar.d.ts +2 -1
  6. package/dist/C_AntV2.cjs +3 -3
  7. package/dist/C_AntV2.js +3 -3
  8. package/dist/C_BatchResult.cjs +1 -0
  9. package/dist/C_BatchResult.css +32 -0
  10. package/dist/C_BatchResult.d.cts +2 -0
  11. package/dist/C_BatchResult.d.ts +2 -0
  12. package/dist/C_BatchResult.js +1 -0
  13. package/dist/C_BatchResult2.cjs +1 -0
  14. package/dist/C_BatchResult2.js +1 -0
  15. package/dist/C_Breadcrumb.d.cts +2 -2
  16. package/dist/C_Breadcrumb.d.ts +1 -1
  17. package/dist/C_Cascade.d.cts +1 -1
  18. package/dist/C_Cascade.d.ts +1 -1
  19. package/dist/C_Chat.d.cts +1 -1
  20. package/dist/C_Chat.d.ts +1 -1
  21. package/dist/C_City.d.cts +1 -1
  22. package/dist/C_City.d.ts +1 -1
  23. package/dist/C_Code.d.cts +1 -1
  24. package/dist/C_Code.d.ts +1 -1
  25. package/dist/C_ContextMenu.d.cts +1 -1
  26. package/dist/C_ContextMenu.d.ts +1 -1
  27. package/dist/C_DataPicker.cjs +1 -0
  28. package/dist/C_DataPicker.css +55 -0
  29. package/dist/C_DataPicker.d.cts +2 -0
  30. package/dist/C_DataPicker.d.ts +5 -0
  31. package/dist/C_DataPicker.js +1 -0
  32. package/dist/C_DataPicker2.cjs +1 -0
  33. package/dist/C_DataPicker2.js +1 -0
  34. package/dist/C_Date.d.cts +1 -1
  35. package/dist/C_Date.d.ts +1 -1
  36. package/dist/C_Density.cjs +1 -0
  37. package/dist/C_Density.css +1 -0
  38. package/dist/C_Density.d.cts +3 -0
  39. package/dist/C_Density.d.ts +3 -0
  40. package/dist/C_Density.js +1 -0
  41. package/dist/C_Density2.cjs +1 -0
  42. package/dist/C_Density2.js +1 -0
  43. package/dist/C_Editor.d.cts +1 -1
  44. package/dist/C_Editor.d.ts +1 -1
  45. package/dist/C_ErrorSummary.cjs +1 -0
  46. package/dist/C_ErrorSummary.css +29 -0
  47. package/dist/C_ErrorSummary.d.cts +3 -0
  48. package/dist/C_ErrorSummary.d.ts +3 -0
  49. package/dist/C_ErrorSummary.js +1 -0
  50. package/dist/C_ErrorSummary2.cjs +1 -0
  51. package/dist/C_ErrorSummary2.js +1 -0
  52. package/dist/C_Form.base.css +150 -148
  53. package/dist/C_Form.css +151 -253
  54. package/dist/C_Form.d.cts +1 -1
  55. package/dist/C_Form.d.ts +19 -2
  56. package/dist/C_FormModal.css +1 -2
  57. package/dist/C_FormModal.d.cts +1 -1
  58. package/dist/C_FormModal.d.ts +17 -2
  59. package/dist/C_FormSearch.cjs +1 -1
  60. package/dist/C_FormSearch.css +124 -52
  61. package/dist/C_FormSearch.d.cts +3 -3
  62. package/dist/C_FormSearch.d.ts +5 -4
  63. package/dist/C_FormSearch.js +1 -1
  64. package/dist/C_FormulaEditor.d.cts +1 -1
  65. package/dist/C_FormulaEditor.d.ts +1 -1
  66. package/dist/C_Guide.d.cts +1 -1
  67. package/dist/C_Guide.d.ts +1 -1
  68. package/dist/C_Icon.d.cts +1 -1
  69. package/dist/C_Icon.d.ts +1 -1
  70. package/dist/C_Language.d.cts +1 -1
  71. package/dist/C_Language.d.ts +1 -1
  72. package/dist/C_Loading.d.cts +1 -1
  73. package/dist/C_Loading.d.ts +1 -1
  74. package/dist/C_Login.d.cts +1 -1
  75. package/dist/C_Login.d.ts +1 -1
  76. package/dist/C_Markdown.d.cts +1 -1
  77. package/dist/C_Markdown.d.ts +1 -1
  78. package/dist/C_Menu.d.cts +2 -2
  79. package/dist/C_Menu.d.ts +1 -1
  80. package/dist/C_OrgChart.d.cts +1 -1
  81. package/dist/C_OrgChart.d.ts +1 -1
  82. package/dist/C_Progress.d.cts +1 -1
  83. package/dist/C_Progress.d.ts +1 -1
  84. package/dist/C_SectionNav.cjs +1 -0
  85. package/dist/C_SectionNav.css +46 -0
  86. package/dist/C_SectionNav.d.cts +2 -0
  87. package/dist/C_SectionNav.d.ts +2 -0
  88. package/dist/C_SectionNav.js +1 -0
  89. package/dist/C_SectionNav2.cjs +1 -0
  90. package/dist/C_SectionNav2.js +1 -0
  91. package/dist/C_Skeleton.d.cts +1 -1
  92. package/dist/C_Skeleton.d.ts +1 -1
  93. package/dist/C_SplitPane2.cjs +1 -1
  94. package/dist/C_SplitPane2.js +1 -1
  95. package/dist/C_Steps.d.cts +1 -1
  96. package/dist/C_Steps.d.ts +1 -1
  97. package/dist/C_Table.base.css +258 -256
  98. package/dist/C_Table.cjs +1 -1
  99. package/dist/C_Table.css +109 -1283
  100. package/dist/C_Table.d.cts +2 -1
  101. package/dist/C_Table.d.ts +9 -8
  102. package/dist/C_Table.js +1 -1
  103. package/dist/C_Table2.cjs +3 -0
  104. package/dist/C_Table2.js +3 -0
  105. package/dist/C_Tabs.cjs +1 -1
  106. package/dist/C_Tabs.d.cts +1 -1
  107. package/dist/C_Tabs.d.ts +1 -1
  108. package/dist/C_Tabs.js +1 -1
  109. package/dist/C_TagsView.d.cts +1 -1
  110. package/dist/C_Theme.d.cts +1 -1
  111. package/dist/C_Theme.d.ts +1 -1
  112. package/dist/C_Timeline.d.cts +1 -1
  113. package/dist/C_Timeline.d.ts +1 -1
  114. package/dist/C_Transfer.d.cts +1 -1
  115. package/dist/C_Transfer.d.ts +1 -1
  116. package/dist/C_Tree.d.cts +1 -1
  117. package/dist/C_Tree.d.ts +9 -8
  118. package/dist/C_Upload.d.cts +1 -1
  119. package/dist/C_Upload.d.ts +1 -1
  120. package/dist/C_WorkFlow2.cjs +1 -1
  121. package/dist/C_WorkFlow2.js +1 -1
  122. package/dist/Card.cjs +1 -1
  123. package/dist/Card.js +1 -1
  124. package/dist/Steps.cjs +1 -1
  125. package/dist/Steps.js +1 -1
  126. package/dist/Tabs.cjs +1 -1
  127. package/dist/Tabs.js +1 -1
  128. package/dist/batchPatch.cjs +1 -0
  129. package/dist/batchPatch.d.cts +26 -0
  130. package/dist/batchPatch.d.ts +26 -0
  131. package/dist/batchPatch.js +1 -0
  132. package/dist/config.cjs +1 -1
  133. package/dist/config.d.cts +4 -1
  134. package/dist/config.d.ts +6 -2
  135. package/dist/config.js +1 -1
  136. package/dist/config2.d.ts +1 -1
  137. package/dist/constants.d.cts +1 -1
  138. package/dist/constants.d.ts +1 -1
  139. package/dist/constants2.d.cts +402 -173
  140. package/dist/constants2.d.ts +402 -173
  141. package/dist/constants3.d.cts +3 -3
  142. package/dist/constants3.d.ts +3 -3
  143. package/dist/constants4.d.cts +173 -402
  144. package/dist/constants4.d.ts +173 -402
  145. package/dist/contracts.d.ts +24 -0
  146. package/dist/data.cjs +1 -1
  147. package/dist/data.d.cts +5 -108
  148. package/dist/data.d.ts +5 -108
  149. package/dist/data.js +1 -1
  150. package/dist/data2.cjs +1 -1
  151. package/dist/data2.d.cts +108 -0
  152. package/dist/data2.d.ts +108 -0
  153. package/dist/data2.js +1 -1
  154. package/dist/data3.cjs +1 -0
  155. package/dist/data3.js +1 -0
  156. package/dist/dateRange.d.cts +108 -13
  157. package/dist/dateRange.d.ts +110 -14
  158. package/dist/density.d.ts +15 -0
  159. package/dist/dictionary.cjs +1 -0
  160. package/dist/dictionary.d.cts +38 -0
  161. package/dist/dictionary.d.ts +38 -0
  162. package/dist/dictionary.js +1 -0
  163. package/dist/helpers.cjs +1 -1
  164. package/dist/helpers.js +1 -1
  165. package/dist/index.cjs +1 -1
  166. package/dist/index.d.cts +63 -52
  167. package/dist/index.d.ts +71 -57
  168. package/dist/index.js +1 -1
  169. package/dist/index.vue.d.cts +4 -4
  170. package/dist/index.vue.d.ts +4 -4
  171. package/dist/index10.vue.d.cts +37 -80
  172. package/dist/index10.vue.d.ts +77 -53
  173. package/dist/index11.vue.d.cts +77 -53
  174. package/dist/index11.vue.d.ts +1117 -45
  175. package/dist/index12.vue.d.cts +1117 -45
  176. package/dist/index12.vue.d.ts +17 -128
  177. package/dist/index13.vue.d.cts +17 -128
  178. package/dist/index13.vue.d.ts +57 -53
  179. package/dist/index14.vue.d.cts +57 -53
  180. package/dist/index14.vue.d.ts +16 -25
  181. package/dist/index15.vue.d.cts +16 -25
  182. package/dist/index15.vue.d.ts +52 -12
  183. package/dist/index16.vue.d.cts +52 -12
  184. package/dist/index16.vue.d.ts +13 -129
  185. package/dist/index17.vue.d.cts +13 -129
  186. package/dist/index17.vue.d.ts +123 -74
  187. package/dist/index18.vue.d.cts +123 -74
  188. package/dist/index18.vue.d.ts +48 -71
  189. package/dist/index19.vue.d.cts +40 -91
  190. package/dist/index19.vue.d.ts +36 -96
  191. package/dist/index2.vue.d.cts +2 -2
  192. package/dist/index2.vue.d.ts +2 -2
  193. package/dist/index20.vue.d.cts +38 -47
  194. package/dist/index20.vue.d.ts +13 -48
  195. package/dist/index21.vue.d.cts +12 -96
  196. package/dist/index21.vue.d.ts +25 -95
  197. package/dist/index22.vue.d.cts +20 -32
  198. package/dist/index22.vue.d.ts +75 -37
  199. package/dist/index23.vue.d.cts +77 -13
  200. package/dist/index23.vue.d.ts +71 -13
  201. package/dist/index24.vue.d.cts +1 -1
  202. package/dist/index25.vue.d.cts +116 -90
  203. package/dist/index25.vue.d.ts +116 -90
  204. package/dist/index26.vue.d.cts +94 -59
  205. package/dist/index26.vue.d.ts +94 -59
  206. package/dist/index27.vue.d.cts +75 -0
  207. package/dist/index27.vue.d.ts +75 -0
  208. package/dist/index28.vue.d.cts +103 -0
  209. package/dist/index28.vue.d.ts +103 -0
  210. package/dist/index29.vue.d.cts +105 -0
  211. package/dist/index29.vue.d.ts +105 -0
  212. package/dist/index3.vue.d.cts +4 -4
  213. package/dist/index3.vue.d.ts +4 -4
  214. package/dist/index30.vue.d.cts +28 -0
  215. package/dist/index30.vue.d.ts +28 -0
  216. package/dist/index4.vue.d.cts +19 -128
  217. package/dist/index4.vue.d.ts +17 -34
  218. package/dist/index5.vue.d.cts +127 -35
  219. package/dist/index5.vue.d.ts +30 -19
  220. package/dist/index6.vue.d.cts +30 -19
  221. package/dist/index6.vue.d.ts +22 -118
  222. package/dist/index7.vue.d.cts +22 -118
  223. package/dist/index7.vue.d.ts +112 -18
  224. package/dist/index8.vue.d.cts +112 -18
  225. package/dist/index8.vue.d.ts +24 -35
  226. package/dist/index9.vue.d.cts +24 -35
  227. package/dist/index9.vue.d.ts +37 -80
  228. package/dist/numberCodec.cjs +1 -0
  229. package/dist/numberCodec.d.cts +25 -0
  230. package/dist/numberCodec.d.ts +25 -0
  231. package/dist/numberCodec.js +1 -0
  232. package/dist/observer.cjs +1 -0
  233. package/dist/observer.js +1 -0
  234. package/dist/presets.d.cts +2 -65
  235. package/dist/presets.d.ts +2 -65
  236. package/dist/resolver.cjs +1 -1
  237. package/dist/resolver.d.cts +1 -1
  238. package/dist/resolver.d.ts +1 -1
  239. package/dist/resolver.js +1 -1
  240. package/dist/serializeSearch.cjs +1 -0
  241. package/dist/serializeSearch.js +1 -0
  242. package/dist/style.css +548 -308
  243. package/dist/types.d.cts +60 -103
  244. package/dist/types.d.ts +62 -52
  245. package/dist/types2.d.cts +104 -51
  246. package/dist/types2.d.ts +56 -0
  247. package/dist/types3.d.cts +56 -0
  248. package/dist/useCollapsePanel.d.cts +3 -3
  249. package/dist/useCollapsePanel.d.ts +3 -3
  250. package/dist/useComponentLocale.cjs +1 -1
  251. package/dist/useComponentLocale.js +1 -1
  252. package/dist/useCropperCore.d.cts +7 -7
  253. package/dist/useCropperCore.d.ts +7 -7
  254. package/dist/useDataResource.cjs +1 -0
  255. package/dist/useDataResource.js +1 -0
  256. package/dist/useDictionary.cjs +1 -0
  257. package/dist/useDictionary.js +1 -0
  258. package/dist/useDynamicFormState.d.cts +960 -10
  259. package/dist/useDynamicFormState.d.ts +951 -11
  260. package/dist/useEdgeInteraction.d.cts +2 -2
  261. package/dist/useEdgeInteraction.d.ts +2 -2
  262. package/dist/useFormArray.cjs +1 -0
  263. package/dist/useFormArray.d.cts +69 -0
  264. package/dist/useFormArray.d.ts +69 -0
  265. package/dist/useFormArray.js +1 -0
  266. package/dist/useFormConfig.d.cts +14 -0
  267. package/dist/useFormConfig.d.ts +17 -38
  268. package/dist/useGridWidth.cjs +1 -0
  269. package/dist/useGridWidth.js +1 -0
  270. package/dist/useInfiniteScroll.d.cts +1 -1
  271. package/dist/useInfiniteScroll.d.ts +1 -1
  272. package/dist/useQRCode.d.cts +4 -4
  273. package/dist/useQRCode.d.ts +4 -4
  274. package/dist/useSignatureHistory.d.cts +4 -4
  275. package/dist/useSignatureHistory.d.ts +4 -4
  276. package/dist/useSplitResize.d.cts +4 -4
  277. package/dist/useSplitResize.d.ts +4 -4
  278. package/dist/useTableGlobalConfig.cjs +1 -0
  279. package/dist/useTableGlobalConfig.js +1 -0
  280. package/dist/useTableQuery.cjs +1 -3
  281. package/dist/useTableQuery.js +1 -3
  282. package/dist/useWorkflowValidation.d.cts +2 -2
  283. package/dist/useWorkflowValidation.d.ts +2 -2
  284. package/dist/validation.cjs +1 -0
  285. package/dist/validation.d.cts +18 -0
  286. package/dist/validation.d.ts +18 -0
  287. package/dist/validation.js +1 -0
  288. package/dist/verification.d.cts +2 -2
  289. package/dist/verification.d.ts +3 -3
  290. package/dist/workflows.cjs +1 -0
  291. package/dist/workflows.d.cts +2 -0
  292. package/dist/workflows.d.ts +2 -0
  293. package/dist/workflows.js +1 -0
  294. package/docs/components.en.md +13 -1
  295. package/docs/components.md +13 -1
  296. package/docs/guides/batch-results.md +47 -0
  297. package/docs/guides/data-picker.md +65 -0
  298. package/docs/guides/data-workflows.md +123 -0
  299. package/docs/guides/form-density.en.md +39 -0
  300. package/docs/guides/form-density.md +39 -0
  301. package/docs/guides/search-workflows.md +164 -0
  302. package/package.json +21 -1
  303. package/dist/C_FormSearch2.cjs +0 -1
  304. package/dist/C_FormSearch2.js +0 -1
  305. package/dist/useTableQuery.d.cts +0 -1957
  306. package/dist/useTableQuery.d.ts +0 -1946
@@ -1,7 +1,12 @@
1
- import { A as FormSlots, B as OptionItem, D as FormModel, H as SubmitEventPayload, O as FormOption, R as LayoutType, T as FormInstance, a as ResolvedFormConfig, h as ComponentType, k as FormRecord, n as FormConfig, y as DynamicFormController } from "./useFormConfig.js";
1
+ import { n as ComponentLocale, t as ComponentFeedback } from "./contracts.js";
2
+ import { D as FormSlots, E as FormRecord, F as LayoutType, L as OptionItem, S as FormInstance, T as FormOption, a as ResolvedFormConfig, f as ComponentType, g as DynamicFormController, n as FormConfig, w as FormModel, z as SubmitEventPayload } from "./useFormConfig.js";
3
+ import { n as DictionaryOption } from "./dictionary.js";
4
+ import { n as ResolvedComponentDensity, t as ComponentDensity } from "./density.js";
5
+ import { $ as FormatterConfig, A as UseTableActionsOptions, B as ExpandConfig, D as TableRowKey, F as ColumnDragConfig, G as ToolbarConfig, H as SelectionConfig, K as TreeConfig, L as DisplayConfig, M as UseTableExpandOptions, N as UseTableExpandReturn, O as TableRowKeyIssue, P as BatchActionsConfig, R as EditConfig, S as TableColumn, U as SummaryConfig, V as ResolvedConfig, W as TableConfig, X as ExportConfig, b as SimpleTableActions, d as DataRecord, f as EditMode, g as ParentChildLinkMode, h as PaginationConfig, ht as DynamicRowsReturn, j as UseTableActionsReturn, k as TableRuntimeProps, mt as DynamicRowsOptions, ot as CrossPageSelectionConfig, q as VirtualScrollConfig, ut as RowDragConfig, w as TableInstance, x as StrictTableColumn, z as ErrorConfig } from "./index11.vue.js";
2
6
  import * as vue from "vue";
3
- import { Component, ComputedRef, InjectionKey, MaybeRefOrGetter, Ref, ShallowRef, Slots, VNode } from "vue";
4
- import { FormInst, FormItemInst, FormRules } from "naive-ui";
7
+ import { App, Component, ComputedRef, InjectionKey, MaybeRefOrGetter, Ref, ShallowRef, Slots, VNode, VNodeChild } from "vue";
8
+ import { DataTableColumn, DataTableRowKey, FormInst, FormItemInst, FormRules, PaginationProps, TreeInst, TreeOption, TreeProps } from "naive-ui";
9
+ import { HLJSApi } from "highlight.js";
5
10
 
6
11
  //#region src/components/C_Form/composables/useFormRenderer.d.ts
7
12
  type ComponentMap = Record<string, Component>;
@@ -31,6 +36,8 @@ interface UseFormRendererOptions {
31
36
  instanceSlots?: Readonly<Slots>;
32
37
  asyncOptionsCache: Ref<Record<string, OptionItem[]>>;
33
38
  asyncLoadingMap: Ref<Record<string, boolean>>;
39
+ getDictionaryOptions?: (field: string) => readonly DictionaryOption[];
40
+ isDictionaryLoading?: (field: string) => boolean;
34
41
  renderers?: ComputedRef<Record<string, FormRenderer> | undefined>;
35
42
  /** Overrides application injection. An isolated registry never reads legacy globals. */
36
43
  registry?: FormRendererRegistry;
@@ -65,22 +72,23 @@ declare function useFormRenderer(opts: UseFormRendererOptions): {
65
72
  };
66
73
  //#endregion
67
74
  //#region src/components/C_Form/index.vue.d.ts
68
- 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<{
69
- props: vue.PublicProps & __VLS_PrettifyLocal<{
75
+ declare const __VLS_export$3: <T extends object = FormRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal$3<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
76
+ props: vue.PublicProps & __VLS_PrettifyLocal$3<{
70
77
  /** 字段配置数组 */options: FormOption<T>[]; /** 双向绑定表单数据 */
71
78
  modelValue?: FormModel<T>; /** 统一配置对象(收拢原先 13 个分散 Props) */
72
79
  config?: FormConfig<T>; /** 当前表单实例的自定义渲染器,不污染全局注册表 */
73
80
  renderers?: Record<string, FormRenderer>;
74
81
  } & {
75
82
  "onUpdate:modelValue"?: ((model: T) => any) | undefined;
76
- "onValidate-error"?: ((errors: unknown) => any) | undefined;
77
83
  onSubmit?: ((payload: SubmitEventPayload<T>) => any) | undefined;
78
84
  "onValidate-success"?: ((model: T) => any) | undefined;
85
+ "onValidate-error"?: ((errors: unknown) => any) | undefined;
79
86
  }> & (typeof globalThis extends {
80
87
  __VLS_PROPS_FALLBACK: infer P;
81
88
  } ? P : {});
82
89
  expose: (exposed: vue.ShallowUnwrapRef<{
83
90
  validate: () => Promise<void>;
91
+ revealField: (field: string) => Promise<boolean>;
84
92
  validateField: (field: string | string[]) => Promise<void>;
85
93
  validateStep: (step: number | string) => Promise<boolean>;
86
94
  validateTab: (tabKey: string) => Promise<boolean>;
@@ -110,12 +118,12 @@ declare const __VLS_export: <T extends object = FormRecord>(__VLS_props: NonNull
110
118
  }>) => void;
111
119
  attrs: any;
112
120
  slots: FormSlots<T>;
113
- emit: ((evt: "update:modelValue", model: T) => void) & ((evt: "validate-error", errors: unknown) => void) & ((evt: "submit", payload: SubmitEventPayload<T>) => void) & ((evt: "validate-success", model: T) => void);
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);
114
122
  }>) => vue.VNode & {
115
123
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
116
124
  };
117
- declare const _default: typeof __VLS_export;
118
- type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
125
+ declare const _default$3: typeof __VLS_export$3;
126
+ type __VLS_PrettifyLocal$3<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
119
127
  //#endregion
120
128
  //#region src/components/C_Form/helpers.d.ts
121
129
  /** Preserve business-model field inference without changing the component API. */
@@ -146,6 +154,935 @@ interface UseCFormReturn<T extends object> {
146
154
  /** Small binding helper for the common controlled C_Form setup. */
147
155
  declare function useCForm<T extends object>(setup: UseCFormOptions<T>): UseCFormReturn<T>;
148
156
  //#endregion
157
+ //#region src/plugins/highlight.d.ts
158
+ interface HighlightPluginOptions {
159
+ autoDetect?: boolean;
160
+ extraLanguages?: string[];
161
+ /** Explicit compatibility bridge; restored when the owning app unmounts. */
162
+ exposeToWindow?: boolean;
163
+ /** Enable lifecycle diagnostics through the supplied logger. */
164
+ debug?: boolean;
165
+ logger?: Pick<Console, 'info' | 'warn' | 'error'>;
166
+ onError?: (error: unknown, context: {
167
+ source: 'language-loader';
168
+ language: string;
169
+ }) => void;
170
+ }
171
+ interface HighlightAPI {
172
+ getHljs: () => HLJSApi;
173
+ loadLanguage: (language: string) => Promise<boolean>;
174
+ loadLanguages: (languages: string[]) => Promise<string[]>;
175
+ getLoadedLanguages: () => string[];
176
+ }
177
+ /** Create an independent highlighter, including its language registry and loaders. */
178
+ declare function createHighlight(options?: HighlightPluginOptions): HighlightAPI;
179
+ /** Reuse the current app's highlighter or create a standalone, isolated one. */
180
+ declare function useHighlight(options?: HighlightPluginOptions): HighlightAPI;
181
+ /**
182
+ * * @description 安装 highlight.js 插件到 Vue 应用
183
+ * ? @param app - Vue 应用实例
184
+ * ? @param options - 插件配置选项
185
+ * ! @return 应用独立的 highlight API
186
+ */
187
+ declare function setupHighlight(app: App, options?: HighlightPluginOptions): HighlightAPI;
188
+ //#endregion
189
+ //#region src/components/C_Table/index.vue.d.ts
190
+ 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
+ props: vue.PublicProps & __VLS_PrettifyLocal$2<TableRuntimeProps<T, C> & {
192
+ onCancel?: ((rowData: T, rowIndex: number) => any) | undefined;
193
+ onSave?: ((rowData: T, rowIndex: number, columnKey?: string | undefined) => any) | undefined;
194
+ "onPagination-change"?: ((page: number, pageSize: number) => any) | undefined;
195
+ "onRow-delete"?: ((deletedRow: T, index: number) => any) | undefined;
196
+ "onBatch-action-error"?: ((error: unknown, actionKey: string) => any) | undefined;
197
+ "onRow-key-error"?: ((issues: TableRowKeyIssue<T>[]) => any) | undefined;
198
+ "onRow-add"?: ((newRow: T) => any) | undefined;
199
+ "onRow-copy"?: ((originalRow: T, newRow: T) => any) | undefined;
200
+ "onRow-move"?: ((row: T, fromIndex: number, toIndex: number) => any) | undefined;
201
+ "onRow-selection-change"?: ((selectedKey: DataTableRowKey | null, selectedRow: T | null) => any) | undefined;
202
+ "onView-detail"?: ((data: T) => any) | undefined;
203
+ "onColumn-change"?: ((columns: TableColumn<T>[]) => any) | undefined;
204
+ "onExpand-change"?: ((expandedKeys: DataTableRowKey[], row?: T | undefined, expanded?: boolean | undefined) => any) | undefined;
205
+ "onSelection-change"?: ((checkedKeys: DataTableRowKey[], checkedRows: T[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => any) | undefined;
206
+ "onChild-selection-change"?: ((parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: C[]) => any) | undefined;
207
+ "onParent-child-link-change"?: ((parentKey: DataTableRowKey, shouldSelect: boolean) => any) | undefined;
208
+ "onUpdate:data"?: ((data: T[]) => any) | undefined;
209
+ "onEdit-error"?: ((error: unknown) => any) | undefined;
210
+ }> & (typeof globalThis extends {
211
+ __VLS_PROPS_FALLBACK: infer P;
212
+ } ? P : {});
213
+ expose: (exposed: vue.ShallowUnwrapRef<TableInstance<T, C>>) => void;
214
+ attrs: any;
215
+ slots: {
216
+ 'toolbar-left'?: (props: {}) => any;
217
+ } & {
218
+ 'toolbar-right'?: (props: {}) => any;
219
+ } & {
220
+ error?: (props: {
221
+ error: ErrorConfig;
222
+ }) => any;
223
+ } & {
224
+ loading?: (props: {}) => any;
225
+ };
226
+ 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);
227
+ }>) => vue.VNode & {
228
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
229
+ };
230
+ declare const _default$2: typeof __VLS_export$2;
231
+ type __VLS_PrettifyLocal$2<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
232
+ //#endregion
233
+ //#region src/components/C_Table/helpers.d.ts
234
+ /** Type-safe identity helper that rejects misspelled business field keys. */
235
+ declare function defineTableColumns<T extends object>(columns: StrictTableColumn<T>[]): StrictTableColumn<T>[];
236
+ /** Preserve row types across edit, action, summary and batch callbacks. */
237
+ declare function defineTableConfig<T extends object, C = unknown>(config: TableConfig<T, C>): TableConfig<T, C>;
238
+ /** Find missing and duplicate row keys before stateful table features consume them. */
239
+ declare function validateTableRowKeys<T extends object>(data: readonly T[], rowKey: (row: T) => DataTableRowKey | null | undefined): TableRowKeyIssue<T>[];
240
+ //#endregion
241
+ //#region src/components/C_Table/composables/useTableColumns.d.ts
242
+ /** useTableColumns 中对 tableManager 的最小依赖接口 */
243
+ interface TableManagerRef {
244
+ editStates: {
245
+ cellEdit: {
246
+ isSaving?: Ref<boolean>;
247
+ isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
248
+ getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
249
+ updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
250
+ saveEditCell: () => Promise<unknown>;
251
+ cancelEditCell: () => void;
252
+ startEditCell: (rowKey: DataTableRowKey, columnKey: string) => void;
253
+ };
254
+ rowEdit: {
255
+ isSaving?: Ref<boolean>;
256
+ isEditingRow: (rowKey: DataTableRowKey) => boolean;
257
+ getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
258
+ updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
259
+ };
260
+ };
261
+ dynamicRowsState?: {
262
+ enhanceColumns: (columns: TableColumn[]) => TableColumn[];
263
+ } | null;
264
+ expandState?: {
265
+ getTableColumns: (originalColumns: TableColumn[]) => DataTableColumn[];
266
+ } | null;
267
+ }
268
+ interface UseTableColumnsOptions {
269
+ /** 原始列配置 */
270
+ rawColumns: ComputedRef<TableColumn[]>;
271
+ /** 统一配置 */
272
+ config: ComputedRef<ResolvedConfig>;
273
+ /** 默认列宽 */
274
+ columnWidth: number;
275
+ /** 区分使用侧显式统一列宽与内部默认值,不把默认值强加给弹性业务列。 */
276
+ columnWidthExplicit?: boolean;
277
+ /** 用户设定的 scrollX */
278
+ scrollX?: number | string;
279
+ /** 行键获取函数 */
280
+ rowKey: (row: DataRecord) => DataTableRowKey;
281
+ /** 表格管理器 */
282
+ tableManager: TableManagerRef;
283
+ /** 操作列渲染函数 */
284
+ actionsRenderer: (row: DataRecord, index: number) => VNodeChild;
285
+ /** 编辑模式检查器 */
286
+ editModeChecker: ComputedRef<{
287
+ isNonEditable: (column: TableColumn) => boolean;
288
+ isRowEditMode: () => boolean;
289
+ isCellEditMode: () => boolean;
290
+ }>;
291
+ /** 是否渲染操作列 */
292
+ showActionsColumn: ComputedRef<boolean>;
293
+ }
294
+ interface UseTableColumnsReturn {
295
+ reactiveColumns: Ref<TableColumn[]>;
296
+ showSettingsPanel: Ref<boolean>;
297
+ computedColumns: ComputedRef<DataTableColumn[]>;
298
+ computedScrollX: ComputedRef<number | string | undefined>;
299
+ getDictionaryLabel: (column: TableColumn, value: unknown) => string;
300
+ handleColumnChange: (columns: TableColumn[]) => void;
301
+ }
302
+ /**
303
+ * 表格列处理引擎
304
+ */
305
+ declare function useTableColumns(options: UseTableColumnsOptions): UseTableColumnsReturn;
306
+ //#endregion
307
+ //#region src/components/C_Table/composables/useRowEdit.d.ts
308
+ /** 行级校验错误 */
309
+ interface RowValidationError {
310
+ field: string;
311
+ message: string;
312
+ }
313
+ /**
314
+ * 行编辑配置选项
315
+ */
316
+ interface RowEditOptions {
317
+ data: () => DataRecord[];
318
+ rowKey: (row: DataRecord) => DataTableRowKey;
319
+ onSave?: (rowData: DataRecord, rowIndex: number, originalKey?: DataTableRowKey) => unknown;
320
+ onCancel?: (rowData: DataRecord, rowIndex: number) => unknown;
321
+ /** 列配置(用于提取校验规则) */
322
+ columns?: () => TableColumn[];
323
+ }
324
+ /**
325
+ * 可编辑行组合函数,提供表格整行的编辑功能
326
+ */
327
+ declare function useRowEdit(options: RowEditOptions): {
328
+ editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
329
+ editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
330
+ isSaving: vue.Ref<boolean, boolean>;
331
+ isEditingRow: (rowKey: DataTableRowKey) => boolean;
332
+ startEditRow: (rowKey: DataTableRowKey) => boolean;
333
+ cancelEditRow: () => Promise<void>;
334
+ saveEditRow: () => Promise<{
335
+ updatedData: DataRecord;
336
+ rowIndex: number;
337
+ } | undefined>;
338
+ validateRow: () => Promise<boolean>;
339
+ validationErrors: vue.Ref<{
340
+ field: string;
341
+ message: string;
342
+ }[], RowValidationError[] | {
343
+ field: string;
344
+ message: string;
345
+ }[]>;
346
+ getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
347
+ updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
348
+ findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
349
+ invalidate: () => void;
350
+ };
351
+ //#endregion
352
+ //#region src/components/C_Table/composables/useTableManager.d.ts
353
+ /**
354
+ * 表格管理器配置接口
355
+ */
356
+ interface TableManagerConfig {
357
+ feedback?: ComponentFeedback;
358
+ locale?: ComponentLocale;
359
+ editable: boolean;
360
+ editMode: string;
361
+ showRowActions: boolean;
362
+ modalTitle: string;
363
+ modalWidth: number;
364
+ onEditSave?: (rowData: DataRecord, rowIndex: number, columnKey?: string) => unknown;
365
+ onEditCancel?: (rowData: DataRecord, rowIndex: number) => unknown;
366
+ onEditError?: (error: unknown) => void;
367
+ expandable: boolean;
368
+ defaultExpandedKeys?: DataTableRowKey[];
369
+ onLoadExpandData?: (row: DataRecord) => Promise<any[]> | any[];
370
+ onExpandError?: (error: unknown, row: DataRecord) => void;
371
+ renderExpandContent?: unknown;
372
+ rowExpandable?: (row: DataRecord) => boolean;
373
+ enableSelection: boolean;
374
+ defaultCheckedKeys?: DataTableRowKey[];
375
+ rowCheckable?: (row: DataRecord) => boolean;
376
+ maxSelection?: number;
377
+ enableChildSelection: boolean;
378
+ childRowCheckable?: (childRow: DataRecord, parentRow: DataRecord) => boolean;
379
+ enableParentChildLink: boolean;
380
+ parentChildLinkMode: ParentChildLinkMode;
381
+ dynamicRows?: DynamicRowsOptions<DataRecord>;
382
+ treeEnabled?: boolean;
383
+ treeChildrenKey?: string;
384
+ }
385
+ /**
386
+ * 表格管理器参数接口
387
+ */
388
+ interface TableManagerParams {
389
+ config: MaybeRefOrGetter<TableManagerConfig>;
390
+ data: () => DataRecord[];
391
+ rowKey: (row: DataRecord) => DataTableRowKey;
392
+ emit: (...args: any[]) => unknown;
393
+ /** 列配置(用于编辑校验) */
394
+ columns?: () => TableColumn[];
395
+ /** UI 壳提供加载内容,状态引擎保持可独立调用。 */
396
+ renderLoading?: () => VNodeChild;
397
+ /** String row-key field inherited by dynamic row creation; explicit dynamicRows.rowKey wins. */
398
+ rowKeyField?: MaybeRefOrGetter<string | undefined>;
399
+ }
400
+ /**
401
+ * 事件处理器接口
402
+ */
403
+ interface EventHandlers {
404
+ onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string, originalKey?: DataTableRowKey) => Promise<void>;
405
+ onCancel: (rowData: DataRecord, rowIndex: number) => Promise<void>;
406
+ onExpandChange: (keys: DataTableRowKey[], row?: DataRecord, expanded?: boolean) => void;
407
+ onSelectionChange: (checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections: Map<DataTableRowKey, DataTableRowKey[]>) => void;
408
+ onChildSelectionChange: (parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void;
409
+ onRowChange: (data: DataRecord[]) => void;
410
+ onRowSelectionChange: (selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void;
411
+ onRowAdd: (newRow: DataRecord) => void;
412
+ onRowDelete: (deletedRow: DataRecord, index: number) => void;
413
+ onRowCopy: (originalRow: DataRecord, newRow: DataRecord) => void;
414
+ onRowMove: (row: DataRecord, fromIndex: number, toIndex: number) => void;
415
+ }
416
+ /**
417
+ * 表格统一状态管理器
418
+ */
419
+ declare function useTableManager(params: TableManagerParams): {
420
+ editStates: {
421
+ rowEdit: {
422
+ editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
423
+ editingData: vue.Ref<Record<string, DataRecord>, Record<string, DataRecord>>;
424
+ isSaving: vue.Ref<boolean, boolean>;
425
+ isEditingRow: (rowKey: DataTableRowKey) => boolean;
426
+ startEditRow: (rowKey: DataTableRowKey) => boolean;
427
+ cancelEditRow: () => Promise<void>;
428
+ saveEditRow: () => Promise<{
429
+ updatedData: DataRecord;
430
+ rowIndex: number;
431
+ } | undefined>;
432
+ validateRow: () => Promise<boolean>;
433
+ validationErrors: vue.Ref<{
434
+ field: string;
435
+ message: string;
436
+ }[], RowValidationError[] | {
437
+ field: string;
438
+ message: string;
439
+ }[]>;
440
+ getEditingRowData: (rowKey: DataTableRowKey) => DataRecord | undefined;
441
+ updateEditingRowData: (rowKey: DataTableRowKey, field: string, value: unknown) => void;
442
+ findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
443
+ invalidate: () => void;
444
+ };
445
+ cellEdit: {
446
+ editingCell: vue.Ref<{
447
+ rowKey: DataTableRowKey | null;
448
+ columnKey: string | null;
449
+ }, {
450
+ rowKey: DataTableRowKey | null;
451
+ columnKey: string | null;
452
+ } | {
453
+ rowKey: DataTableRowKey | null;
454
+ columnKey: string | null;
455
+ }>;
456
+ editingData: vue.Ref<Record<string, unknown>, Record<string, unknown>>;
457
+ isSaving: vue.Ref<boolean, boolean>;
458
+ isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
459
+ startEditCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
460
+ saveEditCell: () => Promise<{
461
+ updatedData: {
462
+ [x: string]: unknown;
463
+ };
464
+ rowIndex: number;
465
+ columnKey: string;
466
+ } | undefined>;
467
+ cancelEditCell: () => void;
468
+ validateCell: () => Promise<boolean>;
469
+ cellValidationError: vue.Ref<string | null, string | null>;
470
+ getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
471
+ updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
472
+ findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
473
+ invalidate: () => void;
474
+ };
475
+ modalEdit: {
476
+ isModalVisible: vue.Ref<boolean, boolean>;
477
+ isSaving: vue.Ref<boolean, boolean>;
478
+ editingData: vue.Ref<DataRecord, DataRecord>;
479
+ editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
480
+ editingRowIndex: vue.ComputedRef<number>;
481
+ startEdit: (rowKey: DataTableRowKey, sourceData?: DataRecord | undefined) => boolean;
482
+ saveEdit: (formData?: DataRecord | undefined) => Promise<{
483
+ updatedData: any;
484
+ rowIndex: number;
485
+ } | undefined>;
486
+ cancelEdit: () => Promise<boolean>;
487
+ updateEditingData: (data: DataRecord) => boolean;
488
+ resetEditingState: () => boolean;
489
+ isEditingRow: (rowKey: DataTableRowKey) => boolean;
490
+ getEditingRowData: (rowKey: DataTableRowKey) => any;
491
+ invalidate: () => void;
492
+ };
493
+ };
494
+ expandState: UseTableExpandReturn<DataRecord, DataRecord>;
495
+ dynamicRowsState: DynamicRowsReturn<DataRecord>;
496
+ stateManager: {
497
+ edit: {
498
+ /** 开始编辑 */start(rowKey: DataTableRowKey, columnKey?: string): void; /** 取消编辑 */
499
+ cancel(): void; /** 保存编辑 */
500
+ save(): Promise<void>; /** 是否正在编辑 */
501
+ isEditing(rowKey: DataTableRowKey, columnKey?: string): boolean; /** 获取当前编辑数据 */
502
+ getEditingData(): DataRecord | null | undefined;
503
+ };
504
+ expand: {
505
+ /** 展开行 */row(rowKey: DataTableRowKey): Promise<void>; /** 折叠行 */
506
+ collapse(rowKey: DataTableRowKey): void; /** 展开折叠切换 */
507
+ toggle(rowKey: DataTableRowKey): Promise<void>; /** 展开所有行 */
508
+ all(): Promise<void>; /** 折叠所有行 */
509
+ collapseAll(): void; /** 检查行是否已展开 */
510
+ isExpanded(rowKey: DataTableRowKey): boolean;
511
+ };
512
+ selection: {
513
+ /** 选择指定行 */select(rowKey: DataTableRowKey): void; /** 取消选择指定行 */
514
+ unselect(rowKey: DataTableRowKey): void; /** 选择所有行 */
515
+ all(): void; /** 清除所有行选择 */
516
+ clear(): void; /** 检查行是否已选择 */
517
+ isSelected(rowKey: DataTableRowKey): boolean; /** 获取所有已选择的行数据 */
518
+ getSelected(): DataRecord[];
519
+ };
520
+ childSelection: {
521
+ /** 选择指定父行下的子行 */select(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 取消选择指定父行下的子行 */
522
+ unselect(parentKey: DataTableRowKey, childKey: DataTableRowKey): void; /** 选择指定父行下的所有子行 */
523
+ selectAll(parentKey: DataTableRowKey): void; /** 清除指定父行下的所有子行选择 */
524
+ clear(parentKey: DataTableRowKey): void; /** 获取指定父行下所有已选择的子行数据 */
525
+ getSelected(parentKey: DataTableRowKey): DataRecord[];
526
+ };
527
+ dynamicRows: {
528
+ /** 添加行 */add(): void; /** 插入行 */
529
+ insert(): void; /** 删除行 */
530
+ delete(): void; /** 复制行 */
531
+ copy(): void; /** 上移动态行 */
532
+ moveUp(): void; /** 下移动态行 */
533
+ moveDown(): void; /** 清空动态行数据 */
534
+ clearSelection(): void; /** 获取当前选中的动态行数据 */
535
+ getSelected(): DataRecord | null; /** 打印表格 */
536
+ print(elementRef?: HTMLElement): Promise<void>; /** 导出表格数据 */
537
+ download(elementRef?: HTMLElement, filename?: string): Promise<void>;
538
+ }; /** 清除所有选择 */
539
+ clearAllSelections(): void;
540
+ };
541
+ expandedKeys: vue.ComputedRef<DataTableRowKey[]>;
542
+ checkedKeys: vue.ComputedRef<DataTableRowKey[]>;
543
+ eventHandlers: EventHandlers;
544
+ };
545
+ //#endregion
546
+ //#region src/components/C_Table/composables/useTableExpand.d.ts
547
+ /**
548
+ *
549
+ */
550
+ declare function useTableExpand<T extends object = DataRecord, C = DataRecord>(options: UseTableExpandOptions<T, C>): UseTableExpandReturn<T, C>;
551
+ //#endregion
552
+ //#region src/components/C_Table/composables/useTableActions.d.ts
553
+ /**
554
+ * 表格操作Hook
555
+ */
556
+ declare function useTableActions<T extends object = DataRecord>(options: UseTableActionsOptions<T>): UseTableActionsReturn<T>;
557
+ //#endregion
558
+ //#region src/components/C_Table/composables/usePagination.d.ts
559
+ interface UsePaginationOptions<T extends object = DataRecord> {
560
+ /** 数据源 - 支持函数、Ref 或 ComputedRef */
561
+ data: (() => T[]) | Ref<T[]> | ComputedRef<T[]>;
562
+ /** 分页配置 */
563
+ config: Ref<PaginationConfig | null> | ComputedRef<PaginationConfig | null>;
564
+ /** 事件触发器 */
565
+ emit?: (event: 'pagination-change', page: number, pageSize: number) => void;
566
+ }
567
+ interface UsePaginationReturn<T extends object = DataRecord> {
568
+ currentPage: Ref<number>;
569
+ currentPageSize: Ref<number>;
570
+ paginatedData: ComputedRef<T[]>;
571
+ paginationConfig: ComputedRef<PaginationProps | null>;
572
+ handlePageChange: (page: number) => void;
573
+ handlePageSizeChange: (pageSize: number) => void;
574
+ resetToFirstPage: () => void;
575
+ getTotalPages: () => number;
576
+ }
577
+ /** Local and remote pagination with stable controlled-state synchronization. */
578
+ declare function usePagination<T extends object = DataRecord>(options: UsePaginationOptions<T>): UsePaginationReturn<T>;
579
+ //#endregion
580
+ //#region src/components/C_Table/composables/useCellEdit.d.ts
581
+ /**
582
+ * 单元格编辑配置选项
583
+ */
584
+ interface CellEditOptions {
585
+ data: () => DataRecord[];
586
+ rowKey: (row: DataRecord) => DataTableRowKey;
587
+ onSave?: (rowData: DataRecord, rowIndex: number, columnKey: string, originalKey?: DataTableRowKey) => unknown;
588
+ /** 列配置(用于提取校验规则) */
589
+ columns?: () => TableColumn[];
590
+ }
591
+ /**
592
+ * 可编辑单元格组合函数,提供表格单元格的编辑功能
593
+ */
594
+ declare function useCellEdit(options: CellEditOptions): {
595
+ editingCell: vue.Ref<{
596
+ rowKey: DataTableRowKey | null;
597
+ columnKey: string | null;
598
+ }, {
599
+ rowKey: DataTableRowKey | null;
600
+ columnKey: string | null;
601
+ } | {
602
+ rowKey: DataTableRowKey | null;
603
+ columnKey: string | null;
604
+ }>;
605
+ editingData: vue.Ref<Record<string, unknown>, Record<string, unknown>>;
606
+ isSaving: vue.Ref<boolean, boolean>;
607
+ isEditingCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
608
+ startEditCell: (rowKey: DataTableRowKey, columnKey: string) => boolean;
609
+ saveEditCell: () => Promise<{
610
+ updatedData: {
611
+ [x: string]: unknown;
612
+ };
613
+ rowIndex: number;
614
+ columnKey: string;
615
+ } | undefined>;
616
+ cancelEditCell: () => void;
617
+ validateCell: () => Promise<boolean>;
618
+ cellValidationError: vue.Ref<string | null, string | null>;
619
+ getEditingCellValue: (rowKey: DataTableRowKey, columnKey: string) => unknown;
620
+ updateEditingCellValue: (rowKey: DataTableRowKey, columnKey: string, value: unknown) => void;
621
+ findRowData: (rowKey: DataTableRowKey) => DataRecord | null | undefined;
622
+ invalidate: () => void;
623
+ };
624
+ //#endregion
625
+ //#region node_modules/@vue/shared/dist/shared.d.ts
626
+ type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
627
+ //#endregion
628
+ //#region src/components/C_Table/composables/useModalEdit.d.ts
629
+ interface ModalEditOptions<T extends object = DataRecord> {
630
+ data: () => T[];
631
+ rowKey: (row: T) => DataTableRowKey;
632
+ onSave?: (editingData: T, rowIndex: number, originalKey?: DataTableRowKey) => unknown;
633
+ onCancel?: (originalData: T, rowIndex: number) => unknown;
634
+ }
635
+ /** Modal edit state with lossless snapshots and retry-safe async saves. */
636
+ declare function useModalEdit<T extends object = DataRecord>(options: ModalEditOptions<T>): {
637
+ isModalVisible: vue.Ref<boolean, boolean>;
638
+ isSaving: vue.Ref<boolean, boolean>;
639
+ editingData: [T] extends [vue.Ref<any, any>] ? IfAny<T, vue.Ref<T, T>, T> : vue.Ref<vue.UnwrapRef<T>, T | vue.UnwrapRef<T>>;
640
+ editingRowKey: vue.Ref<DataTableRowKey | null, DataTableRowKey | null>;
641
+ editingRowIndex: vue.ComputedRef<number>;
642
+ startEdit: (rowKey: DataTableRowKey, sourceData?: T) => boolean;
643
+ saveEdit: (formData?: T) => Promise<{
644
+ updatedData: any;
645
+ rowIndex: number;
646
+ } | undefined>;
647
+ cancelEdit: () => Promise<boolean>;
648
+ updateEditingData: (data: T) => boolean;
649
+ resetEditingState: () => boolean;
650
+ isEditingRow: (rowKey: DataTableRowKey) => boolean;
651
+ getEditingRowData: (rowKey: DataTableRowKey) => any;
652
+ invalidate: () => void;
653
+ };
654
+ //#endregion
655
+ //#region src/components/C_Table/composables/useTableQuery.d.ts
656
+ interface TableQueryContext<Q> {
657
+ page: number;
658
+ pageSize: number;
659
+ query: Readonly<Q>;
660
+ signal: AbortSignal;
661
+ }
662
+ interface TableQueryResult<T extends object> {
663
+ data: readonly T[];
664
+ total: number;
665
+ }
666
+ interface UseTableQueryOptions<T extends object, Q extends object> {
667
+ request: (context: TableQueryContext<Q>) => Promise<TableQueryResult<T>>;
668
+ initialQuery: Q;
669
+ columns?: MaybeRefOrGetter<TableColumn<T>[] | undefined>;
670
+ config?: MaybeRefOrGetter<TableConfig<T> | undefined>;
671
+ rowKey?: TableRowKey<T>;
672
+ initialPage?: number;
673
+ pageSize?: number;
674
+ immediate?: boolean;
675
+ onError?: (error: unknown) => void;
676
+ onSuccess?: (result: TableQueryResult<T>) => void;
677
+ }
678
+ /**
679
+ * Remote table controller with latest-request-wins cancellation and ready-to-bind props.
680
+ */
681
+ declare function useTableQuery<T extends object, Q extends object = Record<string, unknown>>(options: UseTableQueryOptions<T, Q>): {
682
+ data: vue.ShallowRef<T[], T[]>;
683
+ loading: vue.Ref<boolean, boolean>;
684
+ error: vue.ShallowRef<unknown, unknown>;
685
+ total: vue.Ref<number, number>;
686
+ page: vue.Ref<number, number>;
687
+ pageSize: vue.Ref<number, number>;
688
+ query: vue.Ref<any, any> extends Q ? Q extends Q & vue.Ref<any, any> ? IfAny<Q, vue.ShallowRef<Q, Q>, Q> : vue.ShallowRef<Q, Q> : vue.ShallowRef<Q, Q>;
689
+ tableProps: vue.ComputedRef<{
690
+ data: T[];
691
+ loading: boolean;
692
+ columns: TableColumn<T>[] | undefined;
693
+ rowKey: TableRowKey<T>;
694
+ config: {
695
+ pagination: {
696
+ enabled: true;
697
+ remote: true;
698
+ page: number;
699
+ pageSize: number;
700
+ total: number;
701
+ showSizePicker?: boolean;
702
+ showQuickJumper?: boolean;
703
+ pageSizes?: number[];
704
+ simple?: boolean;
705
+ size?: "small" | "medium" | "large";
706
+ };
707
+ density?: ComponentDensity;
708
+ feedback?: ComponentFeedback;
709
+ locale?: ComponentLocale;
710
+ validateRowKeys?: boolean;
711
+ edit?: boolean | EditMode | EditConfig<T> | undefined;
712
+ actions?: SimpleTableActions<T> | undefined;
713
+ expand?: boolean | ExpandConfig<T, unknown> | undefined;
714
+ selection?: boolean | SelectionConfig<T, unknown> | undefined;
715
+ dynamicRows?: DynamicRowsOptions<T> | (string extends keyof T ? boolean : false) | undefined;
716
+ toolbar?: ToolbarConfig;
717
+ display?: DisplayConfig;
718
+ virtualScroll?: VirtualScrollConfig | boolean;
719
+ summary?: SummaryConfig<T> | undefined;
720
+ columnDrag?: ColumnDragConfig | boolean;
721
+ tree?: TreeConfig | boolean;
722
+ rowDrag?: RowDragConfig | boolean;
723
+ crossPageSelection?: CrossPageSelectionConfig | boolean;
724
+ export?: ExportConfig;
725
+ persistKey?: string;
726
+ formatterConfig?: FormatterConfig;
727
+ error?: ErrorConfig;
728
+ batchActions?: BatchActionsConfig<T> | undefined;
729
+ };
730
+ }>;
731
+ execute: () => Promise<boolean>;
732
+ reload: () => Promise<boolean>;
733
+ setQuery: (next: Partial<Q> | ((current: Readonly<Q>) => Q), reload?: boolean) => Promise<boolean>;
734
+ resetQuery: (reload?: boolean) => Promise<boolean>;
735
+ handlePaginationChange: (nextPage: number, nextPageSize: number) => Promise<boolean>;
736
+ bindings: vue.ComputedRef<{
737
+ onPaginationChange: (nextPage: number, nextPageSize: number) => Promise<boolean>;
738
+ data: T[];
739
+ loading: boolean;
740
+ columns: TableColumn<T>[] | undefined;
741
+ rowKey: TableRowKey<T>;
742
+ config: {
743
+ pagination: {
744
+ enabled: true;
745
+ remote: true;
746
+ page: number;
747
+ pageSize: number;
748
+ total: number;
749
+ showSizePicker?: boolean;
750
+ showQuickJumper?: boolean;
751
+ pageSizes?: number[];
752
+ simple?: boolean;
753
+ size?: "small" | "medium" | "large";
754
+ };
755
+ density?: ComponentDensity;
756
+ feedback?: ComponentFeedback;
757
+ locale?: ComponentLocale;
758
+ validateRowKeys?: boolean;
759
+ edit?: boolean | EditMode | EditConfig<T> | undefined;
760
+ actions?: SimpleTableActions<T> | undefined;
761
+ expand?: boolean | ExpandConfig<T, unknown> | undefined;
762
+ selection?: boolean | SelectionConfig<T, unknown> | undefined;
763
+ dynamicRows?: DynamicRowsOptions<T> | (string extends keyof T ? boolean : false) | undefined;
764
+ toolbar?: ToolbarConfig;
765
+ display?: DisplayConfig;
766
+ virtualScroll?: VirtualScrollConfig | boolean;
767
+ summary?: SummaryConfig<T> | undefined;
768
+ columnDrag?: ColumnDragConfig | boolean;
769
+ tree?: TreeConfig | boolean;
770
+ rowDrag?: RowDragConfig | boolean;
771
+ crossPageSelection?: CrossPageSelectionConfig | boolean;
772
+ export?: ExportConfig;
773
+ persistKey?: string;
774
+ formatterConfig?: FormatterConfig;
775
+ error?: ErrorConfig;
776
+ batchActions?: BatchActionsConfig<T> | undefined;
777
+ };
778
+ }>;
779
+ cancel: () => void;
780
+ };
781
+ //#endregion
782
+ //#region src/components/C_Tree/types.d.ts
783
+ type TreeKey = string | number;
784
+ type TreeMode = 'menu' | 'file' | 'org' | 'custom';
785
+ type StatusType = 'success' | 'warning' | 'error' | 'info';
786
+ type ButtonType = 'primary' | 'info' | 'warning' | 'error' | 'default';
787
+ /** Custom fields are allowed; keyField/labelField select the actual identity and label. */
788
+ interface TreeOption$1 extends TreeOption {
789
+ id?: TreeKey;
790
+ children?: TreeOption$1[];
791
+ }
792
+ interface TreeNodeData extends TreeOption$1 {
793
+ name?: string;
794
+ type?: string;
795
+ children?: TreeNodeData[];
796
+ }
797
+ interface DropInfo<T extends object = TreeOption$1> {
798
+ node: T;
799
+ dragNode: T;
800
+ dropPosition: 'before' | 'inside' | 'after';
801
+ event: DragEvent;
802
+ }
803
+ interface StatusConfig {
804
+ field: string;
805
+ values: Record<string | number, {
806
+ text: string;
807
+ type: StatusType;
808
+ }>;
809
+ }
810
+ interface ActionConfig<T extends object = TreeNodeData> {
811
+ key: string;
812
+ text: string;
813
+ icon: string;
814
+ type?: ButtonType;
815
+ show?: (node: T) => boolean;
816
+ confirm?: string;
817
+ }
818
+ interface IconConfig {
819
+ default?: string;
820
+ typeMap?: Record<string, string>;
821
+ colorMap?: Record<string, string>;
822
+ }
823
+ type MaybeArray<T> = T | T[];
824
+ type TreeUpdateHandler<T extends object, A extends TreeUpdateMeta['action']> = (keys: TreeKey[], options: Array<T | null>, meta: TreeUpdateMeta<T, A>) => void;
825
+ type TreeDragHandler<T extends object> = (info: {
826
+ node: T;
827
+ event: DragEvent;
828
+ }) => void;
829
+ /** 原生功能保持透传,涉及节点的回调由数据源推导业务类型。 */
830
+ type TreeNativeProps<T extends object = TreeNodeData> = Omit<TreeProps, 'data' | 'filter' | 'onLoad' | 'getChildren' | 'renderLabel' | 'renderPrefix' | 'renderSuffix' | 'renderSwitcherIcon' | 'nodeProps' | 'allowDrop' | 'checkOnClick' | 'overrideDefaultNodeClickBehavior' | 'onDrop' | 'onDragenter' | 'onDragleave' | 'onDragend' | 'onDragstart' | 'onDragover' | 'onUpdateExpandedKeys' | 'onUpdate:expandedKeys' | 'onUpdateSelectedKeys' | 'onUpdate:selectedKeys' | 'onUpdateCheckedKeys' | 'onUpdate:checkedKeys' | 'onUpdateIndeterminateKeys' | 'onUpdate:indeterminateKeys'> & {
831
+ filter?: (pattern: string, node: T) => boolean;
832
+ onLoad?: (node: T) => Promise<unknown>;
833
+ getChildren?: (node: T) => unknown;
834
+ renderLabel?: (context: TreeRenderContext<T>) => VNodeChild;
835
+ renderPrefix?: (context: TreeRenderContext<T>) => VNodeChild;
836
+ renderSuffix?: (context: TreeRenderContext<T>) => VNodeChild;
837
+ renderSwitcherIcon?: (context: {
838
+ expanded: boolean;
839
+ selected: boolean;
840
+ option: T;
841
+ }) => VNodeChild;
842
+ nodeProps?: (context: {
843
+ option: T;
844
+ }) => ReturnType<NonNullable<TreeProps['nodeProps']>>;
845
+ allowDrop?: (info: {
846
+ dropPosition: DropInfo['dropPosition'];
847
+ node: T;
848
+ phase: 'drag' | 'drop';
849
+ }) => boolean;
850
+ checkOnClick?: boolean | ((node: T) => boolean);
851
+ overrideDefaultNodeClickBehavior?: (info: {
852
+ option: T;
853
+ }) => ReturnType<NonNullable<TreeProps['overrideDefaultNodeClickBehavior']>>;
854
+ onDrop?: MaybeArray<(info: DropInfo<T>) => void>;
855
+ onDragenter?: MaybeArray<TreeDragHandler<T>>;
856
+ onDragleave?: MaybeArray<TreeDragHandler<T>>;
857
+ onDragend?: MaybeArray<TreeDragHandler<T>>;
858
+ onDragstart?: MaybeArray<TreeDragHandler<T>>;
859
+ onDragover?: MaybeArray<TreeDragHandler<T>>;
860
+ onUpdateExpandedKeys?: MaybeArray<TreeUpdateHandler<T, 'expand' | 'collapse' | 'filter'>>;
861
+ 'onUpdate:expandedKeys'?: MaybeArray<TreeUpdateHandler<T, 'expand' | 'collapse' | 'filter'>>;
862
+ onUpdateSelectedKeys?: MaybeArray<TreeUpdateHandler<T, 'select' | 'unselect'>>;
863
+ 'onUpdate:selectedKeys'?: MaybeArray<TreeUpdateHandler<T, 'select' | 'unselect'>>;
864
+ onUpdateCheckedKeys?: MaybeArray<TreeUpdateHandler<T, 'check' | 'uncheck'>>;
865
+ 'onUpdate:checkedKeys'?: MaybeArray<TreeUpdateHandler<T, 'check' | 'uncheck'>>;
866
+ onUpdateIndeterminateKeys?: MaybeArray<(keys: TreeKey[], options: Array<T | null>) => void>;
867
+ 'onUpdate:indeterminateKeys'?: MaybeArray<(keys: TreeKey[], options: Array<T | null>) => void>;
868
+ };
869
+ interface TreeRenderContext<T extends object = TreeOption$1> {
870
+ option: T;
871
+ checked: boolean;
872
+ selected: boolean;
873
+ }
874
+ interface TreeUpdateMeta<T extends object = TreeOption$1, A extends 'select' | 'unselect' | 'check' | 'uncheck' | 'expand' | 'collapse' | 'filter' = 'select' | 'unselect' | 'check' | 'uncheck' | 'expand' | 'collapse' | 'filter'> {
875
+ node: T | null;
876
+ action: A;
877
+ }
878
+ interface TreeProps$1<T extends object = TreeNodeData> {
879
+ /** Business interfaces need no string index signature; fields are selected by config. */
880
+ data: readonly T[];
881
+ mode?: TreeMode;
882
+ /** Native tree capabilities; explicit wrapper props have priority. */
883
+ treeProps?: TreeNativeProps<T>;
884
+ density?: ComponentDensity;
885
+ keyField?: string;
886
+ labelField?: string;
887
+ childrenField?: string;
888
+ searchPattern?: string;
889
+ searchable?: boolean;
890
+ searchPlaceholder?: string;
891
+ draggable?: boolean;
892
+ showLine?: boolean;
893
+ showToolbar?: boolean;
894
+ addable?: boolean;
895
+ addText?: string;
896
+ refreshable?: boolean;
897
+ iconField?: string;
898
+ iconConfig?: IconConfig;
899
+ statusConfigs?: StatusConfig[];
900
+ actions?: ActionConfig<T>[];
901
+ defaultExpandAll?: boolean;
902
+ defaultExpandedKeys?: TreeKey[];
903
+ defaultSelectedKeys?: TreeKey[];
904
+ defaultCheckedKeys?: TreeKey[];
905
+ expandedKeys?: TreeKey[];
906
+ selectedKeys?: TreeKey[];
907
+ checkedKeys?: TreeKey[];
908
+ }
909
+ interface TreeExpose<T extends object = TreeNodeData> {
910
+ expandAll: () => void;
911
+ collapseAll: () => void;
912
+ selectNode: (key: TreeKey) => void;
913
+ clearSelection: () => void;
914
+ setCheckedKeys: (keys: TreeKey[]) => void;
915
+ clearChecked: () => void;
916
+ getSelectedNode: () => T | null;
917
+ getCheckedData: () => {
918
+ keys: TreeKey[];
919
+ options: Array<T | null>;
920
+ };
921
+ getIndeterminateData: () => {
922
+ keys: TreeKey[];
923
+ options: Array<T | null>;
924
+ };
925
+ scrollTo: TreeInst['scrollTo'];
926
+ /** Vue 公开实例会解包顶层 Ref;这些属性直接读取数组。 */
927
+ expandedKeys: TreeKey[];
928
+ selectedKeys: TreeKey[];
929
+ checkedKeys: TreeKey[];
930
+ }
931
+ interface TreeEmits<T extends object = TreeNodeData> {
932
+ 'update:searchPattern': [pattern: string];
933
+ 'update:expandedKeys': [keys: TreeKey[], options: Array<T | null>, meta: TreeUpdateMeta<T>];
934
+ 'update:selectedKeys': [keys: TreeKey[], options: Array<T | null>, meta: TreeUpdateMeta<T>];
935
+ 'update:checkedKeys': [keys: TreeKey[], options: Array<T | null>, meta: TreeUpdateMeta<T>];
936
+ 'node-select': [node: T | null, selectedKeys: TreeKey[]];
937
+ 'node-action': [action: string, node: T];
938
+ 'node-drop': [info: DropInfo<T>];
939
+ 'load-error': [error: unknown, node: T];
940
+ add: [parentNode?: T];
941
+ refresh: [];
942
+ }
943
+ interface TreeSlots<T extends object = TreeOption$1> {
944
+ 'toolbar-actions'?: () => VNodeChild;
945
+ label?: (context: TreeRenderContext<T>) => VNodeChild;
946
+ prefix?: (context: TreeRenderContext<T>) => VNodeChild;
947
+ suffix?: (context: TreeRenderContext<T>) => VNodeChild;
948
+ empty?: () => VNodeChild;
949
+ }
950
+ //#endregion
951
+ //#region src/components/C_Tree/index.vue.d.ts
952
+ 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<{
953
+ props: vue.PublicProps & __VLS_PrettifyLocal$1<TreeProps$1<T> & {
954
+ onAdd?: ((parentNode?: T | undefined) => any) | undefined;
955
+ onRefresh?: (() => any) | undefined;
956
+ "onLoad-error"?: ((error: unknown, node: T) => any) | undefined;
957
+ "onUpdate:searchPattern"?: ((pattern: string) => any) | undefined;
958
+ "onUpdate:expandedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "collapse" | "check" | "uncheck">) => any) | undefined;
959
+ "onUpdate:selectedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "collapse" | "check" | "uncheck">) => any) | undefined;
960
+ "onUpdate:checkedKeys"?: ((keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "collapse" | "check" | "uncheck">) => any) | undefined;
961
+ "onNode-select"?: ((node: T | null, selectedKeys: TreeKey[]) => any) | undefined;
962
+ "onNode-action"?: ((action: string, node: T) => any) | undefined;
963
+ "onNode-drop"?: ((info: DropInfo<T>) => any) | undefined;
964
+ }> & (typeof globalThis extends {
965
+ __VLS_PROPS_FALLBACK: infer P;
966
+ } ? P : {});
967
+ expose: (exposed: vue.ShallowUnwrapRef<Omit<TreeExpose<T>, "selectedKeys" | "expandedKeys" | "checkedKeys"> & {
968
+ expandedKeys: vue.Ref<TreeKey[]>;
969
+ selectedKeys: vue.Ref<TreeKey[]>;
970
+ checkedKeys: vue.Ref<TreeKey[]>;
971
+ }>) => void;
972
+ attrs: any;
973
+ slots: TreeSlots<T>;
974
+ emit: ((evt: "add", parentNode?: T | undefined) => void) & ((evt: "refresh") => void) & ((evt: "load-error", error: unknown, node: T) => void) & ((evt: "update:searchPattern", pattern: string) => void) & ((evt: "update:expandedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "collapse" | "check" | "uncheck">) => void) & ((evt: "update:selectedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "collapse" | "check" | "uncheck">) => void) & ((evt: "update:checkedKeys", keys: TreeKey[], options: (T | null)[], meta: TreeUpdateMeta<T, "filter" | "select" | "unselect" | "expand" | "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);
975
+ }>) => vue.VNode & {
976
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
977
+ };
978
+ declare const _default$1: typeof __VLS_export$1;
979
+ type __VLS_PrettifyLocal$1<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
980
+ //#endregion
981
+ //#region src/components/C_Tree/data.d.ts
982
+ declare const presetConfigs: Record<TreeMode, Partial<Omit<TreeProps$1, 'data' | 'treeProps' | 'actions'>> & {
983
+ actions?: Omit<ActionConfig, 'show'>[];
984
+ }>;
985
+ //#endregion
986
+ //#region src/components/C_Tree/composables/useTreeOperations.d.ts
987
+ type EmitFn$1<T extends object> = <E extends keyof TreeEmits<T>>(event: E, ...args: TreeEmits<T>[E]) => void;
988
+ /** State coordination only; checking, filtering, keyboard and loading stay native. */
989
+ declare function useTreeOperations<T extends object = TreeNodeData>(props: TreeProps$1<T>, emit: EmitFn$1<T>, slots?: TreeSlots<T>): {
990
+ internalSearchPattern: Ref<string, string>;
991
+ expandedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
992
+ selectedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
993
+ checkedKeys: vue.WritableComputedRef<TreeKey[], TreeKey[]>;
994
+ isAllExpanded: vue.ComputedRef<boolean>;
995
+ treeData: vue.ComputedRef<readonly T[]>;
996
+ currentSearchPattern: vue.WritableComputedRef<string, string>;
997
+ renderPrefix: (info: TreeRenderContext<T>) => any;
998
+ renderLabel: (info: TreeRenderContext<T>) => string | number | boolean | void | vue.VNode<vue.RendererNode, vue.RendererElement, {
999
+ [key: string]: any;
1000
+ }> | vue.VNodeArrayChildren | null;
1001
+ renderSuffix: (info: TreeRenderContext<T>) => any;
1002
+ treeBindings: vue.ComputedRef<TreeProps>;
1003
+ treeRef: vue.ShallowRef<TreeInst | undefined, TreeInst | undefined>;
1004
+ density: vue.ComputedRef<ResolvedComponentDensity>;
1005
+ toggleExpandAll: () => void;
1006
+ handleExpandedKeysChange: (keys: TreeKey[], options?: (T | null)[], meta?: TreeUpdateMeta<T>) => void;
1007
+ handleSelectedKeysChange: (keys: TreeKey[], options?: (T | null)[], meta?: TreeUpdateMeta<T>) => void;
1008
+ handleCheckedKeysChange: (keys: TreeKey[], options?: (T | null)[], meta?: TreeUpdateMeta<T>) => void;
1009
+ handleDrop: (info: DropInfo<T>) => void;
1010
+ handleAdd: () => void;
1011
+ handleRefresh: () => void;
1012
+ expose: Omit<TreeExpose<T>, "selectedKeys" | "expandedKeys" | "checkedKeys"> & {
1013
+ expandedKeys: Ref<TreeKey[]>;
1014
+ selectedKeys: Ref<TreeKey[]>;
1015
+ checkedKeys: Ref<TreeKey[]>;
1016
+ };
1017
+ };
1018
+ //#endregion
1019
+ //#region src/components/C_FormModal/types.d.ts
1020
+ type FormModalMode = 'create' | 'edit';
1021
+ /**
1022
+ * Structural editor contract. It intentionally does not depend on request-core,
1023
+ * so any headless CRUD implementation can drive the modal.
1024
+ */
1025
+ interface FormModalEditor<T extends object = FormRecord> {
1026
+ visible: Ref<boolean>;
1027
+ mode: Ref<FormModalMode>;
1028
+ model: Ref<T | null>;
1029
+ title: Ref<string>;
1030
+ loading: Ref<boolean> | ComputedRef<boolean>;
1031
+ setModel(model: T): void;
1032
+ close(): void;
1033
+ submit(model?: T): Promise<boolean>;
1034
+ }
1035
+ interface FormModalProps<T extends object = FormRecord> {
1036
+ editor: FormModalEditor<T>;
1037
+ options: FormOption<T>[];
1038
+ config?: FormConfig<T>;
1039
+ width?: number | string;
1040
+ createText?: string;
1041
+ saveText?: string;
1042
+ cancelText?: string;
1043
+ closable?: boolean;
1044
+ maskClosable?: boolean;
1045
+ closeOnEsc?: boolean;
1046
+ }
1047
+ interface FormModalEmits<T extends object = FormRecord> {
1048
+ submit: [payload: SubmitEventPayload<T>, saved: boolean];
1049
+ close: [];
1050
+ }
1051
+ //#endregion
1052
+ //#region src/components/C_FormModal/index.vue.d.ts
1053
+ 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<{
1054
+ props: vue.PublicProps & __VLS_PrettifyLocal<FormModalProps<T> & {
1055
+ onSubmit?: ((payload: SubmitEventPayload<T>, saved: boolean) => any) | undefined;
1056
+ onClose?: (() => any) | undefined;
1057
+ }> & (typeof globalThis extends {
1058
+ __VLS_PROPS_FALLBACK: infer P;
1059
+ } ? P : {});
1060
+ expose: (exposed: {}) => void;
1061
+ attrs: any;
1062
+ slots: {
1063
+ [x: string]: ((props: any) => any) | undefined;
1064
+ };
1065
+ emit: ((evt: "submit", payload: SubmitEventPayload<T>, saved: boolean) => void) & ((evt: "close") => void);
1066
+ }>) => vue.VNode & {
1067
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
1068
+ };
1069
+ declare const _default: typeof __VLS_export;
1070
+ type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
1071
+ //#endregion
1072
+ //#region src/utils/storage.d.ts
1073
+ /** SSR-safe localStorage helpers. Storage failures never break component state. */
1074
+ /** Store a value. Returns false when storage is unavailable or full. */
1075
+ declare function setItem<T>(key: string, value: T): boolean;
1076
+ /** Read and safely deserialize a value. */
1077
+ declare function getItem<T = unknown>(key: string): T | null;
1078
+ /** Remove one value. Returns whether the storage operation was available. */
1079
+ declare function removeItem(key: string): boolean;
1080
+ /**
1081
+ * Clear localStorage for backward compatibility.
1082
+ * Prefer `removeItem` in components so unrelated application data is preserved.
1083
+ */
1084
+ declare function removeAllItem(): boolean;
1085
+ //#endregion
149
1086
  //#region src/components/C_Form/composables/useFormState.d.ts
150
1087
  type FormEmit = {
151
1088
  (event: 'update:modelValue', model: FormModel): void;
@@ -160,7 +1097,8 @@ declare function useFormState(options: ComputedRef<FormOption[]>, config: Comput
160
1097
  visibleOptions: ComputedRef<FormOption[]>;
161
1098
  initialize: () => void;
162
1099
  handleFieldChange: (field: string) => void;
163
- setFormItemRef: (field: string, instance: FormItemInst | null) => void;
1100
+ setFormItemRef: (field: string, instance: FormItemInst | null) => void; /** 复用 Naive 表单项的实例引用;不把 DOM 查找扩散到 document。 */
1101
+ getFormItemElement: (field: string) => HTMLElement | null;
164
1102
  validate: () => Promise<void>;
165
1103
  validateField: (field: string | string[]) => Promise<void>;
166
1104
  validateStep: (step: number | string) => Promise<boolean>;
@@ -185,6 +1123,8 @@ declare function useFormState(options: ComputedRef<FormOption[]>, config: Comput
185
1123
  asyncOptionsCache: Ref<Record<string, OptionItem[]>, Record<string, OptionItem[]>>;
186
1124
  asyncLoadingMap: Ref<Record<string, boolean>, Record<string, boolean>>;
187
1125
  asyncErrorMap: Ref<Record<string, unknown>, Record<string, unknown>>;
1126
+ getDictionaryOptions: (key: string) => readonly DictionaryOption[];
1127
+ isDictionaryLoading: (key: string) => boolean;
188
1128
  reloadOptions: (field?: string) => Promise<void>;
189
1129
  };
190
1130
  //#endregion
@@ -244,4 +1184,4 @@ type DynamicFormStateType = DynamicFormController;
244
1184
  */
245
1185
  declare const DYNAMIC_FORM_STATE_KEY: unique symbol;
246
1186
  //#endregion
247
- export { unregisterRenderer as C, registerRenderer as S, FormRendererContext as _, UseFormDirtyReturn as a, UseFormRendererOptions as b, UseCFormOptions as c, defineFormOptions as d, useCForm as f, FormRenderer as g, FORM_RENDERER_REGISTRY_KEY as h, useDynamicFormState as i, UseCFormReturn as l, ComponentMap as m, DynamicFormStateType as n, useFormDirty as o, _default as p, FIELD_TYPE_OPTIONS as r, useFormState as s, DYNAMIC_FORM_STATE_KEY as t, defineFormConfig as u, FormRendererRegistry as v, useFormRenderer as w, createFormRendererRegistry as x, RendererProps as y };
1187
+ export { HighlightAPI as $, TreeNativeProps as A, useTableQuery as B, IconConfig as C, TreeExpose as D, TreeEmits as E, TreeSlots as F, useTableExpand as G, useCellEdit as H, TreeUpdateMeta as I, useTableColumns as J, useTableManager as K, TableQueryContext as L, TreeOption$1 as M, TreeProps$1 as N, TreeKey as O, TreeRenderContext as P, _default$2 as Q, TableQueryResult as R, DropInfo as S, StatusType as T, usePagination as U, useModalEdit as V, useTableActions as W, defineTableConfig as X, defineTableColumns as Y, validateTableRowKeys as Z, useTreeOperations as _, createFormRendererRegistry as _t, UseFormDirtyReturn as a, UseCFormReturn as at, ActionConfig as b, useFormRenderer as bt, getItem as c, useCForm as ct, setItem as d, FORM_RENDERER_REGISTRY_KEY as dt, HighlightPluginOptions as et, _default as f, FormRenderer as ft, FormModalProps as g, UseFormRendererOptions as gt, FormModalMode as h, RendererProps as ht, useDynamicFormState as i, UseCFormOptions as it, TreeNodeData as j, TreeMode as k, removeAllItem as l, _default$3 as lt, FormModalEmits as m, FormRendererRegistry as mt, DynamicFormStateType as n, setupHighlight as nt, useFormDirty as o, defineFormConfig as ot, FormModalEditor as p, FormRendererContext as pt, useRowEdit as q, FIELD_TYPE_OPTIONS as r, useHighlight as rt, useFormState as s, defineFormOptions as st, DYNAMIC_FORM_STATE_KEY as t, createHighlight as tt, removeItem as u, ComponentMap as ut, presetConfigs as v, registerRenderer as vt, StatusConfig as w, ButtonType as x, _default$1 as y, unregisterRenderer as yt, UseTableQueryOptions as z };