x-next 1.11.1 → 1.13.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 (116) hide show
  1. package/AI_USAGE/catalog.md +1 -1
  2. package/AI_USAGE/components/alert.md +1 -1
  3. package/AI_USAGE/components/bar-chart.md +1 -1
  4. package/AI_USAGE/components/button.md +1 -1
  5. package/AI_USAGE/components/checkbox.md +1 -1
  6. package/AI_USAGE/components/color-picker.md +1 -1
  7. package/AI_USAGE/components/config-provider.md +1 -1
  8. package/AI_USAGE/components/date-picker.md +1 -1
  9. package/AI_USAGE/components/dialog.md +1 -1
  10. package/AI_USAGE/components/dropdown.md +1 -1
  11. package/AI_USAGE/components/empty.md +1 -1
  12. package/AI_USAGE/components/input.md +1 -1
  13. package/AI_USAGE/components/line-chart.md +1 -1
  14. package/AI_USAGE/components/message-box.md +1 -1
  15. package/AI_USAGE/components/message.md +1 -1
  16. package/AI_USAGE/components/notification.md +1 -1
  17. package/AI_USAGE/components/pagination.md +7 -3
  18. package/AI_USAGE/components/pie-chart.md +1 -1
  19. package/AI_USAGE/components/popconfirm.md +1 -1
  20. package/AI_USAGE/components/popover.md +1 -1
  21. package/AI_USAGE/components/progress.md +1 -1
  22. package/AI_USAGE/components/radio.md +1 -1
  23. package/AI_USAGE/components/rate.md +1 -1
  24. package/AI_USAGE/components/select.md +1 -1
  25. package/AI_USAGE/components/slider.md +1 -1
  26. package/AI_USAGE/components/steps.md +1 -1
  27. package/AI_USAGE/components/switch.md +1 -1
  28. package/AI_USAGE/components/tabs.md +1 -1
  29. package/AI_USAGE/components/textarea.md +1 -1
  30. package/AI_USAGE/components/time-picker.md +1 -1
  31. package/AI_USAGE/components/upload.md +1 -1
  32. package/AI_USAGE/core.md +1 -1
  33. package/AI_USAGE/index.md +1 -1
  34. package/AI_USAGE/recipes/form-on-demand.md +1 -1
  35. package/AI_USAGE.md +8 -4
  36. package/CHANGELOG.md +40 -0
  37. package/dist/components/network/Network.vue.d.ts +8 -4
  38. package/dist/components/network/index.d.ts +13 -5
  39. package/dist/components/network/props.d.ts +5 -0
  40. package/dist/components/network/utils.d.ts +3 -3
  41. package/dist/components/pagination/page-item-ellipsis.vue.d.ts +4 -1
  42. package/dist/components/pagination/page-item-step.vue.d.ts +101 -130
  43. package/dist/components/pagination/page-item.vue.d.ts +1 -0
  44. package/dist/components/pagination/page-jumper.vue.d.ts +1 -1
  45. package/dist/components/pagination/page-options.vue.d.ts +6 -4
  46. package/dist/components/pagination/utils.d.ts +3 -0
  47. package/dist/components/table/Table.d.ts +11 -0
  48. package/dist/components/table/context.d.ts +5 -0
  49. package/dist/components/table/dom-listeners.d.ts +23 -0
  50. package/dist/components/table/hooks/use-column-resize.d.ts +2 -1
  51. package/dist/components/table/hooks/use-drag.d.ts +6 -3
  52. package/dist/components/table/hooks/use-keyboard-navigation.d.ts +27 -0
  53. package/dist/components/table/hooks/use-sorter.d.ts +3 -1
  54. package/dist/components/table/index.d.ts +15 -0
  55. package/dist/components/table/interface.d.ts +9 -2
  56. package/dist/components/table/locale.d.ts +8 -7
  57. package/dist/components/table/table-operation-td.d.ts +34 -0
  58. package/dist/components/table/table-td.d.ts +36 -2
  59. package/dist/components/table/table-th.d.ts +34 -0
  60. package/dist/components/table/table-tr.d.ts +34 -0
  61. package/dist/components/time-range-selector/index.d.ts +6 -6
  62. package/dist/components/trend-chart/components/TrendChart.d.ts +1 -1
  63. package/dist/components/trend-chart/index.d.ts +3 -3
  64. package/dist/components/upload/Upload.d.ts +1 -1
  65. package/dist/components/upload/index.d.ts +3 -3
  66. package/dist/es/_styles/palette-aliases.js +4 -4
  67. package/dist/es/components/button/Button.js +53 -42
  68. package/dist/es/components/network/Network.vue.js +17 -12
  69. package/dist/es/components/network/Network.vue2.js +78 -70
  70. package/dist/es/components/network/utils.js +112 -71
  71. package/dist/es/components/pagination/Pagination.js +132 -123
  72. package/dist/es/components/pagination/page-item-ellipsis.vue.js +10 -10
  73. package/dist/es/components/pagination/page-item-ellipsis.vue2.js +24 -19
  74. package/dist/es/components/pagination/page-item-step.vue.js +14 -11
  75. package/dist/es/components/pagination/page-item-step.vue2.js +20 -22
  76. package/dist/es/components/pagination/page-item.vue.js +10 -9
  77. package/dist/es/components/pagination/page-item.vue2.js +24 -19
  78. package/dist/es/components/pagination/page-jumper.vue2.js +23 -23
  79. package/dist/es/components/pagination/page-options.vue.js +15 -10
  80. package/dist/es/components/pagination/page-options.vue2.js +21 -17
  81. package/dist/es/components/pagination/utils.js +4 -2
  82. package/dist/es/components/table/Table.js +947 -713
  83. package/dist/es/components/table/dom-listeners.js +23 -0
  84. package/dist/es/components/table/hooks/use-column-resize.js +27 -18
  85. package/dist/es/components/table/hooks/use-column-sorter.js +22 -29
  86. package/dist/es/components/table/hooks/use-drag.js +23 -20
  87. package/dist/es/components/table/hooks/use-filter.js +43 -43
  88. package/dist/es/components/table/hooks/use-keyboard-navigation.js +69 -0
  89. package/dist/es/components/table/hooks/use-row-selection.js +33 -29
  90. package/dist/es/components/table/hooks/use-sorter.js +86 -38
  91. package/dist/es/components/table/hooks/use-span.js +28 -35
  92. package/dist/es/components/table/locale.js +27 -10
  93. package/dist/es/components/table/table-col-group.vue2.js +9 -9
  94. package/dist/es/components/table/table-operation-td.js +72 -51
  95. package/dist/es/components/table/table-operation-th.js +41 -34
  96. package/dist/es/components/table/table-td.js +100 -77
  97. package/dist/es/components/table/table-th.js +221 -188
  98. package/dist/es/components/table/table-tr.js +11 -8
  99. package/dist/es/components/table/utils.js +104 -94
  100. package/dist/es/components/virtual-list-v2/hooks/use-size.js +47 -41
  101. package/dist/es/components/virtual-list-v2/virtual-list-item.js +29 -16
  102. package/dist/es/locale/en-US.js +9 -1
  103. package/dist/es/locale/index.js +3 -3
  104. package/dist/es/locale/zh-CN.js +9 -1
  105. package/dist/es/style.css +1 -1
  106. package/dist/index.cjs +3 -3
  107. package/dist/index.umd.js +3 -3
  108. package/dist/locale/interface.d.ts +12 -0
  109. package/dist/style/base.css +1 -1
  110. package/dist/style/button.css +1 -1
  111. package/dist/style/form-select.css +1 -1
  112. package/dist/style/network.css +1 -1
  113. package/dist/style/pagination.css +1 -1
  114. package/dist/style/table.css +1 -1
  115. package/dist/style.css +1 -1
  116. package/package.json +1 -1
