@robot-admin/naive-ui-components 0.14.2 → 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 (255) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +130 -721
  3. package/README_EN.md +137 -658
  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 +215 -222
  8. package/dist/C_AntV2.cjs +2 -2
  9. package/dist/C_AntV2.js +2 -2
  10. package/dist/C_AudioPlayer.css +11 -12
  11. package/dist/C_AvatarGroup.css +5 -6
  12. package/dist/C_Barcode.css +1 -1
  13. package/dist/C_Breadcrumb.css +15 -17
  14. package/dist/C_Breadcrumb2.cjs +1 -1
  15. package/dist/C_Breadcrumb2.js +1 -1
  16. package/dist/C_Captcha.css +45 -47
  17. package/dist/C_Captcha2.cjs +1 -1
  18. package/dist/C_Captcha2.js +1 -1
  19. package/dist/C_Cascade.css +2 -2
  20. package/dist/C_Chat.css +8 -8
  21. package/dist/C_City.css +6 -7
  22. package/dist/C_Code.css +14 -15
  23. package/dist/C_CollapsePanel.css +12 -13
  24. package/dist/C_ContextMenu.css +31 -31
  25. package/dist/C_Cron.css +272 -275
  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 +193 -193
  30. package/dist/C_Form.base.css +607 -601
  31. package/dist/C_Form.cjs +1 -1
  32. package/dist/C_Form.css +609 -603
  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 +14 -20
  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 +314 -315
  45. package/dist/C_FullCalendar.css +14 -16
  46. package/dist/C_FullCalendar2.cjs +1 -1
  47. package/dist/C_FullCalendar2.js +1 -1
  48. package/dist/C_GlobalSearch.css +2 -2
  49. package/dist/C_Guide.css +14 -15
  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 +20 -22
  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 +2 -2
  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 +300 -301
  65. package/dist/C_OrgChart.css +3 -3
  66. package/dist/C_PageLoading.css +35 -39
  67. package/dist/C_QRCode.css +5 -6
  68. package/dist/C_Signature.css +5 -6
  69. package/dist/C_Skeleton.css +6 -7
  70. package/dist/C_SplitPane.css +2 -2
  71. package/dist/C_Steps.css +2 -2
  72. package/dist/C_Table.base.css +1097 -870
  73. package/dist/C_Table.cjs +1 -1
  74. package/dist/C_Table.css +1101 -874
  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 +2 -2
  79. package/dist/C_TagsView.css +72 -76
  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 +147 -148
  88. package/dist/C_VideoPlayer.css +280 -281
  89. package/dist/C_VtableGantt.css +2 -2
  90. package/dist/C_WaterFall.css +17 -18
  91. package/dist/C_WorkFlow.css +453 -457
  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 +5 -5
  111. package/dist/constants3.d.ts +5 -5
  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 +9 -9
  124. package/dist/data.d.ts +9 -9
  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/index11.vue.d.ts +2 -2
  140. package/dist/index12.vue.d.cts +2 -2
  141. package/dist/index12.vue.d.ts +1 -1
  142. package/dist/index13.vue.d.cts +1 -1
  143. package/dist/index13.vue.d.ts +3 -3
  144. package/dist/index14.vue.d.cts +3 -3
  145. package/dist/index14.vue.d.ts +7 -7
  146. package/dist/index15.vue.d.cts +7 -7
  147. package/dist/index16.vue.d.ts +1 -1
  148. package/dist/index17.vue.d.cts +1 -1
  149. package/dist/index17.vue.d.ts +1 -1
  150. package/dist/index18.vue.d.cts +1 -1
  151. package/dist/index18.vue.d.ts +1 -1
  152. package/dist/index19.vue.d.cts +1 -1
  153. package/dist/index19.vue.d.ts +2 -9
  154. package/dist/index2.vue.d.cts +2 -2
  155. package/dist/index2.vue.d.ts +2 -2
  156. package/dist/index20.vue.d.cts +1 -1
  157. package/dist/index20.vue.d.ts +1 -1
  158. package/dist/index21.vue.d.cts +1 -1
  159. package/dist/index21.vue.d.ts +1 -1
  160. package/dist/index22.vue.d.cts +2 -2
  161. package/dist/index22.vue.d.ts +2 -2
  162. package/dist/index23.vue.d.cts +1 -1
  163. package/dist/index23.vue.d.ts +1 -1
  164. package/dist/index25.vue.d.cts +4 -4
  165. package/dist/index25.vue.d.ts +4 -4
  166. package/dist/index26.vue.d.cts +1 -1
  167. package/dist/index26.vue.d.ts +1 -1
  168. package/dist/index27.vue.d.cts +4 -4
  169. package/dist/index27.vue.d.ts +4 -4
  170. package/dist/index28.vue.d.cts +1 -1
  171. package/dist/index28.vue.d.ts +1 -1
  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 +2 -9
  175. package/dist/index6.vue.d.ts +3 -3
  176. package/dist/index7.vue.d.cts +3 -3
  177. package/dist/index8.vue.d.ts +2 -2
  178. package/dist/index9.vue.d.cts +2 -2
  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 +10898 -10915
  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 +4 -4
  198. package/dist/useCollapsePanel.d.ts +4 -4
  199. package/dist/useComponentLocale.cjs +1 -0
  200. package/dist/useComponentLocale.js +1 -0
  201. package/dist/useCropperCore.d.cts +6 -6
  202. package/dist/useCropperCore.d.ts +6 -6
  203. package/dist/useDraggableLayout.d.cts +1 -1
  204. package/dist/useDraggableLayout.d.ts +1 -1
  205. package/dist/useDynamicFormState.cjs +1 -0
  206. package/dist/useDynamicFormState.d.cts +64 -40
  207. package/dist/useDynamicFormState.d.ts +64 -40
  208. package/dist/useDynamicFormState.js +1 -0
  209. package/dist/useEdgeInteraction.d.cts +3 -3
  210. package/dist/useEdgeInteraction.d.ts +3 -3
  211. package/dist/useGlobalSearch.d.cts +1 -1
  212. package/dist/useGlobalSearch.d.ts +1 -1
  213. package/dist/useQRCode.d.cts +2 -2
  214. package/dist/useQRCode.d.ts +2 -2
  215. package/dist/useSearchState.d.cts +15 -725
  216. package/dist/useSearchState.d.ts +15 -834
  217. package/dist/useSignatureHistory.d.cts +4 -4
  218. package/dist/useSignatureHistory.d.ts +4 -4
  219. package/dist/useSplitResize.d.cts +3 -3
  220. package/dist/useSplitResize.d.ts +3 -3
  221. package/dist/useTableQuery.cjs +3 -3
  222. package/dist/useTableQuery.d.cts +73 -34
  223. package/dist/useTableQuery.d.ts +73 -34
  224. package/dist/useTableQuery.js +3 -3
  225. package/dist/useTimeSelection.d.cts +1 -1
  226. package/dist/useTimeSelection.d.ts +1 -1
  227. package/dist/useTreeOperations.d.cts +5 -5
  228. package/dist/useTreeOperations.d.ts +5 -5
  229. package/dist/useWorkflowValidation.d.cts +3 -3
  230. package/dist/useWorkflowValidation.d.ts +3 -3
  231. package/dist/verification.d.cts +4 -4
  232. package/dist/verification.d.ts +4 -4
  233. package/docs/architecture.en.md +83 -0
  234. package/docs/architecture.md +83 -0
  235. package/docs/assets/README.md +47 -0
  236. package/docs/assets/naive-ui-components-banner.png +0 -0
  237. package/docs/assets/naive-ui-components-banner.svg +69 -0
  238. package/docs/assets/naive-ui-components-logo.png +0 -0
  239. package/docs/assets/naive-ui-components-logo.svg +22 -0
  240. package/docs/components.en.md +118 -0
  241. package/docs/components.md +118 -0
  242. package/docs/engineering.en.md +132 -0
  243. package/docs/engineering.md +133 -0
  244. package/docs/guides/usage.en.md +638 -0
  245. package/docs/guides/usage.md +699 -0
  246. package/docs/performance-0.15.0.md +20 -0
  247. package/docs/security-scan-2026-10-06.md +11 -0
  248. package/docs/security-scan-2026-10-18.md +16 -0
  249. package/package.json +35 -12
  250. package/dist/C_Form2.cjs +0 -1
  251. package/dist/C_Form2.js +0 -1
  252. package/dist/config.cjs +0 -1
  253. package/dist/config.d.cts +0 -33
  254. package/dist/config.d.ts +0 -33
  255. package/dist/config.js +0 -1
