@dazhicheng/ui 1.6.7 → 1.6.8

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 (93) hide show
  1. package/dist/components/tt-form/src/form-render/expandable.js +31 -32
  2. package/dist/components/tt-form/src/useFormContext.js +1 -1
  3. package/dist/components/tt-table/index.d.ts +3 -15
  4. package/dist/components/tt-table/index.js +5 -4
  5. package/dist/components/tt-table/src/Table.vue.d.ts +1 -1
  6. package/dist/components/tt-table/src/Table.vue.js +3 -3
  7. package/dist/components/tt-table/src/TableForm.vue.js +168 -159
  8. package/dist/components/tt-table/src/components/TableAction.vue.d.ts +2 -12
  9. package/dist/components/tt-table/src/components/TableAction.vue.js +78 -175
  10. package/dist/components/tt-table/src/hooks/useGridProps.js +64 -60
  11. package/dist/components/tt-table/src/hooks/useTableData.js +77 -74
  12. package/dist/components/tt-table/src/types/table.d.ts +2 -1
  13. package/dist/components/tt-table/src/utils/table-api.d.ts +2 -1
  14. package/dist/components/tt-table/src/utils/table-api.js +3 -2
  15. package/dist/components/tt-vtable/index.js +54 -0
  16. package/dist/components/tt-vtable/src/components/TtVTable.vue.d.ts +188 -0
  17. package/dist/components/tt-vtable/src/components/TtVTable.vue.js +227 -0
  18. package/dist/components/tt-vtable/src/components/TtVTable.vue2.js +4 -0
  19. package/dist/components/tt-vtable/src/components/TtVTableForm.vue.d.ts +32 -0
  20. package/dist/components/tt-vtable/src/components/TtVTableForm.vue.js +121 -0
  21. package/dist/components/tt-vtable/src/components/TtVTableForm.vue2.js +4 -0
  22. package/dist/components/tt-vtable/src/components/VTableEmpty.vue.d.ts +64 -0
  23. package/dist/components/tt-vtable/src/components/VTableEmpty.vue.js +97 -0
  24. package/dist/components/tt-vtable/src/components/VTableEmpty.vue2.js +4 -0
  25. package/dist/components/tt-vtable/src/components/VTablePagination.vue.d.ts +53 -0
  26. package/dist/components/tt-vtable/src/components/VTablePagination.vue.js +52 -0
  27. package/dist/components/tt-vtable/src/components/VTablePagination.vue2.js +4 -0
  28. package/dist/components/tt-vtable/src/components/VTableSelectionAlert.vue.d.ts +35 -0
  29. package/dist/components/tt-vtable/src/components/VTableSelectionAlert.vue.js +50 -0
  30. package/dist/components/tt-vtable/src/components/VTableSelectionAlert.vue2.js +4 -0
  31. package/dist/components/tt-vtable/src/components/VTableToolbar.vue.d.ts +63 -0
  32. package/dist/components/tt-vtable/src/components/VTableToolbar.vue.js +126 -0
  33. package/dist/components/tt-vtable/src/components/VTableToolbar.vue2.js +4 -0
  34. package/dist/components/tt-vtable/src/components/VTableViewport.vue.js +133 -0
  35. package/dist/components/tt-vtable/src/components/VTableViewport.vue2.js +4 -0
  36. package/dist/components/tt-vtable/src/composables/useVTable.d.ts +41 -0
  37. package/dist/components/tt-vtable/src/composables/useVTable.js +25 -0
  38. package/dist/components/tt-vtable/src/composables/useVTableFormRender.d.ts +13 -0
  39. package/dist/components/tt-vtable/src/composables/useVTableFormRender.js +92 -0
  40. package/dist/components/tt-vtable/src/composables/useVTableRender.d.ts +13 -0
  41. package/dist/components/tt-vtable/src/composables/useVTableRender.js +13 -0
  42. package/dist/components/tt-vtable/src/engine/visactor/createListTable.d.ts +10 -0
  43. package/dist/components/tt-vtable/src/engine/visactor/createListTable.js +63 -0
  44. package/dist/components/tt-vtable/src/engine/visactor/createVueCellLayout.d.ts +37 -0
  45. package/dist/components/tt-vtable/src/engine/visactor/createVueCellLayout.js +133 -0
  46. package/dist/components/tt-vtable/src/engine/visactor/index.d.ts +8 -0
  47. package/dist/components/tt-vtable/src/engine/visactor/native-boundaries.d.ts +23 -0
  48. package/dist/components/tt-vtable/src/engine/visactor/native-boundaries.js +70 -0
  49. package/dist/components/tt-vtable/src/engine/visactor/record-adapter.d.ts +38 -0
  50. package/dist/components/tt-vtable/src/engine/visactor/record-adapter.js +41 -0
  51. package/dist/components/tt-vtable/src/engine/visactor/toColumnDefinitions.d.ts +45 -0
  52. package/dist/components/tt-vtable/src/engine/visactor/toColumnDefinitions.js +73 -0
  53. package/dist/components/tt-vtable/src/engine/visactor/toListTableOptions.d.ts +25 -0
  54. package/dist/components/tt-vtable/src/engine/visactor/toListTableOptions.js +25 -0
  55. package/dist/components/tt-vtable/src/engine/visactor/types.d.ts +29 -0
  56. package/dist/components/tt-vtable/src/features/column-preferences/column-preference-storage.d.ts +36 -0
  57. package/dist/components/tt-vtable/src/features/column-preferences/column-preference-storage.js +52 -0
  58. package/dist/components/tt-vtable/src/features/column-preferences/useColumnPreferences.d.ts +74 -0
  59. package/dist/components/tt-vtable/src/features/column-preferences/useColumnPreferences.js +232 -0
  60. package/dist/components/tt-vtable/src/features/editing/useCellEditing.d.ts +48 -0
  61. package/dist/components/tt-vtable/src/features/editing/useCellEditing.js +102 -0
  62. package/dist/components/tt-vtable/src/features/form-integration/useVTableForm.d.ts +51 -0
  63. package/dist/components/tt-vtable/src/features/pagination/useTablePagination.d.ts +40 -0
  64. package/dist/components/tt-vtable/src/features/pagination/useTablePagination.js +51 -0
  65. package/dist/components/tt-vtable/src/features/querying/useRecordQuery.d.ts +38 -0
  66. package/dist/components/tt-vtable/src/features/querying/useRecordQuery.js +57 -0
  67. package/dist/components/tt-vtable/src/features/records/index.d.ts +3 -0
  68. package/dist/components/tt-vtable/src/features/records/record-index.d.ts +122 -0
  69. package/dist/components/tt-vtable/src/features/records/record-index.js +209 -0
  70. package/dist/components/tt-vtable/src/features/records/useRecordSource.d.ts +41 -0
  71. package/dist/components/tt-vtable/src/features/records/useRecordSource.js +249 -0
  72. package/dist/components/tt-vtable/src/features/selection/useRowSelection.d.ts +65 -0
  73. package/dist/components/tt-vtable/src/features/selection/useRowSelection.js +129 -0
  74. package/dist/components/tt-vtable/src/features/tree/useTreeRecords.d.ts +60 -0
  75. package/dist/components/tt-vtable/src/features/tree/useTreeRecords.js +125 -0
  76. package/dist/components/tt-vtable/src/public/index.d.ts +7 -0
  77. package/dist/components/tt-vtable/src/public/table-api.d.ts +215 -0
  78. package/dist/components/tt-vtable/src/public/table-column.d.ts +123 -0
  79. package/dist/components/tt-vtable/src/public/table-errors.d.ts +26 -0
  80. package/dist/components/tt-vtable/src/public/table-errors.js +26 -0
  81. package/dist/components/tt-vtable/src/public/table-events.d.ts +69 -0
  82. package/dist/components/tt-vtable/src/public/table-props.d.ts +216 -0
  83. package/dist/components/tt-vtable/src/public/table-slots.d.ts +37 -0
  84. package/dist/components/tt-vtable/src/runtime/createVTableController.d.ts +12 -0
  85. package/dist/components/tt-vtable/src/runtime/createVTableController.js +238 -0
  86. package/dist/components/tt-vtable/src/runtime/createVTableRuntime.d.ts +79 -0
  87. package/dist/components/tt-vtable/src/runtime/createVTableRuntime.js +380 -0
  88. package/dist/index.d.ts +1 -0
  89. package/dist/index.js +129 -115
  90. package/dist/packages/utils/src/is.js +46 -37
  91. package/dist/style.css +1 -1
  92. package/package.json +3 -1
  93. package/dist/assets/svg/action_more.svg.js +0 -4