@@ -61,11 +61,103 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
61
61
  disabled: boolean;
62
62
  simple: boolean;
63
63
  }, {}, {
64
- IconLeft: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
65
- fillColor: {
66
- type: ArrayConstructor;
67
- default: undefined;
68
- };
64
+ XIcon: {
65
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
66
+ name: {
67
+ type: StringConstructor;
68
+ default: undefined;
69
+ };
70
+ size: {
71
+ type: (StringConstructor | NumberConstructor)[];
72
+ default: undefined;
73
+ };
74
+ rotate: {
75
+ type: NumberConstructor;
76
+ default: undefined;
77
+ };
78
+ spin: {
79
+ type: BooleanConstructor;
80
+ default: boolean;
81
+ };
82
+ color: {
83
+ type: StringConstructor;
84
+ default: undefined;
85
+ };
86
+ title: {
87
+ type: StringConstructor;
88
+ default: undefined;
89
+ };
90
+ ariaLabel: {
91
+ type: StringConstructor;
92
+ default: undefined;
93
+ };
94
+ strokeWidth: {
95
+ type: (StringConstructor | NumberConstructor)[];
96
+ default: undefined;
97
+ };
98
+ }>> & Readonly<{}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
99
+ name: string;
100
+ title: string;
101
+ size: string | number;
102
+ rotate: number;
103
+ spin: boolean;
104
+ color: string;
105
+ ariaLabel: string;
106
+ strokeWidth: string | number;
107
+ }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
108
+ P: {};
109
+ B: {};
110
+ D: {};
111
+ C: {};
112
+ M: {};
113
+ Defaults: {};
114
+ }, Readonly<import('vue').ExtractPropTypes<{
115
+ name: {
116
+ type: StringConstructor;
117
+ default: undefined;
118
+ };
119
+ size: {
120
+ type: (StringConstructor | NumberConstructor)[];
121
+ default: undefined;
122
+ };
123
+ rotate: {
124
+ type: NumberConstructor;
125
+ default: undefined;
126
+ };
127
+ spin: {
128
+ type: BooleanConstructor;
129
+ default: boolean;
130
+ };
131
+ color: {
132
+ type: StringConstructor;
133
+ default: undefined;
134
+ };
135
+ title: {
136
+ type: StringConstructor;
137
+ default: undefined;
138
+ };
139
+ ariaLabel: {
140
+ type: StringConstructor;
141
+ default: undefined;
142
+ };
143
+ strokeWidth: {
144
+ type: (StringConstructor | NumberConstructor)[];
145
+ default: undefined;
146
+ };
147
+ }>> & Readonly<{}>, () => VNode, {}, {}, {}, {
148
+ name: string;
149
+ title: string;
150
+ size: string | number;
151
+ rotate: number;
152
+ spin: boolean;
153
+ color: string;
154
+ ariaLabel: string;
155
+ strokeWidth: string | number;
156
+ }>;
157
+ __isFragment?: never;
158
+ __isTeleport?: never;
159
+ __isSuspense?: never;
160
+ } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
69
161
  name: {
70
162
  type: StringConstructor;
71
163
  default: undefined;
@@ -98,44 +190,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
98
190
  type: (StringConstructor | NumberConstructor)[];
99
191
  default: undefined;
100
192
  };