@@ -1,11 +1,25 @@
1
1
  import { f as ActionItem, s as ActionBarConfig } from "./presets.cjs";
2
- import { i as ComponentLocale, r as ComponentFeedback } from "./config.cjs";
2
+ import { n as ComponentLocale, t as ComponentFeedback } from "./contracts.cjs";
3
3
  import * as vue from "vue";
4
4
  import { App, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Ref, VNodeChild } from "vue";
5
5
  import { DataTableBaseColumn, DataTableColumn, DataTableRowKey, FormItemRule, PaginationProps } from "naive-ui";
6
6
  import * as _vue_shared0 from "@vue/shared";
7
7
  import { HLJSApi } from "highlight.js";
8
8
 
9
+ //#region src/context.d.ts
10
+ declare const COMPONENT_FEEDBACK_KEY: InjectionKey<ComponentFeedback>;
11
+ declare const COMPONENT_LOCALE_KEY: InjectionKey<ComponentLocale>;
12
+ //#endregion
13
+ //#region src/composables/useComponentLocale.d.ts
14
+ /** Bind the UI-independent translator to this Vue application and local configuration. */
15
+ declare function useComponentLocale(local?: MaybeRefOrGetter<ComponentLocale | undefined>): {
16
+ t: (key: string, params?: Record<string, string | number>) => string;
17
+ };
18
+ //#endregion
19
+ //#region src/adapters/naive/feedback.d.ts
20
+ /** Reuse Naive providers when present and safely degrade to injected/no-op feedback. */
21
+ declare function useComponentFeedback(local?: MaybeRefOrGetter<ComponentFeedback | undefined>): Required<ComponentFeedback>;
22
+ //#endregion
9
23
  //#region src/components/C_Table/composables/usePrintWatermark.d.ts