@@ -0,0 +1,215 @@
1
+ import { ListTable } from '@visactor/vtable';
2
+ import { ComputedRef, Ref } from 'vue';
3
+ import { TtVTableColumn } from './table-column';
4
+ /** 业务记录允许使用的稳定主键。 */
5
+ export type TtVTableRowKey = number | string;
6
+ /** VTable 可读取的字段路径。 */
7
+ export type TtVTableFieldPath = number | string;
8
+ /** 记录更新时采用的所有权策略。 */
9
+ export type TtVTableMutationMode = "copy-on-write" | "shared";
10
+ /** 精确记录变更的来源。 */
11
+ export type TtVTableRecordChangeSource = "api" | "editing" | "renderer" | "tree";
12
+ /** 远程排序方向。 */
13
+ export type TtVTableSortDirection = "asc" | "desc";
14
+ /** 一条远程排序条件。 */
15
+ export interface TtVTableSortDescriptor {
16
+ /** 参与排序的字段。 */
17
+ field: TtVTableFieldPath;
18
+ /** 当前排序方向。 */
19
+ order: TtVTableSortDirection;
20
+ }
21
+ /** 一条按主键提交的记录补丁。 */
22
+ export interface TtVTableRecordPatch<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
23
+ /** 目标记录主键。 */
24
+ rowKey: Key;
25
+ /** 要覆盖的顶层字段。 */
26
+ changes: Partial<Row>;
27
+ /** 本次变更来源。 */
28
+ source?: TtVTableRecordChangeSource;
29
+ }
30
+ /** 单次记录变化的精确描述。 */
31
+ export interface TtVTableRecordChange<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
32
+ /** 变化前的记录主键。 */
33
+ rowKey: Key;
34
+ /** 变化后的记录主键。 */
35
+ nextRowKey: Key;
36
+ /** 变化后的运行时记录。 */
37
+ record: Readonly<Row>;
38
+ /** 变化前的运行时记录。 */
39
+ previousRecord: Readonly<Row>;
40
+ /** 本次变化涉及的字段。 */
41
+ changedFields: readonly TtVTableFieldPath[];
42
+ /** 变更来源。 */
43
+ source: TtVTableRecordChangeSource;
44
+ }
45
+ /** 当前编辑单元格的稳定身份。 */
46
+ export interface TtVTableEditingCell<Key extends TtVTableRowKey = TtVTableRowKey> {
47
+ /** 业务记录主键。 */
48
+ rowKey: Key;
49
+ /** 当前字段路径。 */
50
+ field: TtVTableFieldPath;
51
+ /** 开始编辑时的值。 */
52
+ previousValue: unknown;
53
+ /** 当前草稿值。 */
54
+ value: unknown;
55
+ }
56
+ /** records 命名空间的只读状态与动作。 */
57
+ export interface TtVTableRecordsApi<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
58
+ /** 当前运行时持有的浅层工作列表。 */
59
+ records: ComputedRef<readonly Row[]>;
60
+ /** 当前记录数量。 */
61
+ count: ComputedRef<number>;
62
+ /** 返回当前运行时工作列表的只读视图。 */
63
+ getAll: () => readonly Row[];
64
+ /** 按业务主键读取当前记录。 */
65
+ getByKey: (rowKey: Key) => Row | undefined;
66
+ /** 使用新的根快照替换全部记录。 */
67
+ replaceAll: (records: readonly Row[]) => void;
68
+ /** 在尾部追加一条或多条记录。 */
69
+ append: (records: Row | readonly Row[]) => void;
70
+ /** 在指定源索引前插入一条或多条记录。 */
71
+ insertAt: (recordIndex: number, records: Row | readonly Row[]) => void;
72
+ /** 按业务主键更新一条记录。 */
73
+ patchByKey: (rowKey: Key, changes: Partial<Row>, source?: TtVTableRecordChangeSource) => void;
74
+ /** 在一次原生调度内更新多条记录。 */
75
+ patchMany: (patches: readonly TtVTableRecordPatch<Row, Key>[]) => void;
76
+ /** 按业务主键和字段路径更新一个单元格。 */
77
+ setCellValue: (rowKey: Key, field: TtVTableFieldPath, value: unknown, source?: TtVTableRecordChangeSource) => void;
78
+ /** 按业务主键删除多条记录。 */
79
+ removeByKeys: (rowKeys: readonly Key[]) => void;
80
+ }
81
+ /** query 命名空间的只读状态与动作。 */
82
+ export interface TtVTableQueryApi {
83
+ /** 最新请求是否仍在进行。 */
84
+ isFetching: Readonly<Ref<boolean>>;
85
+ /** 最新有效请求错误。 */
86
+ error: Readonly<Ref<Error | undefined>>;
87
+ /** 使用当前查询状态发起请求。 */
88
+ fetch: () => Promise<boolean>;
89
+ /** 重放最近一次已接受请求。 */
90
+ refresh: () => Promise<boolean>;
91
+ /** 取消当前请求并使其响应失效。 */
92
+ cancel: () => void;
93
+ }
94
+ /** pagination 命名空间的只读状态与动作。 */
95
+ export interface TtVTablePaginationApi {
96
+ /** 当前页码,起始值为 1。 */
97
+ page: Readonly<Ref<number>>;
98
+ /** 当前每页记录数。 */
99
+ pageSize: Readonly<Ref<number>>;
100
+ /** 当前总记录数。 */
101
+ total: ComputedRef<number>;
102
+ /** 修改当前页码。 */
103
+ setPage: (page: number) => void;
104
+ /** 修改每页记录数并回到第一页。 */
105
+ setPageSize: (pageSize: number) => void;
106
+ /** 恢复初始分页状态。 */
107
+ reset: () => void;
108
+ }
109
+ /** selection 命名空间的只读状态与动作。 */
110
+ export interface TtVTableSelectionApi<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
111
+ /** 按选择顺序保存的主键。 */
112
+ keys: ComputedRef<readonly Key[]>;
113
+ /** 当前已加载且能按主键命中的选中记录。 */
114
+ loadedRows: ComputedRef<readonly Row[]>;
115
+ /** 已选但当前未加载的主键。 */
116
+ missingKeys: ComputedRef<readonly Key[]>;
117
+ /** 替换全部选择主键。 */
118
+ setKeys: (rowKeys: readonly Key[]) => void;
119
+ /** 切换一个主键的选择状态。 */
120
+ toggleKey: (rowKey: Key, selected?: boolean) => void;
121
+ /** 选择当前页可选记录。 */
122
+ selectCurrentPage: () => void;
123
+ /** 选择运行时已经加载的全部可选记录。 */
124
+ selectLoadedRecords: () => void;
125
+ /** 清空选择。 */
126
+ clear: () => void;
127
+ }
128
+ /** columns 命名空间的只读状态与动作。 */
129
+ export interface TtVTableColumnsApi<Row extends Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
130
+ /** 当前生效的语义列树。 */
131
+ columns: ComputedRef<readonly TtVTableColumn<Row, Key>[]>;
132
+ /** 替换全部语义列。 */
133
+ replaceAll: (columns: readonly TtVTableColumn<Row, Key>[]) => void;
134
+ /** 显示指定列。 */
135
+ show: (columnKey: string) => void;
136
+ /** 隐藏指定列。 */
137
+ hide: (columnKey: string) => void;
138
+ /** 在同级列中移动指定列。 */
139
+ move: (columnKey: string, targetIndex: number) => void;
140
+ /** 恢复默认列偏好。 */
141
+ resetPreferences: () => Promise<void>;
142
+ }
143
+ /** editing 命名空间的只读状态与动作。 */
144
+ export interface TtVTableEditingApi<Key extends TtVTableRowKey = TtVTableRowKey> {
145
+ /** 当前编辑单元格。 */
146
+ activeCell: Readonly<Ref<Readonly<TtVTableEditingCell<Key>> | undefined>>;
147
+ /** 当前是否正在执行异步校验。 */
148
+ isValidating: Readonly<Ref<boolean>>;
149
+ /** 当前编辑校验错误。 */
150
+ validationError: Readonly<Ref<Error | undefined>>;
151
+ /** 开始编辑一个单元格。 */
152
+ start: (rowKey: Key, field: TtVTableFieldPath) => Promise<void>;
153
+ /** 校验并提交当前编辑。 */
154
+ commit: (value?: unknown) => Promise<boolean>;
155
+ /** 取消当前编辑。 */
156
+ cancel: () => void;
157
+ /** 仅校验当前编辑值。 */
158
+ validate: (value?: unknown) => Promise<boolean>;
159
+ }
160
+ /** tree 命名空间的只读状态与动作。 */
161
+ export interface TtVTableTreeApi<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
162
+ /** 当前展开节点主键。 */
163
+ expandedKeys: Readonly<Ref<readonly Key[]>>;
164
+ /** 当前正在加载子节点的主键。 */
165
+ loadingKeys: Readonly<Ref<readonly Key[]>>;
166
+ /** 展开一个节点。 */
167
+ expand: (rowKey: Key) => Promise<void>;
168
+ /** 收起一个节点。 */
169
+ collapse: (rowKey: Key) => void;
170
+ /** 切换一个节点的展开状态。 */
171
+ toggle: (rowKey: Key) => Promise<void>;
172
+ /** 获取或加载一个节点的子记录。 */
173
+ fetchChildren: (rowKey: Key) => Promise<readonly Row[]>;
174
+ }
175
+ /** layout 命名空间的只读状态与动作。 */
176
+ export interface TtVTableLayoutApi<Key extends TtVTableRowKey = TtVTableRowKey> {
177
+ /** 原生实例是否已经可用。 */
178
+ isReady: Readonly<Ref<boolean>>;
179
+ /** 当前可用容器宽度。 */
180
+ width: Readonly<Ref<number>>;
181
+ /** 当前可用容器高度。 */
182
+ height: Readonly<Ref<number>>;
183
+ /** 重新计算表格布局。 */
184
+ recalculate: () => void;
185
+ /** 滚动到指定记录。 */
186
+ scrollToRecord: (rowKey: Key) => void;
187
+ /** 滚动到指定记录和字段。 */
188
+ scrollToCell: (rowKey: Key, field: TtVTableFieldPath) => void;
189
+ }
190
+ /** native 命名空间的高级逃生口。 */
191
+ export interface TtVTableNativeApi {
192
+ /** 返回当前原生 ListTable,未就绪或释放后返回 undefined。 */
193
+ getInstance: () => ListTable | undefined;
194
+ }
195
+ /** TtVTable 稳定且按能力分组的公共 API。 */
196
+ export interface TtVTableApi<Row extends Record<string, unknown> = Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
197
+ /** 记录状态与增量动作。 */
198
+ records: TtVTableRecordsApi<Row, Key>;
199
+ /** 远程查询状态与动作。 */
200
+ query: TtVTableQueryApi;
201
+ /** 分页状态与动作。 */
202
+ pagination: TtVTablePaginationApi;
203
+ /** 单选、多选状态与动作。 */
204
+ selection: TtVTableSelectionApi<Row, Key>;
205
+ /** 列状态与偏好动作。 */
206
+ columns: TtVTableColumnsApi<Row, Key>;
207
+ /** 编辑状态与动作。 */
208
+ editing: TtVTableEditingApi<Key>;
209
+ /** 树节点状态与动作。 */
210
+ tree: TtVTableTreeApi<Row, Key>;
211
+ /** 视口布局状态与动作。 */
212
+ layout: TtVTableLayoutApi<Key>;
213
+ /** 原生实例逃生口。 */
214
+ native: TtVTableNativeApi;
215
+ }
@@ -0,0 +1,123 @@
1
+ import { ColumnDefine, ListTable } from '@visactor/vtable';
2
+ import { VNodeChild } from 'vue';
3
+ import { TtVTableApi, TtVTableFieldPath, TtVTableRowKey } from './table-api';
4
+ /** 需要由封装层控制的原生列字段。 */
5
+ type TtVTableReservedNativeColumnKey = "columns" | "field" | "key" | "title";
6
+ /** 对联合类型的每个成员分别移除字段。 */
7
+ type OmitUnion<Union, Key extends PropertyKey> = Union extends unknown ? Omit<Union, Extract<keyof Union, Key>> : never;
8
+ /** 允许业务透传的原生 VTable 列配置。 */
9
+ export type TtVTableNativeColumnOptions = OmitUnion<ColumnDefine, TtVTableReservedNativeColumnKey>;
10
+ /** 不依赖 VisActor 内部声明的单元格矩形。 */
11
+ export interface TtVTableCellRect {
12
+ /** 左边界。 */
13
+ left: number;
14
+ /** 右边界。 */
15
+ right: number;
16
+ /** 上边界。 */
17
+ top: number;
18
+ /** 下边界。 */
19
+ bottom: number;
20
+ /** 矩形宽度。 */
21
+ width: number;
22
+ /** 矩形高度。 */
23
+ height: number;
24
+ }
25
+ /** Vue 单元格额外暴露的原生坐标上下文。 */
26
+ export interface TtVTableNativeCellContext {
27
+ /** 原生列坐标。 */
28
+ col: number;
29
+ /** 原生行坐标。 */
30
+ row: number;
31
+ /** 当前原生表格实例。 */
32
+ table: ListTable;
33
+ /** 原生单元格矩形。 */
34
+ rect?: TtVTableCellRect;
35
+ }
36
+ /** Vue 正文 renderer 的标准上下文。 */
37
+ export interface TtVTableCellRenderContext<Row extends Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
38
+ /** 当前运行时记录。 */
39
+ record: Readonly<Row>;
40
+ /** 当前记录稳定主键。 */
41
+ rowKey: Key;
42
+ /** 当前显示顺序,只能用于展示。 */
43
+ rowIndex: number;
44
+ /** 当前语义列。 */
45
+ column: Readonly<TtVTableColumn<Row, Key>>;
46
+ /** 当前字段路径。 */
47
+ field?: TtVTableFieldPath;
48
+ /** 当前原始值。 */
49
+ value: unknown;
50
+ /** 当前表格稳定公共 API。 */
51
+ tableApi: TtVTableApi<Row, Key>;
52
+ /** 通过 records feature 精确修改当前单元格。 */
53
+ setCellValue: (value: unknown) => void;
54
+ /** 需要原生坐标时使用的高级上下文。 */
55
+ nativeContext: TtVTableNativeCellContext;
56
+ }
57
+ /** Vue 表头 renderer 的标准上下文。 */
58
+ export interface TtVTableHeaderRenderContext<Row extends Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
59
+ /** 当前语义列。 */
60
+ column: Readonly<TtVTableColumn<Row, Key>>;
61
+ /** 当前表格稳定公共 API。 */
62
+ tableApi: TtVTableApi<Row, Key>;
63
+ /** 需要原生坐标时使用的高级上下文。 */
64
+ nativeContext: TtVTableNativeCellContext;
65
+ }
66
+ /** 正文 Vue DOM renderer,可使用内联 JSX 回调或命名插槽。 */
67
+ export interface TtVTableVueRenderer<Row extends Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
68
+ /** 固定为 Vue DOM 渲染通道。 */
69
+ kind: "vue";
70
+ /** 内联 Vue render/JSX 回调。 */
71
+ render?: (context: TtVTableCellRenderContext<Row, Key>) => VNodeChild;
72
+ /** 命名插槽。 */
73
+ slot?: string;
74
+ /** 是否允许 DOM 接收鼠标和键盘交互。 */
75
+ interactive?: boolean;
76
+ /** 当前列建议保留的最大 DOM 缓存数。 */
77
+ maxCacheCount?: number;
78
+ }
79
+ /** 表头 Vue DOM renderer,可使用内联 JSX 回调或命名插槽。 */
80
+ export interface TtVTableVueHeaderRenderer<Row extends Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
81
+ /** 固定为 Vue DOM 渲染通道。 */
82
+ kind: "vue";
83
+ /** 内联 Vue render/JSX 回调。 */
84
+ render?: (context: TtVTableHeaderRenderContext<Row, Key>) => VNodeChild;
85
+ /** 命名插槽。 */
86
+ slot?: string;
87
+ /** 是否允许 DOM 接收鼠标和键盘交互。 */
88
+ interactive?: boolean;
89
+ /** 当前表头建议保留的最大 DOM 缓存数。 */
90
+ maxCacheCount?: number;
91
+ }
92
+ /** TtVTable 的语义列定义。 */
93
+ export interface TtVTableColumn<Row extends Record<string, unknown> = Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey> {
94
+ /** 整棵列树中唯一且稳定的语义键。 */
95
+ key: string;
96
+ /** 业务字段或嵌套字段路径。 */
97
+ field?: TtVTableFieldPath;
98
+ /** 默认 Canvas 表头文字。 */
99
+ title?: string;
100
+ /** 固定列宽。 */
101
+ width?: number | string;
102
+ /** 最小列宽。 */
103
+ minWidth?: number | string;
104
+ /** 最大列宽。 */
105
+ maxWidth?: number | string;
106
+ /** 正文对齐方式。 */
107
+ align?: "center" | "left" | "right";
108
+ /** 是否隐藏该列。 */
109
+ visible?: boolean;
110
+ /** 冻结列位置。 */
111
+ frozen?: boolean | "left" | "right";
112
+ /** 是否作为树结构展示列。 */
113
+ tree?: boolean;
114
+ /** 嵌套表头子列。 */
115
+ columns?: readonly TtVTableColumn<Row, Key>[];
116
+ /** 复杂正文启用的 Vue DOM renderer。 */
117
+ renderer?: TtVTableVueRenderer<Row, Key>;
118
+ /** 复杂表头启用的 Vue DOM renderer。 */
119
+ headerRenderer?: TtVTableVueHeaderRenderer<Row, Key>;
120
+ /** Canvas、VRender 和其他原生列能力的受控透传配置。 */
121
+ native?: TtVTableNativeColumnOptions;
122
+ }
123
+ export {};
@@ -0,0 +1,26 @@
1
+ /** TtVTable 可识别的语义错误码。 */
2
+ export type TtVTableErrorCode = "TT_VTABLE_SOURCE_CONFLICT" | "TT_VTABLE_ROW_KEY_REQUIRED" | "TT_VTABLE_ROW_KEY_INVALID" | "TT_VTABLE_DUPLICATE_ROW_KEY" | "TT_VTABLE_DUPLICATE_COLUMN_KEY" | "TT_VTABLE_CONTAINER_SIZE_INVALID" | "TT_VTABLE_RENDERER_INVALID" | "TT_VTABLE_SLOT_MISSING" | "TT_VTABLE_NATIVE_OPTION_RESERVED" | "TT_VTABLE_NATIVE_EVENT_RESERVED" | "TT_VTABLE_RECORD_NOT_FOUND" | "TT_VTABLE_NOT_READY" | "TT_VTABLE_CONTROLLER_BOUND" | "TT_VTABLE_RELEASED" | "TT_VTABLE_INIT_FAILED" | "TT_VTABLE_FETCH_FAILED" | "TT_VTABLE_TREE_FETCH_FAILED" | "TT_VTABLE_EDIT_VALIDATION_FAILED";
3
+ /** 错误附带的结构化上下文。 */
4
+ export type TtVTableErrorContext = Readonly<Record<string, unknown>>;
5
+ /** TtVTable 对外抛出的语义错误。 */
6
+ export declare class TtVTableError extends Error {
7
+ /** 稳定错误码。 */
8
+ readonly code: TtVTableErrorCode;
9
+ /** 帮助定位配置或运行状态的上下文。 */
10
+ readonly context: TtVTableErrorContext;
11
+ /**
12
+ * 创建一个带稳定错误码的表格错误。
13
+ * @param code 稳定错误码
14
+ * @param message 可读错误说明
15
+ * @param context 结构化上下文
16
+ */
17
+ constructor(code: TtVTableErrorCode, message: string, context?: TtVTableErrorContext);
18
+ }
19
+ /**
20
+ * 创建一个 TtVTable 语义错误。
21
+ * @param code 稳定错误码
22
+ * @param message 可读错误说明
23
+ * @param context 结构化上下文
24
+ * @returns 新建的语义错误
25
+ */
26
+ export declare function createTtVTableError(code: TtVTableErrorCode, message: string, context?: TtVTableErrorContext): TtVTableError;
@@ -0,0 +1,26 @@
1
+ var s = Object.defineProperty;
2
+ var a = (e, r, t) => r in e ? s(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
+ var o = (e, r, t) => a(e, typeof r != "symbol" ? r + "" : r, t);
4
+ class T extends Error {
5
+ /**
6
+ * 创建一个带稳定错误码的表格错误。
7
+ * @param code 稳定错误码
8
+ * @param message 可读错误说明
9
+ * @param context 结构化上下文
10
+ */
11
+ constructor(t, n, c = {}) {
12
+ super(`[${t}] ${n}`);
13
+ /** 稳定错误码。 */
14
+ o(this, "code");
15
+ /** 帮助定位配置或运行状态的上下文。 */
16
+ o(this, "context");
17
+ this.name = "TtVTableError", this.code = t, this.context = c;
18
+ }
19
+ }
20
+ function l(e, r, t = {}) {
21
+ return new T(e, r, t);
22
+ }
23
+ export {
24
+ T as TtVTableError,
25
+ l as createTtVTableError
26
+ };
@@ -0,0 +1,69 @@
1
+ import { TtVTableApi, TtVTableFieldPath, TtVTableRecordChange, TtVTableRowKey, TtVTableSortDescriptor } from './table-api';
2
+ import { TtVTableFetchRequest, TtVTableFetchResponse } from './table-props';
3
+ /** 分页变化来源。 */
4
+ export type TtVTablePageChangeReason = "page" | "page-size" | "reset";
5
+ /** 分页变化事件载荷。 */
6
+ export interface TtVTablePageChange {
7
+ /** 当前页码。 */
8
+ page: number;
9
+ /** 当前每页记录数。 */
10
+ pageSize: number;
11
+ /** 本次变化来源。 */
12
+ reason: TtVTablePageChangeReason;
13
+ }
14
+ /** 编辑提交事件载荷。 */
15
+ export interface TtVTableEditCommit<Key extends TtVTableRowKey = TtVTableRowKey> {
16
+ /** 业务记录主键。 */
17
+ rowKey: Key;
18
+ /** 修改字段路径。 */
19
+ field: TtVTableFieldPath;
20
+ /** 修改前的值。 */
21
+ previousValue: unknown;
22
+ /** 已提交值。 */
23
+ value: unknown;
24
+ /** 本次修改涉及的字段。 */
25
+ changedFields: readonly TtVTableFieldPath[];
26
+ /** 固定编辑来源。 */
27
+ source: "editing";
28
+ }
29
+ /** 树子节点加载成功事件载荷。 */
30
+ export interface TtVTableTreeLoadSuccess<Row, Key extends TtVTableRowKey = TtVTableRowKey> {
31
+ /** 父节点主键。 */
32
+ parentKey: Key;
33
+ /** 已写入运行时的子记录。 */
34
+ children: readonly Row[];
35
+ }
36
+ /** 树子节点加载失败事件载荷。 */
37
+ export interface TtVTableTreeLoadError<Key extends TtVTableRowKey = TtVTableRowKey> {
38
+ /** 父节点主键。 */
39
+ parentKey: Key;
40
+ /** 规范化后的请求错误。 */
41
+ error: Error;
42
+ }
43
+ /** TtVTable 允许公开的语义事件。 */
44
+ export interface TtVTableEmits<Row extends Record<string, unknown> = Record<string, unknown>, Key extends TtVTableRowKey = TtVTableRowKey, QueryParams extends Record<string, unknown> = Record<string, unknown>> {
45
+ /** 原生实例与全部 feature 已经就绪。 */
46
+ ready: [tableApi: TtVTableApi<Row, Key>];
47
+ /** records API 或 Vue renderer 提交了精确记录变化。 */
48
+ "record-change": [change: TtVTableRecordChange<Row, Key>];
49
+ /** 最新远程请求成功。 */
50
+ "fetch-success": [response: TtVTableFetchResponse<Row>, request: TtVTableFetchRequest<QueryParams>];
51
+ /** 最新远程请求失败。 */
52
+ "fetch-error": [error: Error, request: TtVTableFetchRequest<QueryParams>];
53
+ /** 分页状态发生语义变化。 */
54
+ "page-change": [change: TtVTablePageChange];
55
+ /** 排序状态发生语义变化。 */
56
+ "sort-change": [sort: readonly TtVTableSortDescriptor[]];
57
+ /** 筛选状态发生语义变化。 */
58
+ "filter-change": [filters: Readonly<Record<string, unknown>>];
59
+ /** 编辑器成功提交。 */
60
+ "edit-commit": [change: TtVTableEditCommit<Key>];
61
+ /** 编辑校验或提交失败。 */
62
+ "edit-error": [error: Error];
63
+ /** 树子节点成功写入。 */
64
+ "tree-load-success": [change: TtVTableTreeLoadSuccess<Row, Key>];
65
+ /** 树子节点加载失败。 */
66
+ "tree-load-error": [failure: TtVTableTreeLoadError<Key>];
67
+ /** 列偏好发生语义变化。 */
68
+ "column-preferences-change": [preferences: unknown];
69
+ }