101
- }>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
102
- fillColor: {
103
- type: ArrayConstructor;
104
- default: undefined;
105
- };
106
- name: {
107
- type: StringConstructor;
108
- default: undefined;
109
- };
110
- size: {
111
- type: (StringConstructor | NumberConstructor)[];
112
- default: undefined;
113
- };
114
- rotate: {
115
- type: NumberConstructor;
116
- default: undefined;
117
- };
118
- spin: {
119
- type: BooleanConstructor;
120
- default: boolean;
121
- };
122
- color: {
123
- type: StringConstructor;
124
- default: undefined;
125
- };
126
- title: {
127
- type: StringConstructor;
128
- default: undefined;
129
- };
130
- ariaLabel: {
131
- type: StringConstructor;
132
- default: undefined;
133
- };
134
- strokeWidth: {
135
- type: (StringConstructor | NumberConstructor)[];
136
- default: undefined;
137
- };
138
- }>> & Readonly<{}>, {
193
+ }>> & Readonly<{}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
139
194
  name: string;
140
195
  title: string;
141
196
  size: string | number;
@@ -144,92 +199,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
144
199
  color: string;
145
200
  ariaLabel: string;
146
201
  strokeWidth: string | number;
147
- fillColor: unknown[];
148
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
149
- IconRight: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
150
- fillColor: {
151
- type: ArrayConstructor;
152
- default: undefined;
153
- };
154
- name: {
155
- type: StringConstructor;
156
- default: undefined;
157
- };
158
- size: {
159
- type: (StringConstructor | NumberConstructor)[];
160
- default: undefined;
161
- };
162
- rotate: {
163
- type: NumberConstructor;
164
- default: undefined;
165
- };
166
- spin: {
167
- type: BooleanConstructor;
168
- default: boolean;
169
- };
170
- color: {
171
- type: StringConstructor;
172
- default: undefined;
173
- };
174
- title: {
175
- type: StringConstructor;
176
- default: undefined;
177
- };
178
- ariaLabel: {
179
- type: StringConstructor;
180
- default: undefined;
181
- };
182
- strokeWidth: {
183
- type: (StringConstructor | NumberConstructor)[];
184
- default: undefined;
185
- };
186
- }>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
187
- fillColor: {
188
- type: ArrayConstructor;
189
- default: undefined;
190
- };
191
- name: {
192
- type: StringConstructor;
193
- default: undefined;
194
- };
195
- size: {
196
- type: (StringConstructor | NumberConstructor)[];
197
- default: undefined;
198
- };
199
- rotate: {
200
- type: NumberConstructor;
201
- default: undefined;
202
- };
203
- spin: {
204
- type: BooleanConstructor;
205
- default: boolean;
206
- };
207
- color: {
208
- type: StringConstructor;
209
- default: undefined;
210
- };
211
- title: {
212
- type: StringConstructor;
213
- default: undefined;
214
- };
215
- ariaLabel: {
216
- type: StringConstructor;
217
- default: undefined;
218
- };
219
- strokeWidth: {
220
- type: (StringConstructor | NumberConstructor)[];
221
- default: undefined;
222
- };
223
- }>> & Readonly<{}>, {
224
- name: string;
225
- title: string;
226
- size: string | number;
227
- rotate: number;
228
- spin: boolean;
229
- color: string;
230
- ariaLabel: string;
231
- strokeWidth: string | number;
232
- fillColor: unknown[];
233
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
202
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
203
+ install(app: import('vue').App): void;
204
+ };
234
205
  }, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