10
24
  interface WatermarkConfig {
11
25
  text: string;
@@ -234,44 +248,41 @@ declare function useRowDrag<T extends object = DataRecord>(options: UseRowDragOp
234
248
  //#region src/components/C_Table/composables/useCrossPageSelection.d.ts
235
249
  interface CrossPageSelectionConfig {
236
250
  enabled?: boolean;
237
- /** 最大选择数 */
251
+ /** Maximum selected rows, including previously visited remote pages. */
238
252
  maxSelection?: number;
239
253
  }
240
254
  interface UseCrossPageSelectionOptions<T extends object = DataRecord> {
241
- /** 全量数据(非分页后的) */
255
+ /** All local rows, or the loaded page when remote is enabled. */
242
256
  allData: Ref<T[]> | ComputedRef<T[]>;
243
- /** 行键函数 */
244
257
  rowKey: (row: T) => DataTableRowKey;
245
- /** 配置 */
246
258
  config: MaybeRefOrGetter<CrossPageSelectionConfig | undefined>;
259
+ remote?: MaybeRefOrGetter<boolean>;
260
+ childrenKey?: MaybeRefOrGetter<string | undefined>;
261
+ rowCheckable?: (row: T) => boolean;
262
+ onSelectionChange?: (keys: DataTableRowKey[], rows: T[]) => void;
247
263
  }
248
264
  interface UseCrossPageSelectionReturn<T extends object = DataRecord> {
249
- /** 所有选中的 key(跨页) */
250
265
  selectedKeys: Ref<Set<DataTableRowKey>>;
251
- /** 选中行数量 */
252
266
  selectedCount: ComputedRef<number>;
253
- /** 当前页数据的 checkedKeys(给 NDataTable 绑定) */
254
267
  getPageCheckedKeys: (pageData: T[]) => DataTableRowKey[];
255
- /** NDataTable @update:checked-row-keys 处理器 */
256
268
  handlePageSelectionChange: (keys: DataTableRowKey[], pageData: T[]) => void;
257
- /** 全选所有页 */
269
+ /** In remote mode, adds the currently loaded page; never claims to select unseen server rows. */
258
270
  selectAll: () => void;
259
- /** 选择指定 key */
260
271
  select: (key: DataTableRowKey) => boolean;
261
- /** 取消选择指定 key */
262
272
  unselect: (key: DataTableRowKey) => void;
263
- /** 清除所有页选中 */
264
273
  clearAll: () => void;
265
- /** 获取所有选中行数据 */
266
274
  getSelectedRows: () => T[];
267
- /** 判断 key 是否选中 */
268
275
  isSelected: (key: DataTableRowKey) => boolean;
269
276
  }
270
- /** 跨页多选组合式函数 */
277
+ /** Preserve selected identities and loaded row snapshots across local or remote pages. */
271
278
  declare function useCrossPageSelection<T extends object = DataRecord>(options: UseCrossPageSelectionOptions<T>): UseCrossPageSelectionReturn<T>;
272
279
  //#endregion
273
280
  //#region src/components/C_Table/composables/useTableExport.d.ts
274
281
  interface ExportConfig {
282
+ /** Data scope used by C_Table; source preserves the legacy loaded-source behavior. */
283
+ scope?: 'source' | 'page' | 'selected';
284
+ /** Explicit server-side/full-data export request; invoked only when exporting. */
285
+ requestData?: () => DataRecord[] | Promise<DataRecord[]>;
275
286
  /** 导出文件名(不含扩展名) */
276
287
  filename?: string;
277
288
  /** 导出格式 */
@@ -784,7 +795,9 @@ interface BaseTableColumn<T extends object = DataRecord> extends Omit<DataTableB
784
795
  required?: boolean;
785
796
  editType?: EditType;
786
797
  editProps?: EditProps;
787
- editRender?: (value: unknown, rowData: T, rowIndex: number) => VNodeChild;
798
+ editRender?: (value: unknown, rowData: T, rowIndex: number, context: {
799
+ onUpdate: (value: unknown) => void;
800
+ }) => VNodeChild;
788
801
  render?: (rowData: T, rowIndex: number) => VNodeChild;
789
802
  /** 声明式格式化器(优先级低于 render) */
790
803
  formatter?: ColumnFormatter;
@@ -872,6 +885,10 @@ interface TableSelectionProps<T extends object = DataRecord, C = DataRecord> ext
872
885
  interface TableProps<T extends object = DataRecord, C = DataRecord> extends TableBaseProps<T>, TableDisplayProps, TableEditProps<T>, TableExpandProps<T, C>, TableSelectionProps<T, C> {
873
886
  pagination?: PaginationConfig | boolean;
874
887
  actions?: SimpleTableActions<T>;
888
+ /** 根容器 class,原生 class/style 仍转发到内部表格。 */
889
+ wrapperClass?: vue.HTMLAttributes['class'];
890
+ /** 填满确定高度的容器,保留工具栏和分页空间。 */
891
+ flexHeight?: boolean;
875
892
  }
876
893
  interface TableExpandEvents<T extends object = DataRecord> {
877
894
  'expand-change': [expandedKeys: DataTableRowKey[], row?: T, expanded?: boolean];
@@ -907,6 +924,8 @@ interface TableExpandMethods {
907
924
  expandAll: () => Promise<void>;
908
925
  collapseAll: () => void;
909
926
  isExpanded: (rowKey: DataTableRowKey) => boolean;
927
+ retryExpand: (rowKey: DataTableRowKey) => Promise<void>;
928
+ invalidateExpand: (rowKey?: DataTableRowKey) => void;
910
929
  }
911
930
  interface TableSelectionMethods<T extends object = DataRecord, C = DataRecord> {
912
931
  selectRow: (rowKey: DataTableRowKey) => boolean | void;
@@ -938,11 +957,16 @@ interface TablePaginationMethods {
938
957
  resetToFirstPage: () => void;
939
958
  getTotalPages: () => number;
940
959
  }
941
- interface TableInstance<T extends object = DataRecord, C = DataRecord> extends TableEditMethods<T>, TableExpandMethods, TableSelectionMethods<T, C>, TableDynamicRowsMethods<T>, TablePaginationMethods {}
960
+ interface TableInstance<T extends object = DataRecord, C = DataRecord> extends TableEditMethods<T>, TableExpandMethods, TableSelectionMethods<T, C>, TableDynamicRowsMethods<T>, TablePaginationMethods {
961
+ exportData: () => Promise<void>;
962
+ }
942
963
  interface UseTableExpandOptions<T extends object = DataRecord, C = DataRecord> extends ExpandConfig<T, C>, SelectionConfig<T, C> {
943
964
  data: Ref<T[]> | ComputedRef<T[]>;
944
965
  rowKey: (row: T) => DataTableRowKey;
945
966
  childRowKey?: (child: C) => DataTableRowKey;
967
+ /** Native tree children field; omitted for flat/detail-expansion tables. */
968
+ childrenKey?: string;
969
+ locale?: ComponentLocale;
946
970
  /** 展开数据等待时的加载内容,C_Table 内置统一 SVG;独立引擎可按需提供。 */
947
971
  renderLoading?: () => VNodeChild;
948
972
  defaultExpandedKeys?: DataTableRowKey[];
@@ -956,6 +980,9 @@ interface UseTableExpandReturn<T extends object = DataRecord, C = DataRecord> {
956
980
  childSelections: Ref<Map<DataTableRowKey, DataTableRowKey[]>>;
957
981
  expandDataMap: Ref<Map<DataTableRowKey, C[]>>;
958
982
  loadingMap: Ref<Map<DataTableRowKey, boolean>>;
983
+ errorMap: Ref<Map<DataTableRowKey, unknown>>;
984
+ retryExpand: (key: DataTableRowKey) => Promise<void>;
985
+ invalidateExpand: (key?: DataTableRowKey) => void;
959
986
  selectedRowsCount: ComputedRef<number>;
960
987
  totalChildSelections: ComputedRef<number>;
961
988
  expandAll: () => Promise<void>;
@@ -995,11 +1022,15 @@ type ColumnWithKey = TableColumn & {
995
1022
  //#region src/components/C_Table/index.vue.d.ts
996
1023
  declare const __VLS_export: <T extends object = DataRecord>(__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<{
997
1024
  props: vue.PublicProps & __VLS_PrettifyLocal<{
998
- /** 列配置(crud 模式下可省略) */columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
1025
+ /** 根容器 class;普通 class/style 仍按既有契约转发到 NDataTable。 */wrapperClass?: vue.HTMLAttributes["class"]; /** 填满已确定高度的根容器,并为工具栏和分页预留空间。 */
1026
+ flexHeight?: boolean; /** 列配置(crud 模式下可省略) */
1027
+ columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
999
1028
  data?: MaybeRefLike<T[]>; /** 加载状态 */
1000
1029
  loading?: MaybeRefLike<boolean>; /** 行唯一键 */
1001
1030
  rowKey?: string | ((row: T) => DataTableRowKey); /** 统一功能配置(edit / selection / expand / pagination / dynamicRows / toolbar / display) */
1002
- config?: TableConfig<T>; /** CRUD 绑定 — 传入 useTableCrud() 的返回值,自动接管 data/columns/loading/actions/pagination/events */
1031
+ config?: TableConfig<T>; /** Native pagination compatibility path; takes ownership over config.pagination. */
1032
+ pagination?: PaginationProps | false; /** Native remote mode, used with the native pagination compatibility path. */
1033
+ remote?: boolean; /** CRUD 绑定 — 传入 useTableCrud() 的返回值,自动接管 data/columns/loading/actions/pagination/events */
1003
1034
  crud?: CrudBinding<T>;
1004
1035
  } & {
1005
1036
  [x: `on${Capitalize<string>}`]: ((...args: any) => any) | undefined;
@@ -1013,6 +1044,8 @@ declare const __VLS_export: <T extends object = DataRecord>(__VLS_props: NonNull
1013
1044
  expandRow: (rowKey: DataTableRowKey) => Promise<void>;
1014
1045
  collapseRow: (rowKey: DataTableRowKey) => void;
1015
1046
  toggleExpand: (rowKey: DataTableRowKey) => Promise<void>;
1047
+ retryExpand: (rowKey: DataTableRowKey) => Promise<void>;
1048
+ invalidateExpand: (rowKey?: DataTableRowKey) => void;
1016
1049
  expandAll: () => Promise<void>;
1017
1050
  collapseAll: () => void;
1018
1051
  selectRow: (rowKey: DataTableRowKey) => boolean;
@@ -1111,7 +1144,7 @@ declare const __VLS_export: <T extends object = DataRecord>(__VLS_props: NonNull
1111
1144
  } & {
1112
1145
  loading?: (props: {}) => any;
1113
1146
  };
1114
- emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
1147
+ emit: ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
1115
1148
  }>) => vue.VNode & {
1116
1149
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
1117
1150
  };
@@ -1202,7 +1235,7 @@ interface RowValidationError {
1202
1235
  interface RowEditOptions {
1203
1236
  data: () => DataRecord[];
1204
1237
  rowKey: (row: DataRecord) => DataTableRowKey;
1205
- onSave?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
1238
+ onSave?: (rowData: DataRecord, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
1206
1239
  onCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
1207
1240
  /** 列配置(用于提取校验规则) */
1208
1241
  columns?: () => TableColumn[];
@@ -1264,6 +1297,8 @@ interface TableManagerConfig {
1264
1297
  enableParentChildLink: boolean;
1265
1298
  parentChildLinkMode: ParentChildLinkMode;
1266
1299
  dynamicRows?: DynamicRowsOptions<DataRecord>;
1300
+ treeEnabled?: boolean;
1301
+ treeChildrenKey?: string;
1267
1302
  }
1268
1303
  /**
1269
1304
  * 表格管理器参数接口
@@ -1277,12 +1312,14 @@ interface TableManagerParams {
1277
1312
  columns?: () => TableColumn[];
1278
1313
  /** UI 壳提供加载内容,状态引擎保持可独立调用。 */
1279
1314
  renderLoading?: () => VNodeChild;
1315
+ /** String row-key field inherited by dynamic row creation; explicit dynamicRows.rowKey wins. */
1316
+ rowKeyField?: MaybeRefOrGetter<string | undefined>;
1280
1317
  }
1281
1318
  /**
1282
1319
  * 事件处理器接口
1283
1320
  */
1284
1321
  interface EventHandlers {
1285
- onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string) => Promise<void>;
1322
+ onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string, originalKey?: DataTableRowKey) => Promise<void>;
1286
1323
  onCancel: (rowData: DataRecord, rowIndex: number) => Promise<void>;
1287
1324
  onExpandChange: (keys: DataTableRowKey[], row?: DataRecord, expanded?: boolean) => void;
1288
1325
  onSelectionChange: (checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections: Map<DataTableRowKey, DataTableRowKey[]>) => void;
@@ -1462,7 +1499,7 @@ declare function usePagination<T extends object = DataRecord>(options: UsePagina
1462
1499
  interface CellEditOptions {
1463
1500
  data: () => DataRecord[];
1464
1501
  rowKey: (row: DataRecord) => DataTableRowKey;
1465
- onSave?: (rowData: DataRecord, rowIndex: number, columnKey: string) => void | Promise<void>;
1502
+ onSave?: (rowData: DataRecord, rowIndex: number, columnKey: string, originalKey?: DataTableRowKey) => void | Promise<void>;
1466
1503
  /** 列配置(用于提取校验规则) */
1467
1504
  columns?: () => TableColumn[];
1468
1505
  }
@@ -1503,7 +1540,7 @@ declare function useCellEdit(options: CellEditOptions): {
1503
1540
  interface ModalEditOptions<T extends object = DataRecord> {
1504
1541
  data: () => T[];
1505
1542
  rowKey: (row: T) => DataTableRowKey;
1506
- onSave?: (editingData: T, rowIndex: number) => void | Promise<void>;
1543
+ onSave?: (editingData: T, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
1507
1544
  onCancel?: (originalData: T, rowIndex: number) => void | Promise<void>;
1508
1545
  }
1509
1546
  /** Modal edit state with lossless snapshots and retry-safe async saves. */
@@ -1529,6 +1566,8 @@ declare function useModalEdit<T extends object = DataRecord>(options: ModalEditO
1529
1566
  interface HighlightPluginOptions {
1530
1567
  autoDetect?: boolean;
1531
1568
  extraLanguages?: string[];
1569
+ /** Explicit compatibility bridge; restored when the owning app unmounts. */
1570
+ exposeToWindow?: boolean;
1532
1571
  /** Enable lifecycle diagnostics through the supplied logger. */
1533
1572
  debug?: boolean;
1534
1573
  logger?: Pick<Console, 'info' | 'warn' | 'error'>;
@@ -1537,23 +1576,23 @@ interface HighlightPluginOptions {
1537
1576
  language: string;
1538
1577
  }) => void;
1539
1578
  }
1540
- /**
1541
- * * @description 获取 highlight 功能的 API 接口
1542
- * ! @return highlight API 对象,包含所有可用方法
1543
- */
1544
- declare const useHighlight: (options?: HighlightPluginOptions) => {
1579
+ interface HighlightAPI {
1545
1580
  getHljs: () => HLJSApi;
1546
1581
  loadLanguage: (language: string) => Promise<boolean>;
1547
1582
  loadLanguages: (languages: string[]) => Promise<string[]>;
1548
1583
  getLoadedLanguages: () => string[];
1549
- };
1584
+ }
1585
+ /** Create an independent highlighter, including its language registry and loaders. */
1586
+ declare function createHighlight(options?: HighlightPluginOptions): HighlightAPI;
1587
+ /** Reuse the current app's highlighter or create a standalone, isolated one. */
1588
+ declare function useHighlight(options?: HighlightPluginOptions): HighlightAPI;
1550
1589
  /**
1551
1590
  * * @description 安装 highlight.js 插件到 Vue 应用
1552
1591
  * ? @param app - Vue 应用实例
1553
1592
  * ? @param options - 插件配置选项
1554
- * ! @return void
1593
+ * ! @return 应用独立的 highlight API
1555
1594
  */
1556
- declare function setupHighlight(app: App, options?: HighlightPluginOptions): void;
1595
+ declare function setupHighlight(app: App, options?: HighlightPluginOptions): HighlightAPI;
1557
1596
  //#endregion
1558
1597
  //#region src/utils/storage.d.ts
1559
1598
  /** SSR-safe localStorage helpers. Storage failures never break component state. */
@@ -1694,4 +1733,4 @@ declare function useTableQuery<T extends object, Q extends object = Record<strin
1694
1733
  cancel: () => void;
1695
1734
  };
1696
1735
  //#endregion
1697
- export { applyFormatter as $, EditMode as A, PrintWatermarkOptions as At, TableColumn as B, _default as C, RowDragConfig as Ct, ColumnWithKey as D, DynamicRowsOptions as Dt, ChildSelectionState as E, useRowDrag as Et, RenderFunction as F, TableRowKeyIssue as G, TableInstance as H, RowAction as I, ColumnFormatter as J, UseTableExpandOptions as K, SelectOption as L, NormalTableColumn as M, usePrintWatermark as Mt, PaginationConfig as N, CustomAction as O, DynamicRowsReturn as Ot, ParentChildLinkMode as P, TableGlobalConfig as Q, SimpleTableActions as R, validateTableRowKeys as S, useCrossPageSelection as St, BuiltInTableColumn as T, UseRowDragReturn as Tt, TableProps as U, TableEmits as V, TableRowKey as W, FormatterType as X, FormatterConfig as Y, TABLE_GLOBAL_CONFIG_KEY as Z, useTableManager as _, ExportConfig as _t, getItem as a, DisplayConfig as at, defineTableColumns as b, UseCrossPageSelectionOptions as bt, setItem as c, ExpandConfig$1 as ct, useHighlight as d, TableConfig as dt, mergeGlobalConfig as et, useModalEdit as f, ToolbarConfig as ft, useTableExpand as g, resolveConfig as gt, useTableActions as h, createEditModeChecker as ht, useTableQuery as i, CrudBinding as it, MaybeRefLike as j, printPresets as jt, DataRecord as k, useDynamicRows as kt, HighlightPluginOptions as l, SelectionConfig$1 as lt, usePagination as m, VirtualScrollConfig as mt, TableQueryResult as n, BatchActionsConfig as nt, removeAllItem as o, EditConfig as ot, useCellEdit as p, TreeConfig as pt, UseTableExpandReturn as q, UseTableQueryOptions as r, ColumnDragConfig as rt, removeItem as s, ErrorConfig as st, TableQueryContext as t, useTableGlobalConfig as tt, setupHighlight as u, SummaryConfig as ut, useRowEdit as v, exportTableData as vt, ApiFunction as w, UseRowDragOptions as wt, defineTableConfig as x, UseCrossPageSelectionReturn as xt, useTableColumns as y, CrossPageSelectionConfig as yt, StrictTableColumn as z };
1736
+ export { TABLE_GLOBAL_CONFIG_KEY as $, CustomAction as A, DynamicRowsReturn as At, SimpleTableActions as B, defineTableConfig as C, UseCrossPageSelectionReturn as Ct, BuiltInTableColumn as D, UseRowDragReturn as Dt, ApiFunction as E, UseRowDragOptions as Et, PaginationConfig as F, useComponentFeedback as Ft, TableProps as G, TableColumn as H, ParentChildLinkMode as I, useComponentLocale as It, UseTableExpandOptions as J, TableRowKey as K, RenderFunction as L, COMPONENT_FEEDBACK_KEY as Lt, EditMode as M, PrintWatermarkOptions as Mt, MaybeRefLike as N, printPresets as Nt, ChildSelectionState as O, useRowDrag as Ot, NormalTableColumn as P, usePrintWatermark as Pt, FormatterType as Q, RowAction as R, COMPONENT_LOCALE_KEY as Rt, defineTableColumns as S, UseCrossPageSelectionOptions as St, _default as T, RowDragConfig as Tt, TableEmits as U, StrictTableColumn as V, TableInstance as W, ColumnFormatter as X, UseTableExpandReturn as Y, FormatterConfig as Z, useTableActions as _, createEditModeChecker as _t, getItem as a, ColumnDragConfig as at, useRowEdit as b, exportTableData as bt, setItem as c, EditConfig as ct, createHighlight as d, SelectionConfig$1 as dt, TableGlobalConfig as et, setupHighlight as f, SummaryConfig as ft, usePagination as g, VirtualScrollConfig as gt, useCellEdit as h, TreeConfig as ht, useTableQuery as i, BatchActionsConfig as it, DataRecord as j, useDynamicRows as jt, ColumnWithKey as k, DynamicRowsOptions as kt, HighlightAPI as l, ErrorConfig as lt, useModalEdit as m, ToolbarConfig as mt, TableQueryResult as n, mergeGlobalConfig as nt, removeAllItem as o, CrudBinding as ot, useHighlight as p, TableConfig as pt, TableRowKeyIssue as q, UseTableQueryOptions as r, useTableGlobalConfig as rt, removeItem as s, DisplayConfig as st, TableQueryContext as t, applyFormatter as tt, HighlightPluginOptions as u, ExpandConfig$1 as ut, useTableExpand as v, resolveConfig as vt, validateTableRowKeys as w, useCrossPageSelection as wt, useTableColumns as x, CrossPageSelectionConfig as xt, useTableManager as y, ExportConfig as yt, SelectOption as z };
@@ -1,11 +1,25 @@
1
1
  import { f as ActionItem, s as ActionBarConfig } from "./presets.js";
2
- import { i as ComponentLocale, r as ComponentFeedback } from "./config.js";
2
+ import { n as ComponentLocale, t as ComponentFeedback } from "./contracts.js";
3
3
  import * as vue from "vue";
4
4
  import { App, ComputedRef, InjectionKey, MaybeRef, MaybeRefOrGetter, Ref, VNodeChild } from "vue";
5
5
  import { DataTableBaseColumn, DataTableColumn, DataTableRowKey, FormItemRule, PaginationProps } from "naive-ui";
6
6
  import * as _vue_shared0 from "@vue/shared";
7
7
  import { HLJSApi } from "highlight.js";
8
8
 
9
+ //#region src/context.d.ts
10
+ declare const COMPONENT_FEEDBACK_KEY: InjectionKey<ComponentFeedback>;
11
+ declare const COMPONENT_LOCALE_KEY: InjectionKey<ComponentLocale>;
12
+ //#endregion
13
+ //#region src/composables/useComponentLocale.d.ts
14
+ /** Bind the UI-independent translator to this Vue application and local configuration. */
15
+ declare function useComponentLocale(local?: MaybeRefOrGetter<ComponentLocale | undefined>): {
16
+ t: (key: string, params?: Record<string, string | number>) => string;
17
+ };
18
+ //#endregion
19
+ //#region src/adapters/naive/feedback.d.ts
20
+ /** Reuse Naive providers when present and safely degrade to injected/no-op feedback. */
21
+ declare function useComponentFeedback(local?: MaybeRefOrGetter<ComponentFeedback | undefined>): Required<ComponentFeedback>;
22
+ //#endregion
9
23
  //#region src/components/C_Table/composables/usePrintWatermark.d.ts
10
24
  interface WatermarkConfig {
11
25
  text: string;
@@ -234,44 +248,41 @@ declare function useRowDrag<T extends object = DataRecord>(options: UseRowDragOp
234
248
  //#region src/components/C_Table/composables/useCrossPageSelection.d.ts
235
249
  interface CrossPageSelectionConfig {
236
250
  enabled?: boolean;
237
- /** 最大选择数 */
251
+ /** Maximum selected rows, including previously visited remote pages. */
238
252
  maxSelection?: number;
239
253
  }
240
254
  interface UseCrossPageSelectionOptions<T extends object = DataRecord> {
241
- /** 全量数据(非分页后的) */
255
+ /** All local rows, or the loaded page when remote is enabled. */
242
256
  allData: Ref<T[]> | ComputedRef<T[]>;
243
- /** 行键函数 */
244
257
  rowKey: (row: T) => DataTableRowKey;
245
- /** 配置 */
246
258
  config: MaybeRefOrGetter<CrossPageSelectionConfig | undefined>;
259
+ remote?: MaybeRefOrGetter<boolean>;
260
+ childrenKey?: MaybeRefOrGetter<string | undefined>;
261
+ rowCheckable?: (row: T) => boolean;
262
+ onSelectionChange?: (keys: DataTableRowKey[], rows: T[]) => void;
247
263
  }
248
264
  interface UseCrossPageSelectionReturn<T extends object = DataRecord> {
249
- /** 所有选中的 key(跨页) */
250
265
  selectedKeys: Ref<Set<DataTableRowKey>>;
251
- /** 选中行数量 */
252
266
  selectedCount: ComputedRef<number>;
253
- /** 当前页数据的 checkedKeys(给 NDataTable 绑定) */
254
267
  getPageCheckedKeys: (pageData: T[]) => DataTableRowKey[];
255
- /** NDataTable @update:checked-row-keys 处理器 */
256
268
  handlePageSelectionChange: (keys: DataTableRowKey[], pageData: T[]) => void;
257
- /** 全选所有页 */
269
+ /** In remote mode, adds the currently loaded page; never claims to select unseen server rows. */
258
270
  selectAll: () => void;
259
- /** 选择指定 key */
260
271
  select: (key: DataTableRowKey) => boolean;
261
- /** 取消选择指定 key */
262
272
  unselect: (key: DataTableRowKey) => void;
263
- /** 清除所有页选中 */
264
273
  clearAll: () => void;
265
- /** 获取所有选中行数据 */
266
274
  getSelectedRows: () => T[];
267
- /** 判断 key 是否选中 */
268
275
  isSelected: (key: DataTableRowKey) => boolean;
269
276
  }
270
- /** 跨页多选组合式函数 */
277
+ /** Preserve selected identities and loaded row snapshots across local or remote pages. */
271
278
  declare function useCrossPageSelection<T extends object = DataRecord>(options: UseCrossPageSelectionOptions<T>): UseCrossPageSelectionReturn<T>;
272
279
  //#endregion
273
280
  //#region src/components/C_Table/composables/useTableExport.d.ts
274
281
  interface ExportConfig {
282
+ /** Data scope used by C_Table; source preserves the legacy loaded-source behavior. */
283
+ scope?: 'source' | 'page' | 'selected';
284
+ /** Explicit server-side/full-data export request; invoked only when exporting. */
285
+ requestData?: () => DataRecord[] | Promise<DataRecord[]>;
275
286
  /** 导出文件名(不含扩展名) */
276
287
  filename?: string;
277
288
  /** 导出格式 */
@@ -784,7 +795,9 @@ interface BaseTableColumn<T extends object = DataRecord> extends Omit<DataTableB
784
795
  required?: boolean;
785
796
  editType?: EditType;
786
797
  editProps?: EditProps;
787
- editRender?: (value: unknown, rowData: T, rowIndex: number) => VNodeChild;
798
+ editRender?: (value: unknown, rowData: T, rowIndex: number, context: {
799
+ onUpdate: (value: unknown) => void;
800
+ }) => VNodeChild;
788
801
  render?: (rowData: T, rowIndex: number) => VNodeChild;
789
802
  /** 声明式格式化器(优先级低于 render) */
790
803
  formatter?: ColumnFormatter;
@@ -872,6 +885,10 @@ interface TableSelectionProps<T extends object = DataRecord, C = DataRecord> ext
872
885
  interface TableProps<T extends object = DataRecord, C = DataRecord> extends TableBaseProps<T>, TableDisplayProps, TableEditProps<T>, TableExpandProps<T, C>, TableSelectionProps<T, C> {
873
886
  pagination?: PaginationConfig | boolean;
874
887
  actions?: SimpleTableActions<T>;
888
+ /** 根容器 class,原生 class/style 仍转发到内部表格。 */
889
+ wrapperClass?: vue.HTMLAttributes['class'];
890
+ /** 填满确定高度的容器,保留工具栏和分页空间。 */
891
+ flexHeight?: boolean;
875
892
  }
876
893
  interface TableExpandEvents<T extends object = DataRecord> {
877
894
  'expand-change': [expandedKeys: DataTableRowKey[], row?: T, expanded?: boolean];
@@ -907,6 +924,8 @@ interface TableExpandMethods {
907
924
  expandAll: () => Promise<void>;
908
925
  collapseAll: () => void;
909
926
  isExpanded: (rowKey: DataTableRowKey) => boolean;
927
+ retryExpand: (rowKey: DataTableRowKey) => Promise<void>;
928
+ invalidateExpand: (rowKey?: DataTableRowKey) => void;
910
929
  }
911
930
  interface TableSelectionMethods<T extends object = DataRecord, C = DataRecord> {
912
931
  selectRow: (rowKey: DataTableRowKey) => boolean | void;
@@ -938,11 +957,16 @@ interface TablePaginationMethods {
938
957
  resetToFirstPage: () => void;
939
958
  getTotalPages: () => number;
940
959
  }
941
- interface TableInstance<T extends object = DataRecord, C = DataRecord> extends TableEditMethods<T>, TableExpandMethods, TableSelectionMethods<T, C>, TableDynamicRowsMethods<T>, TablePaginationMethods {}
960
+ interface TableInstance<T extends object = DataRecord, C = DataRecord> extends TableEditMethods<T>, TableExpandMethods, TableSelectionMethods<T, C>, TableDynamicRowsMethods<T>, TablePaginationMethods {
961
+ exportData: () => Promise<void>;
962
+ }
942
963
  interface UseTableExpandOptions<T extends object = DataRecord, C = DataRecord> extends ExpandConfig<T, C>, SelectionConfig<T, C> {
943
964
  data: Ref<T[]> | ComputedRef<T[]>;
944
965
  rowKey: (row: T) => DataTableRowKey;
945
966
  childRowKey?: (child: C) => DataTableRowKey;
967
+ /** Native tree children field; omitted for flat/detail-expansion tables. */
968
+ childrenKey?: string;
969
+ locale?: ComponentLocale;
946
970
  /** 展开数据等待时的加载内容,C_Table 内置统一 SVG;独立引擎可按需提供。 */
947
971
  renderLoading?: () => VNodeChild;
948
972
  defaultExpandedKeys?: DataTableRowKey[];
@@ -956,6 +980,9 @@ interface UseTableExpandReturn<T extends object = DataRecord, C = DataRecord> {
956
980
  childSelections: Ref<Map<DataTableRowKey, DataTableRowKey[]>>;
957
981
  expandDataMap: Ref<Map<DataTableRowKey, C[]>>;
958
982
  loadingMap: Ref<Map<DataTableRowKey, boolean>>;
983
+ errorMap: Ref<Map<DataTableRowKey, unknown>>;
984
+ retryExpand: (key: DataTableRowKey) => Promise<void>;
985
+ invalidateExpand: (key?: DataTableRowKey) => void;
959
986
  selectedRowsCount: ComputedRef<number>;
960
987
  totalChildSelections: ComputedRef<number>;
961
988
  expandAll: () => Promise<void>;
@@ -995,11 +1022,15 @@ type ColumnWithKey = TableColumn & {
995
1022
  //#region src/components/C_Table/index.vue.d.ts
996
1023
  declare const __VLS_export: <T extends object = DataRecord>(__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<{
997
1024
  props: vue.PublicProps & __VLS_PrettifyLocal<{
998
- /** 列配置(crud 模式下可省略) */columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
1025
+ /** 根容器 class;普通 class/style 仍按既有契约转发到 NDataTable。 */wrapperClass?: vue.HTMLAttributes["class"]; /** 填满已确定高度的根容器,并为工具栏和分页预留空间。 */
1026
+ flexHeight?: boolean; /** 列配置(crud 模式下可省略) */
1027
+ columns?: TableColumn<T>[]; /** 数据源(crud 模式下可省略) */
999
1028
  data?: MaybeRefLike<T[]>; /** 加载状态 */
1000
1029
  loading?: MaybeRefLike<boolean>; /** 行唯一键 */
1001
1030
  rowKey?: string | ((row: T) => DataTableRowKey); /** 统一功能配置(edit / selection / expand / pagination / dynamicRows / toolbar / display) */
1002
- config?: TableConfig<T>; /** CRUD 绑定 — 传入 useTableCrud() 的返回值,自动接管 data/columns/loading/actions/pagination/events */
1031
+ config?: TableConfig<T>; /** Native pagination compatibility path; takes ownership over config.pagination. */
1032
+ pagination?: PaginationProps | false; /** Native remote mode, used with the native pagination compatibility path. */
1033
+ remote?: boolean; /** CRUD 绑定 — 传入 useTableCrud() 的返回值,自动接管 data/columns/loading/actions/pagination/events */
1003
1034
  crud?: CrudBinding<T>;
1004
1035
  } & {
1005
1036
  [x: `on${Capitalize<string>}`]: ((...args: any) => any) | undefined;
@@ -1013,6 +1044,8 @@ declare const __VLS_export: <T extends object = DataRecord>(__VLS_props: NonNull
1013
1044
  expandRow: (rowKey: DataTableRowKey) => Promise<void>;
1014
1045
  collapseRow: (rowKey: DataTableRowKey) => void;
1015
1046
  toggleExpand: (rowKey: DataTableRowKey) => Promise<void>;
1047
+ retryExpand: (rowKey: DataTableRowKey) => Promise<void>;
1048
+ invalidateExpand: (rowKey?: DataTableRowKey) => void;
1016
1049
  expandAll: () => Promise<void>;
1017
1050
  collapseAll: () => void;
1018
1051
  selectRow: (rowKey: DataTableRowKey) => boolean;
@@ -1111,7 +1144,7 @@ declare const __VLS_export: <T extends object = DataRecord>(__VLS_props: NonNull
1111
1144
  } & {
1112
1145
  loading?: (props: {}) => any;
1113
1146
  };
1114
- emit: ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
1147
+ emit: ((evt: "save", rowData: DataRecord, rowIndex: number, columnKey?: string | undefined) => void) & ((evt: "cancel", rowData: DataRecord, rowIndex: number) => void) & ((evt: "pagination-change", ...args: [page: number, pageSize: number] & [page: number, pageSize: number]) => void) & ((evt: "row-delete", ...args: [deletedRow: DataRecord, index: number] & [deletedRow: DataRecord, index: number]) => void) & ((evt: "batch-action-error", error: unknown, actionKey: string) => void) & ((evt: "row-key-error", issues: TableRowKeyIssue<DataRecord>[]) => void) & ((evt: "expand-change", expandedKeys: DataTableRowKey[], row?: DataRecord | undefined, expanded?: boolean | undefined) => void) & ((evt: "selection-change", checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections?: Map<DataTableRowKey, DataTableRowKey[]> | undefined) => void) & ((evt: "child-selection-change", parentKey: DataTableRowKey, childKeys: DataTableRowKey[], childRows: DataRecord[]) => void) & ((evt: "parent-child-link-change", parentKey: DataTableRowKey, shouldSelect: boolean) => void) & ((evt: "update:data", data: DataRecord[]) => void) & ((evt: "edit-error", error: unknown) => void) & ((evt: "row-add", newRow: DataRecord) => void) & ((evt: "row-copy", originalRow: DataRecord, newRow: DataRecord) => void) & ((evt: "row-move", row: DataRecord, fromIndex: number, toIndex: number) => void) & ((evt: "row-selection-change", selectedKey: DataTableRowKey | null, selectedRow: DataRecord | null) => void) & ((evt: "view-detail", data: DataRecord) => void) & ((evt: "column-change", columns: TableColumn[]) => void);
1115
1148
  }>) => vue.VNode & {
1116
1149
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
1117
1150
  };
@@ -1202,7 +1235,7 @@ interface RowValidationError {
1202
1235
  interface RowEditOptions {
1203
1236
  data: () => DataRecord[];
1204
1237
  rowKey: (row: DataRecord) => DataTableRowKey;
1205
- onSave?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
1238
+ onSave?: (rowData: DataRecord, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
1206
1239
  onCancel?: (rowData: DataRecord, rowIndex: number) => void | Promise<void>;
1207
1240
  /** 列配置(用于提取校验规则) */
1208
1241
  columns?: () => TableColumn[];
@@ -1264,6 +1297,8 @@ interface TableManagerConfig {
1264
1297
  enableParentChildLink: boolean;
1265
1298
  parentChildLinkMode: ParentChildLinkMode;
1266
1299
  dynamicRows?: DynamicRowsOptions<DataRecord>;
1300
+ treeEnabled?: boolean;
1301
+ treeChildrenKey?: string;
1267
1302
  }
1268
1303
  /**
1269
1304
  * 表格管理器参数接口
@@ -1277,12 +1312,14 @@ interface TableManagerParams {
1277
1312
  columns?: () => TableColumn[];
1278
1313
  /** UI 壳提供加载内容,状态引擎保持可独立调用。 */
1279
1314
  renderLoading?: () => VNodeChild;
1315
+ /** String row-key field inherited by dynamic row creation; explicit dynamicRows.rowKey wins. */
1316
+ rowKeyField?: MaybeRefOrGetter<string | undefined>;
1280
1317
  }
1281
1318
  /**
1282
1319
  * 事件处理器接口
1283
1320
  */
1284
1321
  interface EventHandlers {
1285
- onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string) => Promise<void>;
1322
+ onSave: (rowData: DataRecord, rowIndex: number, columnKey?: string, originalKey?: DataTableRowKey) => Promise<void>;
1286
1323
  onCancel: (rowData: DataRecord, rowIndex: number) => Promise<void>;
1287
1324
  onExpandChange: (keys: DataTableRowKey[], row?: DataRecord, expanded?: boolean) => void;
1288
1325
  onSelectionChange: (checkedKeys: DataTableRowKey[], checkedRows: DataRecord[], childSelections: Map<DataTableRowKey, DataTableRowKey[]>) => void;
@@ -1462,7 +1499,7 @@ declare function usePagination<T extends object = DataRecord>(options: UsePagina
1462
1499
  interface CellEditOptions {
1463
1500
  data: () => DataRecord[];
1464
1501
  rowKey: (row: DataRecord) => DataTableRowKey;
1465
- onSave?: (rowData: DataRecord, rowIndex: number, columnKey: string) => void | Promise<void>;
1502
+ onSave?: (rowData: DataRecord, rowIndex: number, columnKey: string, originalKey?: DataTableRowKey) => void | Promise<void>;
1466
1503
  /** 列配置(用于提取校验规则) */
1467
1504
  columns?: () => TableColumn[];
1468
1505
  }
@@ -1503,7 +1540,7 @@ declare function useCellEdit(options: CellEditOptions): {
1503
1540
  interface ModalEditOptions<T extends object = DataRecord> {
1504
1541
  data: () => T[];
1505
1542
  rowKey: (row: T) => DataTableRowKey;
1506
- onSave?: (editingData: T, rowIndex: number) => void | Promise<void>;
1543
+ onSave?: (editingData: T, rowIndex: number, originalKey?: DataTableRowKey) => void | Promise<void>;
1507
1544
  onCancel?: (originalData: T, rowIndex: number) => void | Promise<void>;
1508
1545
  }
1509
1546
  /** Modal edit state with lossless snapshots and retry-safe async saves. */
@@ -1529,6 +1566,8 @@ declare function useModalEdit<T extends object = DataRecord>(options: ModalEditO
1529
1566
  interface HighlightPluginOptions {
1530
1567
  autoDetect?: boolean;
1531
1568
  extraLanguages?: string[];
1569
+ /** Explicit compatibility bridge; restored when the owning app unmounts. */
1570
+ exposeToWindow?: boolean;
1532
1571
  /** Enable lifecycle diagnostics through the supplied logger. */
1533
1572
  debug?: boolean;
1534
1573
  logger?: Pick<Console, 'info' | 'warn' | 'error'>;
@@ -1537,23 +1576,23 @@ interface HighlightPluginOptions {
1537
1576
  language: string;
1538
1577
  }) => void;
1539
1578
  }
1540
- /**
1541
- * * @description 获取 highlight 功能的 API 接口
1542
- * ! @return highlight API 对象,包含所有可用方法
1543
- */
1544
- declare const useHighlight: (options?: HighlightPluginOptions) => {
1579
+ interface HighlightAPI {
1545
1580
  getHljs: () => HLJSApi;
1546
1581
  loadLanguage: (language: string) => Promise<boolean>;
1547
1582
  loadLanguages: (languages: string[]) => Promise<string[]>;
1548
1583
  getLoadedLanguages: () => string[];
1549
- };
1584
+ }
1585
+ /** Create an independent highlighter, including its language registry and loaders. */
1586
+ declare function createHighlight(options?: HighlightPluginOptions): HighlightAPI;
1587
+ /** Reuse the current app's highlighter or create a standalone, isolated one. */
1588
+ declare function useHighlight(options?: HighlightPluginOptions): HighlightAPI;
1550
1589
  /**
1551
1590
  * * @description 安装 highlight.js 插件到 Vue 应用
1552
1591
  * ? @param app - Vue 应用实例
1553
1592
  * ? @param options - 插件配置选项
1554
- * ! @return void
1593
+ * ! @return 应用独立的 highlight API
1555
1594
  */
1556
- declare function setupHighlight(app: App, options?: HighlightPluginOptions): void;
1595
+ declare function setupHighlight(app: App, options?: HighlightPluginOptions): HighlightAPI;
1557
1596
  //#endregion
1558
1597
  //#region src/utils/storage.d.ts
1559
1598
  /** SSR-safe localStorage helpers. Storage failures never break component state. */
@@ -1694,4 +1733,4 @@ declare function useTableQuery<T extends object, Q extends object = Record<strin
1694
1733
  cancel: () => void;
1695
1734
  };
1696
1735
  //#endregion
1697
- export { applyFormatter as $, EditMode as A, PrintWatermarkOptions as At, TableColumn as B, _default as C, RowDragConfig as Ct, ColumnWithKey as D, DynamicRowsOptions as Dt, ChildSelectionState as E, useRowDrag as Et, RenderFunction as F, TableRowKeyIssue as G, TableInstance as H, RowAction as I, ColumnFormatter as J, UseTableExpandOptions as K, SelectOption as L, NormalTableColumn as M, usePrintWatermark as Mt, PaginationConfig as N, CustomAction as O, DynamicRowsReturn as Ot, ParentChildLinkMode as P, TableGlobalConfig as Q, SimpleTableActions as R, validateTableRowKeys as S, useCrossPageSelection as St, BuiltInTableColumn as T, UseRowDragReturn as Tt, TableProps as U, TableEmits as V, TableRowKey as W, FormatterType as X, FormatterConfig as Y, TABLE_GLOBAL_CONFIG_KEY as Z, useTableManager as _, ExportConfig as _t, getItem as a, DisplayConfig as at, defineTableColumns as b, UseCrossPageSelectionOptions as bt, setItem as c, ExpandConfig$1 as ct, useHighlight as d, TableConfig as dt, mergeGlobalConfig as et, useModalEdit as f, ToolbarConfig as ft, useTableExpand as g, resolveConfig as gt, useTableActions as h, createEditModeChecker as ht, useTableQuery as i, CrudBinding as it, MaybeRefLike as j, printPresets as jt, DataRecord as k, useDynamicRows as kt, HighlightPluginOptions as l, SelectionConfig$1 as lt, usePagination as m, VirtualScrollConfig as mt, TableQueryResult as n, BatchActionsConfig as nt, removeAllItem as o, EditConfig as ot, useCellEdit as p, TreeConfig as pt, UseTableExpandReturn as q, UseTableQueryOptions as r, ColumnDragConfig as rt, removeItem as s, ErrorConfig as st, TableQueryContext as t, useTableGlobalConfig as tt, setupHighlight as u, SummaryConfig as ut, useRowEdit as v, exportTableData as vt, ApiFunction as w, UseRowDragOptions as wt, defineTableConfig as x, UseCrossPageSelectionReturn as xt, useTableColumns as y, CrossPageSelectionConfig as yt, StrictTableColumn as z };
1736
+ export { TABLE_GLOBAL_CONFIG_KEY as $, CustomAction as A, DynamicRowsReturn as At, SimpleTableActions as B, defineTableConfig as C, UseCrossPageSelectionReturn as Ct, BuiltInTableColumn as D, UseRowDragReturn as Dt, ApiFunction as E, UseRowDragOptions as Et, PaginationConfig as F, useComponentFeedback as Ft, TableProps as G, TableColumn as H, ParentChildLinkMode as I, useComponentLocale as It, UseTableExpandOptions as J, TableRowKey as K, RenderFunction as L, COMPONENT_FEEDBACK_KEY as Lt, EditMode as M, PrintWatermarkOptions as Mt, MaybeRefLike as N, printPresets as Nt, ChildSelectionState as O, useRowDrag as Ot, NormalTableColumn as P, usePrintWatermark as Pt, FormatterType as Q, RowAction as R, COMPONENT_LOCALE_KEY as Rt, defineTableColumns as S, UseCrossPageSelectionOptions as St, _default as T, RowDragConfig as Tt, TableEmits as U, StrictTableColumn as V, TableInstance as W, ColumnFormatter as X, UseTableExpandReturn as Y, FormatterConfig as Z, useTableActions as _, createEditModeChecker as _t, getItem as a, ColumnDragConfig as at, useRowEdit as b, exportTableData as bt, setItem as c, EditConfig as ct, createHighlight as d, SelectionConfig$1 as dt, TableGlobalConfig as et, setupHighlight as f, SummaryConfig as ft, usePagination as g, VirtualScrollConfig as gt, useCellEdit as h, TreeConfig as ht, useTableQuery as i, BatchActionsConfig as it, DataRecord as j, useDynamicRows as jt, ColumnWithKey as k, DynamicRowsOptions as kt, HighlightAPI as l, ErrorConfig as lt, useModalEdit as m, ToolbarConfig as mt, TableQueryResult as n, mergeGlobalConfig as nt, removeAllItem as o, CrudBinding as ot, useHighlight as p, TableConfig as pt, TableRowKeyIssue as q, UseTableQueryOptions as r, useTableGlobalConfig as rt, removeItem as s, DisplayConfig as st, TableQueryContext as t, applyFormatter as tt, HighlightPluginOptions as u, ExpandConfig$1 as ut, useTableExpand as v, resolveConfig as vt, validateTableRowKeys as w, useCrossPageSelection as wt, useTableColumns as x, CrossPageSelectionConfig as xt, useTableManager as y, ExportConfig as yt, SelectOption as z };