235
206
  export default _default;
@@ -17,6 +17,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
17
17
  type: PropType<CSSProperties>;
18
18
  };
19
19
  }>, {
20
+ pageLabel: import('vue').ComputedRef<string>;
20
21
  className: {
21
22
  block: string;
22
23
  element: (className: string) => string;
@@ -39,7 +39,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
39
39
  })[]>;
40
40
  inputValue: import('vue').Ref<number | undefined, number | undefined>;
41
41
  handleChange: (value: number | undefined) => void;
42
- handleFormatter: (value: number) => string | undefined;
42
+ handleFormatter: (value: string) => string | undefined;
43
43
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
44
44
  current: {
45
45
  type: NumberConstructor;
@@ -1,8 +1,9 @@
1
1
  import { PropType } from 'vue';
2
+ import { SelectProps } from '../form-select';
2
3
  import { Size } from '../../_utils/constant.ts';
3
4
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
5
  sizeOptions: {
5
- type: ArrayConstructor;
6
+ type: PropType<number[]>;
6
7
  required: true;
7
8
  };
8
9
  pageSize: NumberConstructor;
@@ -14,9 +15,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
14
15
  type: PropType<(value: number) => void>;
15
16
  };
16
17
  selectProps: {
17
- type: ObjectConstructor;
18
+ type: PropType<SelectProps>;
18
19
  };
19
20
  }>, {
21
+ pageSizeLabel: import('vue').ComputedRef<string>;
20
22
  className: {
21
23
  block: string;
22
24
  element: (className: string) => string;
@@ -30,7 +32,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
30
32
  handleChange: (value: string | undefined | number | boolean | Record<string, unknown> | (string | number | boolean | Record<string, unknown>)[]) => void;
31
33
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "change"[], "change", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
32
34
  sizeOptions: {
33
- type: ArrayConstructor;
35
+ type: PropType<number[]>;
34
36
  required: true;
35
37
  };
36
38
  pageSize: NumberConstructor;
@@ -42,7 +44,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
42
44
  type: PropType<(value: number) => void>;
43
45
  };
44
46
  selectProps: {
45
- type: ObjectConstructor;
47
+ type: PropType<SelectProps>;
46
48
  };
47
49
  }>> & Readonly<{
48
50
  onChange?: ((...args: any[]) => any) | undefined;
@@ -1,3 +1,6 @@
1
+ export declare const isValidPageSize: (value: unknown) => value is number;
2
+ /** 保证循环边界可推进;显示配置额外限流,避免异常参数创建海量 DOM。 */
3
+ export declare const normalizeInteger: (value: number, fallback: number, min: number, max: number) => number;
1
4
  export declare const getLegalPage: (page: number, { min, max }: {
2
5
  min: number;
3
6
  max: number;
@@ -14,6 +14,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
14
14
  type: PropType<TableColumnData[]>;
15
15
  default: () => never[];
16
16
  };
17
+ /** @zh 启用表体单元格方向键、Home / End 导航,保留原生 table 语义。 */
18
+ keyboardNavigation: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
17
22
  /**
18
23
  * @zh 表格的数据
19
24
  * @en Table data
@@ -560,6 +565,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
560
565
  type: PropType<TableColumnData[]>;
561
566
  default: () => never[];
562
567
  };
568
+ /** @zh 启用表体单元格方向键、Home / End 导航,保留原生 table 语义。 */
569
+ keyboardNavigation: {
570
+ type: BooleanConstructor;
571
+ default: boolean;
572
+ };
563
573
  /**
564
574
  * @zh 表格的数据
565
575
  * @en Table data
@@ -911,6 +921,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
911
921
  defaultExpandAllRows: boolean;
912
922
  filterIconAlignLeft: boolean;
913
923
  indentSize: number;
924
+ keyboardNavigation: boolean;
914
925
  stripe: boolean;
915
926
  tableLayoutFixed: boolean;
916
927
  pagePosition: "top" | "tl" | "tr" | "bottom" | "bl" | "br";
@@ -4,14 +4,18 @@ import { Filters, Sorter, TableColumnData, TableData, TableDataWithRaw } from '.
4
4
  export interface TableContext {
5
5
  loadMore?: (record: TableData, done: (children?: TableData[]) => void) => void;
6
6
  addLazyLoadData: (children: TableData[] | undefined, record: TableDataWithRaw) => void;
7
+ loadChildren: (record: TableDataWithRaw) => Promise<TableData[] | undefined>;
7
8
  slots: Slots;
8
9
  sorter: Sorter | undefined;
10
+ sorters: Sorter[];
9
11
  currentAllEnabledRowKeys: BaseType[];
10
12
  currentSelectedRowKeys: BaseType[];
13
+ expandedRowKeys: BaseType[];
11
14
  checkStrictly: boolean;
12
15
  filters: Filters;
13
16
  filterIconAlignLeft: boolean;
14
17
  resizingColumn: string;
18
+ selectionName: string;
15
19
  addColumn: (id: number, column: TableColumnData) => void;
16
20
  removeColumn: (id: number) => void;
17
21
  onSelectAll: (checked: boolean) => void;
@@ -20,6 +24,7 @@ export interface TableContext {
20
24
  onSorterChange: (dataIndex: string, direction: 'ascend' | 'descend' | '', ev: Event) => void;
21
25
  onFilterChange: (dataIndex: string, filteredValues: string[], ev: Event) => void;
22
26
  onThMouseDown: (dataIndex: string, ev: MouseEvent) => void;
27
+ onThKeyDown: (dataIndex: string, ev: KeyboardEvent) => void;
23
28
  }
24
29
  export interface TableColumnContext {
25
30
  addChild: (id: number, column: TableColumnData) => void;
@@ -0,0 +1,23 @@
1
+ import { PropType } from 'vue';
2
+ export declare const tableDomListeners: {
3
+ tabindex: (StringConstructor | NumberConstructor)[];
4
+ onClick: PropType<(event: MouseEvent) => void>;
5
+ onDblclick: PropType<(event: MouseEvent) => void>;
6
+ onContextmenu: PropType<(event: MouseEvent) => void>;
7
+ onMouseenter: PropType<(event: MouseEvent) => void>;
8
+ onMouseleave: PropType<(event: MouseEvent) => void>;
9
+ onDragstart: PropType<(event: DragEvent) => void>;
10
+ onDragend: PropType<(event: DragEvent) => void>;
11
+ onDragenter: PropType<(event: DragEvent) => void>;
12
+ onDragover: PropType<(event: DragEvent) => void>;
13
+ onDrop: PropType<(event: DragEvent) => void>;
14
+ onKeydown: PropType<(event: KeyboardEvent) => void>;
15
+ onFocus: PropType<(event: FocusEvent) => void>;
16
+ onPointerdown: PropType<(event: PointerEvent) => void>;
17
+ onPointermove: PropType<(event: PointerEvent) => void>;
18
+ onPointerup: PropType<(event: PointerEvent) => void>;
19
+ onPointercancel: PropType<(event: PointerEvent) => void>;
20
+ };
21
+ export declare const getTableDomListeners: (props: Record<string, unknown>) => {
22
+ [k: string]: unknown;
23
+ };
@@ -2,9 +2,10 @@ import { Ref } from 'vue';
2
2
  import { EmitFn2 } from '../../../_hooks/_types';
3
3
  export declare const useColumnResize: (thRefs: Ref<Record<string, HTMLElement>>, emit: EmitFn2<{
4
4
  columnResize: (dataIndex: string, width: number) => true;
5
- }>) => {
5
+ }>, getMinWidth?: (dataIndex: string) => number) => {
6
6
  resizingColumn: Ref<string, string>;
7
7
  columnWidth: Record<string, number>;
8
8
  handleThMouseDown: (dataIndex: string, ev: MouseEvent) => void;
9
9
  handleThMouseUp: () => void;
10
+ handleThKeyDown: (dataIndex: string, ev: KeyboardEvent) => void;
10
11
  };
@@ -1,17 +1,20 @@
1
1
  import { Ref } from 'vue';
2
2
  import { TableDraggable } from '../interface';
3
+ import { BaseType } from '../../../_hooks/_types';
3
4
  export declare const useDrag: (draggable: Ref<TableDraggable | undefined>) => {
5
+ beginDrag: (sourceKey: BaseType, sourcePath: number[], data: Record<string, unknown>) => void;
6
+ clearDragState: () => void;
4
7
  dragType: import('vue').ComputedRef<"row" | "handle" | undefined>;
5
8
  dragState: {
6
9
  dragging: boolean;
7
- sourceKey: string;
10
+ sourceKey: BaseType;
8
11
  sourcePath: number[];
9
12
  targetPath: number[];
10
13
  data: Record<string, unknown>;
11
14
  };
12
- handleDragStart: (ev: DragEvent, sourceKey: string, sourcePath: number[], data: Record<string, unknown>) => void;
15
+ handleDragStart: (ev: DragEvent, sourceKey: BaseType, sourcePath: number[], data: Record<string, unknown>) => void;
13
16
  handleDragEnter: (ev: DragEvent, targetPath: number[]) => void;
14
17
  handleDragover: (ev: DragEvent) => void;
15
- handleDragEnd: (ev: DragEvent) => void;
18
+ handleDragEnd: (_ev: DragEvent) => void;
16
19
  handleDrop: (ev: DragEvent) => void;
17
20
  };
@@ -0,0 +1,27 @@
1
+ import { Ref } from 'vue';
2
+ import { BaseType } from '../../../_hooks/_types';
3
+ import { TableDataWithRaw } from '../interface';
4
+ type Row = {
5
+ record: TableDataWithRaw;
6
+ detail?: boolean;
7
+ };
8
+ /** Optional navigation of native table cells. Embedded controls keep their own keys. */
9
+ export declare const useKeyboardNavigation: ({ enabled, rows, root, scrollToRow, mountedKeys, }: {
10
+ enabled: Ref<boolean>;
11
+ rows: Ref<Row[]>;
12
+ root: Ref<HTMLElement | undefined>;
13
+ scrollToRow: (index: number) => void;
14
+ mountedKeys?: Ref<BaseType[] | undefined>;
15
+ }) => {
16
+ getCellProps: (key: BaseType, column: number, firstColumn: number) => {
17
+ 'data-x-table-cell-index'?: undefined;
18
+ tabindex?: undefined;
19
+ onFocus?: undefined;
20
+ } | {
21
+ 'data-x-table-cell-index': number;
22
+ tabindex: number;
23
+ onFocus: (ev: FocusEvent) => void;
24
+ };
25
+ handleCellKeydown: (key: BaseType, column: number, ev: KeyboardEvent) => Promise<void>;
26
+ };
27
+ export {};
@@ -11,7 +11,9 @@ export declare const useSorter: ({ columns, onSorterChange, }: {
11
11
  field: string;
12
12
  direction: "ascend" | "descend";
13
13
  } | undefined>;
14
- computedSorter: import('vue').ComputedRef<Sorter | undefined>;
14
+ computedSorter: import('vue').ComputedRef<Sorter>;
15
+ computedSorters: import('vue').ComputedRef<Sorter[]>;
16
+ setSorter: (field: string, direction: "ascend" | "descend" | "") => void;
15
17
  resetSorters: () => void;
16
18
  clearSorters: () => void;
17
19
  };
@@ -26,6 +26,10 @@ export declare const Table: {
26
26
  type: import('vue').PropType<import('./interface').TableColumnData[]>;
27
27
  default: () => never[];
28
28
  };
29
+ keyboardNavigation: {
30
+ type: BooleanConstructor;
31
+ default: boolean;
32
+ };
29
33
  data: {
30
34
  type: import('vue').PropType<import('./interface').TableData[]>;
31
35
  default: () => never[];
@@ -256,6 +260,7 @@ export declare const Table: {
256
260
  defaultExpandAllRows: boolean;
257
261
  filterIconAlignLeft: boolean;
258
262
  indentSize: number;
263
+ keyboardNavigation: boolean;
259
264
  stripe: boolean;
260
265
  tableLayoutFixed: boolean;
261
266
  pagePosition: "top" | "tl" | "tr" | "bottom" | "bl" | "br";
@@ -278,6 +283,10 @@ export declare const Table: {
278
283
  type: import('vue').PropType<import('./interface').TableColumnData[]>;
279
284
  default: () => never[];
280
285
  };
286
+ keyboardNavigation: {
287
+ type: BooleanConstructor;
288
+ default: boolean;
289
+ };
281
290
  data: {
282
291
  type: import('vue').PropType<import('./interface').TableData[]>;
283
292
  default: () => never[];
@@ -485,6 +494,7 @@ export declare const Table: {
485
494
  defaultExpandAllRows: boolean;
486
495
  filterIconAlignLeft: boolean;
487
496
  indentSize: number;
497
+ keyboardNavigation: boolean;
488
498
  stripe: boolean;
489
499
  tableLayoutFixed: boolean;
490
500
  pagePosition: "top" | "tl" | "tr" | "bottom" | "bl" | "br";
@@ -504,6 +514,10 @@ export declare const Table: {
504
514
  type: import('vue').PropType<import('./interface').TableColumnData[]>;
505
515
  default: () => never[];
506
516
  };
517
+ keyboardNavigation: {
518
+ type: BooleanConstructor;
519
+ default: boolean;
520
+ };
507
521
  data: {
508
522
  type: import('vue').PropType<import('./interface').TableData[]>;
509
523
  default: () => never[];
@@ -734,6 +748,7 @@ export declare const Table: {
734
748
  defaultExpandAllRows: boolean;
735
749
  filterIconAlignLeft: boolean;
736
750
  indentSize: number;
751
+ keyboardNavigation: boolean;
737
752
  stripe: boolean;
738
753
  tableLayoutFixed: boolean;
739
754
  pagePosition: "top" | "tl" | "tr" | "bottom" | "bl" | "br";
@@ -8,7 +8,7 @@ export interface TableData {
8
8
  * @zh 数据行的key
9
9
  * @en The key of the data row
10
10
  */
11
- key?: string;
11
+ key?: string | number;
12
12
  /**
13
13
  * @zh 扩展行内容
14
14
  * @en Expand row content
@@ -34,7 +34,7 @@ export interface TableData {
34
34
  }
35
35
  export interface TableDataWithRaw {
36
36
  raw: TableData;
37
- key: string;
37
+ key: string | number;
38
38
  disabled?: boolean;
39
39
  expand?: string | RenderFunction;
40
40
  children?: TableDataWithRaw[];
@@ -65,6 +65,11 @@ export interface TableSortable {
65
65
  * @en Default sort direction (uncontrolled mode)
66
66
  */
67
67
  defaultSortOrder?: 'ascend' | 'descend' | '';
68
+ /**
69
+ * @zh 多列排序优先级,数字越大越先比较;只在声明优先级的列之间保留多列排序。
70
+ * @en Multi-column sort priority. Higher values are compared first.
71
+ */
72
+ sortPriority?: number;
68
73
  }
69
74
  export interface TableFilterData {
70
75
  /**
@@ -440,6 +445,8 @@ export interface TableChangeExtra {
440
445
  * @en Sort information
441
446
  */
442
447
  sorter?: Sorter;
448
+ /** 按优先级排列的全部排序条件;sorter 保留首个条件以兼容已有消费方。 */
449
+ sorters?: Sorter[];
443
450
  /**
444
451
  * @zh 筛选信息
445
452
  * @en Filter information
@@ -1,10 +1,4 @@
1
- /**
2
- * Table 的内置文案。
3
- *
4
- * 默认值与历史行为保持一致(中文),可被上层注入覆盖。
5
- * ConfigProvider / locale 落地后,这里将改为从 locale 读取;
6
- * 当前先集中到一处,避免文案散落在组件实现里。
7
- */
1
+ /** Table 内置文案;ConfigProvider 与全局 locale 均可响应式覆盖。 */
8
2
  export interface TableLocale {
9
3
  /** 筛选弹层「重置」按钮 */
10
4
  resetText: string;
@@ -16,8 +10,15 @@ export interface TableLocale {
16
10
  filterLabelText: string;
17
11
  /** 总结行的默认标题 */
18
12
  summaryText: string;
13
+ expandRowText?: string;
14
+ collapseRowText?: string;
15
+ selectRowText?: string;
16
+ selectAllText?: string;
17
+ resizeColumnText?: string;
18
+ moveRowText?: string;
19
19
  }
20
20
  export declare const TABLE_LOCALE_ZH_CN: TableLocale;
21
21
  export declare const TABLE_LOCALE_EN_US: TableLocale;
22
22
  /** 按 {key} 占位符插值 */
23
23
  export declare const formatLocaleText: (template: string, params?: Record<string, string | number>) => string;
24
+ export declare const useTableLocale: () => (key: keyof TableLocale, params?: Record<string, string | number>) => string;
@@ -36,6 +36,23 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
36
36
  type: BooleanConstructor;
37
37
  default: boolean;
38
38
  };
39
+ tabindex: (StringConstructor | NumberConstructor)[];
40
+ onClick: PropType<(event: MouseEvent) => void>;
41
+ onDblclick: PropType<(event: MouseEvent) => void>;
42
+ onContextmenu: PropType<(event: MouseEvent) => void>;
43
+ onMouseenter: PropType<(event: MouseEvent) => void>;
44
+ onMouseleave: PropType<(event: MouseEvent) => void>;
45
+ onDragstart: PropType<(event: DragEvent) => void>;
46
+ onDragend: PropType<(event: DragEvent) => void>;
47
+ onDragenter: PropType<(event: DragEvent) => void>;
48
+ onDragover: PropType<(event: DragEvent) => void>;
49
+ onDrop: PropType<(event: DragEvent) => void>;
50
+ onKeydown: PropType<(event: KeyboardEvent) => void>;
51
+ onFocus: PropType<(event: FocusEvent) => void>;
52
+ onPointerdown: PropType<(event: PointerEvent) => void>;
53
+ onPointermove: PropType<(event: PointerEvent) => void>;
54
+ onPointerup: PropType<(event: PointerEvent) => void>;
55
+ onPointercancel: PropType<(event: PointerEvent) => void>;
39
56
  }>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "select"[], "select", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
40
57
  operationColumn: {
41
58
  type: PropType<TableOperationColumn>;
@@ -71,6 +88,23 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
71
88
  type: BooleanConstructor;
72
89
  default: boolean;
73
90
  };
91
+ tabindex: (StringConstructor | NumberConstructor)[];
92
+ onClick: PropType<(event: MouseEvent) => void>;
93
+ onDblclick: PropType<(event: MouseEvent) => void>;
94
+ onContextmenu: PropType<(event: MouseEvent) => void>;
95
+ onMouseenter: PropType<(event: MouseEvent) => void>;
96
+ onMouseleave: PropType<(event: MouseEvent) => void>;
97
+ onDragstart: PropType<(event: DragEvent) => void>;
98
+ onDragend: PropType<(event: DragEvent) => void>;
99
+ onDragenter: PropType<(event: DragEvent) => void>;
100
+ onDragover: PropType<(event: DragEvent) => void>;
101
+ onDrop: PropType<(event: DragEvent) => void>;
102
+ onKeydown: PropType<(event: KeyboardEvent) => void>;
103
+ onFocus: PropType<(event: FocusEvent) => void>;
104
+ onPointerdown: PropType<(event: PointerEvent) => void>;
105
+ onPointermove: PropType<(event: PointerEvent) => void>;
106
+ onPointerup: PropType<(event: PointerEvent) => void>;
107
+ onPointercancel: PropType<(event: PointerEvent) => void>;
74
108
  }>> & Readonly<{
75
109
  onSelect?: ((...args: any[]) => any) | undefined;
76
110
  }>, {