@vue-ui-kit/ant 2.5.10 → 2.5.12-beta.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.
@@ -1,491 +1,516 @@
1
- import type { Rule } from 'ant-design-vue/lib/form';
2
- import { ButtonProps } from 'ant-design-vue/lib/button';
3
- import { ColProps } from 'ant-design-vue/lib/grid/Col';
4
- import { FormProps } from 'ant-design-vue/lib/form/Form';
5
- import { TableColumnType, TableProps, TooltipProps } from 'ant-design-vue';
6
- import type { ConfigType, Column as EVirtColumn } from 'e-virt-table';
7
- import EVirtTable from 'e-virt-table';
8
-
9
- export interface CellFuncArg<D extends Recordable = Recordable> {
10
- row: D;
11
- column?: ColumnProps<D>;
12
- rowIndex: number;
13
- cellValue: any;
14
- }
15
- export type FormatterFunc = (c: CellFuncArg, ...args: any[]) => any;
16
- export type PFormatter = Record<string, FormatterFunc>;
17
- export interface ItemFuncArg<F extends Recordable = Recordable> {
18
- data: F;
19
- field?: string;
20
- }
21
-
22
- export interface ItemRender {
23
- name: string;
24
- defaultValue?: any;
25
- props?: Recordable;
26
- attrs?: Recordable;
27
- options?: IOption[];
28
- children?: Recordable[];
29
- events?: { [key: string]: (...args: any[]) => any };
30
- }
31
-
32
- export interface CellRender {
33
- name: string;
34
- props?: Recordable;
35
- attrs?: Recordable;
36
- children?: Recordable[];
37
- }
38
-
39
- export interface Responsive {
40
- xxs?: number;
41
- xs?: number;
42
- sm?: number;
43
- md?: number;
44
- lg?: number;
45
- xl?: number;
46
- xxl?: number;
47
- }
48
-
49
- export interface TooltipConfig extends TooltipProps {
50
- title: TooltipProps['title'] | (() => any);
51
- }
52
-
53
- export interface PFormItemProps<F extends Recordable = Recordable> {
54
- field?: string;
55
- title?: string;
56
- span?: number;
57
- colon?: boolean;
58
- labelCol?: ColProps;
59
- wrapperCol?: ColProps;
60
- forceRequired?: boolean; // 在页面需要必填标示,但field不需要必填校验时使用
61
- align?: 'left' | 'right' | 'center';
62
- col?: ColProps;
63
- rule?: Rule[];
64
- itemRender?: ItemRender;
65
- tooltipConfig?: TooltipConfig;
66
- slots?: {
67
- title?: () => any;
68
- default?: (
69
- { data, field }: ItemFuncArg<F>,
70
- passTrigger?: (cusFields?: string | string[]) => void,
71
- passDelayTrigger?: (cusFields?: string | string[], time?: number) => void,
72
- ) => any;
73
- defaultValue?: any;
74
- };
75
- }
76
-
77
- export interface PFormProps<F extends Recordable = Recordable> extends FormProps {
78
- name?: string;
79
- items: PFormItemProps<F>[];
80
- customReset?: () => void;
81
- }
82
-
83
- export interface PDescriptionItemProps<D extends Recordable = Recordable> {
84
- field?: string;
85
- label?: string;
86
- span?: number;
87
- labelStyle?: Recordable;
88
- contentStyle?: Recordable;
89
- /** 只读展示渲染器,派发到 renderStore.renderDefault */
90
- readonlyRender?: ItemRender;
91
- slots?: {
92
- label?: () => any;
93
- default?: ({ data, field }: { data: D; field?: string }) => any;
94
- };
95
- }
96
-
97
- export interface PDescriptionProps<D extends Recordable = Recordable> {
98
- /** 数据源 */
99
- data: D;
100
- items: PDescriptionItemProps<D>[];
101
- /** 透传 a-descriptions */
102
- title?: string;
103
- extra?: string;
104
- bordered?: boolean;
105
- size?: 'default' | 'small' | 'middle';
106
- column?: number | Partial<Record<'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl', number>>;
107
- layout?: 'horizontal' | 'vertical';
108
- colon?: boolean;
109
- labelStyle?: Recordable;
110
- contentStyle?: Recordable;
111
- /** 缺省占位,row[field] 为空时展示 */
112
- emptyText?: string;
113
- }
114
-
115
- export interface PBlockProps<F extends Recordable = Recordable> {
116
- name?: string;
117
- getFormSetting: (data: Partial<F>) => PFormProps<Partial<F>>;
118
- source: Partial<F>;
119
- }
120
-
121
- export interface PromisePickerProps<
122
- D extends Recordable = Recordable,
123
- F extends Recordable = Recordable,
124
- > {
125
- gridSetting: PGridProps<D, F>;
126
- title?: string;
127
- width?: string | number;
128
- multipleAllowEmpty?: boolean;
129
- bodyStyle?: Recordable;
130
- beforePick?: (rowOrRows: D | Array<D>) => Promise<void>;
131
- }
132
-
133
- export type GroupMenuItemHandler<F extends Recordable = Recordable> = ({
134
- index,
135
- data,
136
- code,
137
- }: {
138
- index: number;
139
- code: string;
140
- data: Partial<F & { __index: number }>;
141
- }) => void;
142
-
143
- export interface GroupMenuItem<F extends Recordable = Recordable> {
144
- content: string;
145
- icon?: string;
146
- code: string;
147
- visibleMethod?: ({ data, index }: { data: Partial<F>; index: number }) => boolean;
148
- }
149
-
150
- export interface PFormGroupProps<F extends Recordable = Recordable> {
151
- name?: string;
152
- getFormSetting: (data: Partial<F>) => PFormProps<Partial<F>>;
153
- title?: string;
154
- tabLabel?: string;
155
- /**
156
- * 获取完整标签页标签
157
- * @param data 数据
158
- * @param idx 实际索引
159
- * @returns 标签页标签
160
- */
161
- getTabLabel?: (data: Partial<F>, idx: number) => string;
162
- editAble?: boolean;
163
- showAdd?: boolean;
164
- /* 是否启用折叠 */
165
- collapsible?: boolean;
166
- /** 是否默认折叠 */
167
- defaultCollapsed?: boolean;
168
- lazyErrorMark?: boolean;
169
- forceRender?: boolean;
170
- /* 是否保持连续编号 */
171
- keepSerial?: boolean;
172
- loading?: boolean;
173
- itemMenus?: Array<GroupMenuItem<F>>;
174
- createItem?: ({ list }: { list?: Partial<F>[] }) => Promise<Partial<F>>;
175
- max?: number;
176
- menuHandler?: GroupMenuItemHandler<F>;
177
- }
178
-
179
- export interface ColumnProps<D extends Recordable = Recordable> extends Omit<
180
- TableColumnType,
181
- 'slots'
182
- > {
183
- field?: string;
184
- children?: ColumnProps<D>[];
185
- formatter?:
186
- | string
187
- | [string, ...Array<any>]
188
- | ((arg: PartialByKeys<CellFuncArg<D>, 'cellValue'>) => any);
189
- slots?: {
190
- default?: ({ row, column, rowIndex }: PartialByKeys<CellFuncArg<D>, 'cellValue'>) => any;
191
- title?: ({ column }: { column: ColumnProps<D> }) => any;
192
- };
193
- cellRender?: CellRender;
194
- }
195
-
196
- export interface PButtonProps extends Omit<ButtonProps, 'type'> {
197
- content?: string | (() => any);
198
- icon?: string;
199
- /** 与 `a-button` 一致,便于模板类型检查 */
200
- type?: ButtonProps['type'];
201
- }
202
-
203
- export interface ToolbarButtonProps extends PButtonProps {
204
- code?: string;
205
- dropdowns?: ToolbarButtonProps[];
206
- }
207
- export interface ToolbarToolProps extends PButtonProps {
208
- code: string;
209
- }
210
- export interface ToolbarConfig {
211
- buttons?: Array<ToolbarButtonProps>;
212
- tools?: Array<ToolbarToolProps>;
213
- disabled?: boolean;
214
- }
215
-
216
- export interface ResponsePathConfig<D extends Recordable = Recordable> {
217
- /*非分页取值路径*/
218
- list?: string | ((res: Recordable) => D[]);
219
- /*分页取值路径*/
220
- result?: string | ((res: Recordable) => D[]);
221
- total?: string | ((res: Recordable) => D[]);
222
- /*提示信息取值路径*/
223
- message?:
224
- | string
225
- | ((res: Recordable) => string | { status: string; content: string; icon?: string });
226
- }
227
-
228
- export type HandlerMultiDel = (ids: Array<string | number>) => any;
229
-
230
- export interface AjaxConfig<F extends Recordable = Recordable> {
231
- query: (Q: { page?: IPage; form: Partial<F> }) => Promise<Recordable>;
232
- multiDelete?: HandlerMultiDel;
233
- }
234
-
235
- export interface ProxyConfig<D extends Recordable = Recordable, F extends Recordable = Recordable> {
236
- // 结果集 取值路径
237
- response?: ResponsePathConfig<D>;
238
- ajax: AjaxConfig<F>;
239
- }
240
-
241
- export interface PageConfig {
242
- pageSizes?: number[];
243
- pageSize?: number;
244
- showSizeChanger?: boolean;
245
- showQuickJumper?: boolean;
246
- }
247
-
248
- export interface SelectConfig<D extends Recordable = Recordable> {
249
- multiple?: boolean;
250
- showCount?: boolean;
251
- getCheckboxProps?: (record: D) => { disabled?: boolean };
252
- }
253
-
254
- export type PGridProps<D extends Recordable = Recordable, F extends Recordable = Recordable> = {
255
- selectConfig?: SelectConfig<D>;
256
- rowKey?: string;
257
- striped?: boolean;
258
- manualFetch?: boolean;
259
- align?: 'left' | 'right' | 'center';
260
- formConfig?: PFormProps<F>;
261
- columns?: ColumnProps<D>[];
262
- toolbarConfig?: ToolbarConfig;
263
- pageConfig?: PageConfig;
264
- proxyConfig?: ProxyConfig<D, F>;
265
- tableConfig?: TableProps<D>;
266
- scrollMode?: 'outer' | 'inner';
267
- /**
268
- * true 时根容器按视口从左上角铺满(与 v-rest 同源),用于外层未声明高度、靠内部撑开的布局。
269
- * 偏移见 `autoBoxSizeOffset`。
270
- */
271
- autoBoxSize?: boolean;
272
- /**
273
- * `autoBoxSize` 时距视口右侧/底部的预留像素;数字或 `"12px"` 同时作用于两侧;对象可分别指定 `right` / `bottom`。
274
- * 未传时使用 `setUIKitConfig({ grid: { autoBoxSizeOffset } })` 的全局值。
275
- */
276
- autoBoxSizeOffset?: number | string | { right?: number; bottom?: number };
277
- // 重置后不自动提交
278
- lazyReset?: boolean;
279
- /**
280
- * 表格纵向滚动区额外预留像素:在 `tableWrapper` 高度内扣减表头、底栏后,再从 body 可滚动高度中减去本值,避免末行与滚动条贴边或被裁切。可通过 `setUIKitConfig({ grid: { fitHeight } })` 或组件 `fitHeight` 按项目微调;库内全局默认见 `config`。
281
- */
282
- fitHeight?: number;
283
- /**
284
- * 适应展示区到页面顶部的canvas渲染高度 通常比table的小
285
- */
286
- fitCanvasHeight?: number;
287
- /**
288
- * 虚拟列表 Y区计算高度
289
- */
290
- renderY?: number;
291
- /**
292
- * 适应「外层高度由内容撑开」的布局(典型如弹窗 `PromisePicker`)。
293
- *
294
- * 开启后:
295
- * - 根容器/表体宿主不再 `flex:1` 强行撑满(避免父无固定高度时塌陷到 0);
296
- * - `a-table` 的纵向 `scroll.y` 作为「最多滚动到多少」的上限,由 `renderY` 显式指定;
297
- * 若不传 `renderY`,使用基于视口的默认值。内容少时不会出现行区域下方的大片空白。
298
- */
299
- fitContent?: boolean;
300
- };
301
-
302
- export interface RenderOptions {
303
- /**
304
- * 渲染器名称
305
- */
306
- name?: string;
307
- /**
308
- * 目标组件渲染的参数
309
- */
310
- props?: { [key: string]: any };
311
- /**
312
- * 目标组件渲染的属性
313
- */
314
- attrs?: { [key: string]: any };
315
- /**
316
- * 目标组件渲染的事件
317
- */
318
- events?: { [key: string]: (...args: any[]) => any };
319
- /**
320
- * 多目标渲染
321
- */
322
- children?: any[];
323
- /**
324
- * 选项
325
- */
326
- options?: IOption[];
327
- /**
328
- * 默认值
329
- */
330
- defaultValue?: any;
331
- /**
332
- * 校验触发器
333
- * @param cusFields field或者field数组
334
- */
335
- handleTrigger?: (cusFields?: string | string[]) => void;
336
- /**
337
- * 延迟校验触发器
338
- * @param cusFields field或者field数组
339
- * @param time 延迟时间
340
- */
341
- handleDelayTrigger?: (cusFields?: string | string[], time?: number) => void;
342
- }
343
-
344
- export interface RenderFormParams<F extends Recordable = Recordable> {
345
- data: F;
346
- field?: string;
347
- }
348
-
349
- export interface RenderReadonlyParams<D extends Recordable = Recordable> {
350
- data: D;
351
- field?: string;
352
- title?: string;
353
- }
354
-
355
- export interface RenderTableParams<D extends Recordable = Recordable> {
356
- data?: D[];
357
- row: D;
358
- rowIndex?: number;
359
- field?: string;
360
- title?: string;
361
- }
362
- export interface CanvasColumnProps<T extends Recordable = Recordable> extends Omit<
363
- EVirtColumn,
364
- 'children' | 'formatter' | 'key'
365
- > {
366
- key?: string;
367
- field?: string;
368
- children?: CanvasColumnProps<T>[];
369
- formatter?:
370
- | string
371
- | [string, ...Array<any>]
372
- | ((arg: PartialByKeys<CellFuncArg<T>, 'cellValue'>) => any);
373
- slots?: {
374
- default?: ({
375
- row,
376
- column,
377
- rowIndex,
378
- }: {
379
- row: T;
380
- column: CanvasColumnProps<T>;
381
- rowIndex: number;
382
- }) => any;
383
- edit?: ({
384
- row,
385
- column,
386
- rowIndex,
387
- }: {
388
- row: T;
389
- column: CanvasColumnProps<T>;
390
- rowIndex: number;
391
- }) => any;
392
- title?: ({ column }: { column: CanvasColumnProps<T> }) => any;
393
- };
394
- cellRender?: CellRender;
395
- editRender?: CellRender;
396
- }
397
- export interface CanvasTableProps<
398
- T extends Recordable = Recordable,
399
- B extends Recordable = Recordable,
400
- > {
401
- columns: CanvasColumnProps<T>[];
402
- data: T[];
403
- config?: ConfigType;
404
- footerData?: B[];
405
- loading?: boolean;
406
- }
407
-
408
- export interface PCanvasGridProps<
409
- D extends Recordable = Recordable,
410
- F extends Recordable = Recordable,
411
- > {
412
- staticConfig?: {
413
- selectable?: boolean;
414
- showCount?: boolean;
415
- tree?: boolean;
416
- };
417
- manualFetch?: boolean;
418
- formConfig?: PFormProps<F>;
419
- columns: CanvasColumnProps<D>[];
420
- toolbarConfig?: ToolbarConfig;
421
- pageConfig?: PageConfig;
422
- proxyConfig?: ProxyConfig<D, F>;
423
- config?: ConfigType;
424
- // 重置后不自动提交
425
- lazyReset?: boolean;
426
- /**
427
- * 适应展示区到页面顶部的高度,通常和容器最上的y值有关(正比)
428
- */
429
- fitHeight?: number;
430
- /**
431
- * 开启后组件根节点按视口从其左上角铺满宽高,与 PGrid 的 autoBoxSize 行为一致。
432
- * 外层未声明固定高度、需组件自身占满可视区域时使用。
433
- */
434
- autoBoxSize?: boolean;
435
- /**
436
- * `autoBoxSize` 时距视口右侧/底部的预留像素;数字或 `"12px"` 同时作用于两侧;对象可分别指定 `right` / `bottom`。
437
- * 未传时使用 `setUIKitConfig({ grid: { autoBoxSizeOffset } })` 的全局值。
438
- */
439
- autoBoxSizeOffset?: number | string | { right?: number; bottom?: number };
440
- }
441
- export interface PGridInstance<
442
- D extends Recordable = Recordable,
443
- F extends Recordable = Recordable,
444
- > {
445
- commitProxy: {
446
- query: () => Promise<D[]>;
447
- reload: () => Promise<D[]>;
448
- reloadPage: () => Promise<D[]>;
449
- passQuery: (query: Partial<F>, lazy?: boolean) => Promise<void | D[]>;
450
- forcePassQuery: (query: Partial<F>, lazy?: boolean) => Promise<void | D[]>;
451
- };
452
- selectedRowKeys: string[] | number[];
453
- selectedRecords: D[];
454
- $table: Recordable;
455
- $form: Recordable;
456
- getFormData: () => Partial<F>;
457
- setLoadings: (value: boolean) => void;
458
- setBtnLoading: (code: string, status: boolean) => void;
459
- resizeTable: () => void;
460
- }
461
-
462
- export interface PFormInstance {
463
- reset: () => void;
464
- $form: Recordable;
465
- }
466
-
467
- export interface PromisePickerInstance<D extends Recordable = Recordable> {
468
- pick: () => Promise<{ row: D; field?: string }>;
469
- pickMultiple: () => Promise<D[]>;
470
- grid: PGridInstance<D>;
471
- hide: () => void;
472
- }
473
-
474
- export interface PFormBlockInstance {
475
- $form: Recordable;
476
- }
477
-
478
- export interface PFormGroupInstance {
479
- activeKey: number;
480
- setActiveKey: (activeKey: number) => void;
481
- validateAll: () => Promise<void>;
482
- validate: (index: number, ignoreTabError?: boolean) => Promise<void>;
483
- validateFields: (index: number, fields: string[], ignoreTabError?: boolean) => Promise<void>;
484
- collapse: () => void;
485
- expand: () => void;
486
- }
487
- export interface PCanvasTableInstance<T extends Recordable = Recordable> {
488
- $table: InstanceType<typeof EVirtTable>;
489
- selectedRecords: T[];
490
- setLoading: (value: boolean) => void;
491
- }
1
+ import { TableColumnType, TableProps, TooltipProps } from 'ant-design-vue';
2
+ import { ButtonProps } from 'ant-design-vue/lib/button';
3
+ import type { Rule } from 'ant-design-vue/lib/form';
4
+ import { FormProps } from 'ant-design-vue/lib/form/Form';
5
+ import { ColProps } from 'ant-design-vue/lib/grid/Col';
6
+ import type { BorderConfigValue, ConfigType, Column as EVirtColumn } from 'e-virt-table';
7
+ import EVirtTable from 'e-virt-table';
8
+
9
+ export type { BorderConfigValue, BorderStyle } from 'e-virt-table';
10
+ /** 与 e-virt-table `scrollbarMode` 对齐:`outer` 外部预留,`inner` 内部悬停显示 */
11
+ export type ScrollbarMode = 'outer' | 'inner';
12
+
13
+ export interface CellFuncArg<D extends Recordable = Recordable> {
14
+ row: D;
15
+ column?: ColumnProps<D>;
16
+ rowIndex: number;
17
+ cellValue: any;
18
+ }
19
+ export type FormatterFunc = (c: CellFuncArg, ...args: any[]) => any;
20
+ export type PFormatter = Record<string, FormatterFunc>;
21
+ export interface ItemFuncArg<F extends Recordable = Recordable> {
22
+ data: F;
23
+ field?: string;
24
+ }
25
+
26
+ export interface ItemRender {
27
+ name: string;
28
+ defaultValue?: any;
29
+ props?: Recordable;
30
+ attrs?: Recordable;
31
+ options?: IOption[];
32
+ children?: Recordable[];
33
+ events?: { [key: string]: (...args: any[]) => any };
34
+ }
35
+
36
+ export interface CellRender {
37
+ name: string;
38
+ props?: Recordable;
39
+ attrs?: Recordable;
40
+ children?: Recordable[];
41
+ }
42
+
43
+ export interface Responsive {
44
+ xxs?: number;
45
+ xs?: number;
46
+ sm?: number;
47
+ md?: number;
48
+ lg?: number;
49
+ xl?: number;
50
+ xxl?: number;
51
+ }
52
+
53
+ export interface TooltipConfig extends TooltipProps {
54
+ title: TooltipProps['title'] | (() => any);
55
+ }
56
+
57
+ export interface PFormItemProps<F extends Recordable = Recordable> {
58
+ field?: string;
59
+ title?: string;
60
+ span?: number;
61
+ colon?: boolean;
62
+ labelCol?: ColProps;
63
+ wrapperCol?: ColProps;
64
+ forceRequired?: boolean; // 在页面需要必填标示,但field不需要必填校验时使用
65
+ align?: 'left' | 'right' | 'center';
66
+ col?: ColProps;
67
+ rule?: Rule[];
68
+ itemRender?: ItemRender;
69
+ tooltipConfig?: TooltipConfig;
70
+ slots?: {
71
+ title?: () => any;
72
+ default?: (
73
+ { data, field }: ItemFuncArg<F>,
74
+ passTrigger?: (cusFields?: string | string[]) => void,
75
+ passDelayTrigger?: (cusFields?: string | string[], time?: number) => void,
76
+ ) => any;
77
+ defaultValue?: any;
78
+ };
79
+ }
80
+
81
+ export interface PFormProps<F extends Recordable = Recordable> extends FormProps {
82
+ name?: string;
83
+ items: PFormItemProps<F>[];
84
+ customReset?: () => void;
85
+ }
86
+
87
+ export interface PDescriptionItemProps<D extends Recordable = Recordable> {
88
+ field?: string;
89
+ label?: string;
90
+ span?: number;
91
+ labelStyle?: Recordable;
92
+ contentStyle?: Recordable;
93
+ /** 只读展示渲染器,派发到 renderStore.renderDefault */
94
+ readonlyRender?: ItemRender;
95
+ slots?: {
96
+ label?: () => any;
97
+ default?: ({ data, field }: { data: D; field?: string }) => any;
98
+ };
99
+ }
100
+
101
+ export interface PDescriptionProps<D extends Recordable = Recordable> {
102
+ /** 数据源 */
103
+ data: D;
104
+ items: PDescriptionItemProps<D>[];
105
+ /** 透传 a-descriptions */
106
+ title?: string;
107
+ extra?: string;
108
+ bordered?: boolean;
109
+ size?: 'default' | 'small' | 'middle';
110
+ column?: number | Partial<Record<'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl', number>>;
111
+ layout?: 'horizontal' | 'vertical';
112
+ colon?: boolean;
113
+ labelStyle?: Recordable;
114
+ contentStyle?: Recordable;
115
+ /** 缺省占位,row[field] 为空时展示 */
116
+ emptyText?: string;
117
+ }
118
+
119
+ export interface PBlockProps<F extends Recordable = Recordable> {
120
+ name?: string;
121
+ getFormSetting: (data: Partial<F>) => PFormProps<Partial<F>>;
122
+ source: Partial<F>;
123
+ }
124
+
125
+ export interface PromisePickerProps<
126
+ D extends Recordable = Recordable,
127
+ F extends Recordable = Recordable,
128
+ > {
129
+ gridSetting: PGridProps<D, F>;
130
+ title?: string;
131
+ width?: string | number;
132
+ multipleAllowEmpty?: boolean;
133
+ bodyStyle?: Recordable;
134
+ beforePick?: (rowOrRows: D | Array<D>) => Promise<void>;
135
+ }
136
+
137
+ export type GroupMenuItemHandler<F extends Recordable = Recordable> = ({
138
+ index,
139
+ data,
140
+ code,
141
+ }: {
142
+ index: number;
143
+ code: string;
144
+ data: Partial<F & { __index: number }>;
145
+ }) => void;
146
+
147
+ export interface GroupMenuItem<F extends Recordable = Recordable> {
148
+ content: string;
149
+ icon?: string;
150
+ code: string;
151
+ visibleMethod?: ({ data, index }: { data: Partial<F>; index: number }) => boolean;
152
+ }
153
+
154
+ export interface PFormGroupProps<F extends Recordable = Recordable> {
155
+ name?: string;
156
+ getFormSetting: (data: Partial<F>) => PFormProps<Partial<F>>;
157
+ title?: string;
158
+ tabLabel?: string;
159
+ /**
160
+ * 获取完整标签页标签
161
+ * @param data 数据
162
+ * @param idx 实际索引
163
+ * @returns 标签页标签
164
+ */
165
+ getTabLabel?: (data: Partial<F>, idx: number) => string;
166
+ editAble?: boolean;
167
+ showAdd?: boolean;
168
+ /* 是否启用折叠 */
169
+ collapsible?: boolean;
170
+ /** 是否默认折叠 */
171
+ defaultCollapsed?: boolean;
172
+ lazyErrorMark?: boolean;
173
+ forceRender?: boolean;
174
+ /* 是否保持连续编号 */
175
+ keepSerial?: boolean;
176
+ loading?: boolean;
177
+ itemMenus?: Array<GroupMenuItem<F>>;
178
+ createItem?: ({ list }: { list?: Partial<F>[] }) => Promise<Partial<F>>;
179
+ max?: number;
180
+ menuHandler?: GroupMenuItemHandler<F>;
181
+ }
182
+
183
+ export interface ColumnProps<D extends Recordable = Recordable> extends Omit<
184
+ TableColumnType,
185
+ 'slots'
186
+ > {
187
+ field?: string;
188
+ children?: ColumnProps<D>[];
189
+ formatter?:
190
+ | string
191
+ | [string, ...Array<any>]
192
+ | ((arg: PartialByKeys<CellFuncArg<D>, 'cellValue'>) => any);
193
+ slots?: {
194
+ default?: ({ row, column, rowIndex }: PartialByKeys<CellFuncArg<D>, 'cellValue'>) => any;
195
+ title?: ({ column }: { column: ColumnProps<D> }) => any;
196
+ };
197
+ cellRender?: CellRender;
198
+ }
199
+
200
+ export interface PButtonProps extends Omit<ButtonProps, 'type'> {
201
+ content?: string | (() => any);
202
+ icon?: string;
203
+ /** `a-button` 一致,便于模板类型检查 */
204
+ type?: ButtonProps['type'];
205
+ }
206
+
207
+ export interface ToolbarButtonProps extends PButtonProps {
208
+ code?: string;
209
+ dropdowns?: ToolbarButtonProps[];
210
+ }
211
+ export interface ToolbarToolProps extends PButtonProps {
212
+ code: string;
213
+ }
214
+ export interface ToolbarConfig {
215
+ buttons?: Array<ToolbarButtonProps>;
216
+ tools?: Array<ToolbarToolProps>;
217
+ disabled?: boolean;
218
+ }
219
+
220
+ export interface ResponsePathConfig<D extends Recordable = Recordable> {
221
+ /*非分页取值路径*/
222
+ list?: string | ((res: Recordable) => D[]);
223
+ /*分页取值路径*/
224
+ result?: string | ((res: Recordable) => D[]);
225
+ total?: string | ((res: Recordable) => D[]);
226
+ /*提示信息取值路径*/
227
+ message?:
228
+ | string
229
+ | ((res: Recordable) => string | { status: string; content: string; icon?: string });
230
+ }
231
+
232
+ export type HandlerMultiDel = (ids: Array<string | number>) => any;
233
+
234
+ export interface AjaxConfig<F extends Recordable = Recordable> {
235
+ query: (Q: { page?: IPage; form: Partial<F> }) => Promise<Recordable>;
236
+ multiDelete?: HandlerMultiDel;
237
+ }
238
+
239
+ export interface ProxyConfig<D extends Recordable = Recordable, F extends Recordable = Recordable> {
240
+ // 结果集 取值路径
241
+ response?: ResponsePathConfig<D>;
242
+ ajax: AjaxConfig<F>;
243
+ }
244
+
245
+ export interface PageConfig {
246
+ pageSizes?: number[];
247
+ pageSize?: number;
248
+ showSizeChanger?: boolean;
249
+ showQuickJumper?: boolean;
250
+ }
251
+
252
+ export interface SelectConfig<D extends Recordable = Recordable> {
253
+ multiple?: boolean;
254
+ showCount?: boolean;
255
+ getCheckboxProps?: (record: D) => { disabled?: boolean };
256
+ }
257
+
258
+ export type PGridProps<D extends Recordable = Recordable, F extends Recordable = Recordable> = {
259
+ selectConfig?: SelectConfig<D>;
260
+ rowKey?: string;
261
+ striped?: boolean;
262
+ manualFetch?: boolean;
263
+ align?: 'left' | 'right' | 'center';
264
+ formConfig?: PFormProps<F>;
265
+ columns?: ColumnProps<D>[];
266
+ toolbarConfig?: ToolbarConfig;
267
+ pageConfig?: PageConfig;
268
+ proxyConfig?: ProxyConfig<D, F>;
269
+ tableConfig?: TableProps<D>;
270
+ scrollMode?: 'outer' | 'inner';
271
+ /**
272
+ * 为 true 时根容器按视口从左上角铺满(与 v-rest 同源),用于外层未声明高度、靠内部撑开的布局。
273
+ * 偏移见 `autoBoxSizeOffset`。
274
+ */
275
+ autoBoxSize?: boolean;
276
+ /**
277
+ * `autoBoxSize` 时距视口右侧/底部的预留像素;数字或 `"12px"` 同时作用于两侧;对象可分别指定 `right` / `bottom`。
278
+ * 未传时使用 `setUIKitConfig({ grid: { autoBoxSizeOffset } })` 的全局值。
279
+ */
280
+ autoBoxSizeOffset?: number | string | { right?: number; bottom?: number };
281
+ // 重置后不自动提交
282
+ lazyReset?: boolean;
283
+ /**
284
+ * 表格纵向滚动区额外预留像素:在 `tableWrapper` 高度内扣减表头、底栏后,再从 body 可滚动高度中减去本值,避免末行与滚动条贴边或被裁切。可通过 `setUIKitConfig({ grid: { fitHeight } })` 或组件 `fitHeight` 按项目微调;库内全局默认见 `config`。
285
+ */
286
+ fitHeight?: number;
287
+ /**
288
+ * 适应展示区到页面顶部的canvas渲染高度 通常比table的小
289
+ */
290
+ fitCanvasHeight?: number;
291
+ /**
292
+ * 虚拟列表 Y区计算高度
293
+ */
294
+ renderY?: number;
295
+ /**
296
+ * 适应「外层高度由内容撑开」的布局(典型如弹窗 `PromisePicker`)。
297
+ *
298
+ * 开启后:
299
+ * - 根容器/表体宿主不再 `flex:1` 强行撑满(避免父无固定高度时塌陷到 0);
300
+ * - `a-table` 的纵向 `scroll.y` 作为「最多滚动到多少」的上限,由 `renderY` 显式指定;
301
+ * 若不传 `renderY`,使用基于视口的默认值。内容少时不会出现行区域下方的大片空白。
302
+ */
303
+ fitContent?: boolean;
304
+ };
305
+
306
+ export interface RenderOptions {
307
+ /**
308
+ * 渲染器名称
309
+ */
310
+ name?: string;
311
+ /**
312
+ * 目标组件渲染的参数
313
+ */
314
+ props?: { [key: string]: any };
315
+ /**
316
+ * 目标组件渲染的属性
317
+ */
318
+ attrs?: { [key: string]: any };
319
+ /**
320
+ * 目标组件渲染的事件
321
+ */
322
+ events?: { [key: string]: (...args: any[]) => any };
323
+ /**
324
+ * 多目标渲染
325
+ */
326
+ children?: any[];
327
+ /**
328
+ * 选项
329
+ */
330
+ options?: IOption[];
331
+ /**
332
+ * 默认值
333
+ */
334
+ defaultValue?: any;
335
+ /**
336
+ * 校验触发器
337
+ * @param cusFields field或者field数组
338
+ */
339
+ handleTrigger?: (cusFields?: string | string[]) => void;
340
+ /**
341
+ * 延迟校验触发器
342
+ * @param cusFields field或者field数组
343
+ * @param time 延迟时间
344
+ */
345
+ handleDelayTrigger?: (cusFields?: string | string[], time?: number) => void;
346
+ }
347
+
348
+ export interface RenderFormParams<F extends Recordable = Recordable> {
349
+ data: F;
350
+ field?: string;
351
+ }
352
+
353
+ export interface RenderReadonlyParams<D extends Recordable = Recordable> {
354
+ data: D;
355
+ field?: string;
356
+ title?: string;
357
+ }
358
+
359
+ export interface RenderTableParams<D extends Recordable = Recordable> {
360
+ data?: D[];
361
+ row: D;
362
+ rowIndex?: number;
363
+ field?: string;
364
+ title?: string;
365
+ }
366
+ export interface CanvasColumnProps<T extends Recordable = Recordable> extends Omit<
367
+ EVirtColumn,
368
+ 'children' | 'formatter' | 'key'
369
+ > {
370
+ key?: string;
371
+ field?: string;
372
+ children?: CanvasColumnProps<T>[];
373
+ formatter?:
374
+ | string
375
+ | [string, ...Array<any>]
376
+ | ((arg: PartialByKeys<CellFuncArg<T>, 'cellValue'>) => any);
377
+ slots?: {
378
+ default?: ({
379
+ row,
380
+ column,
381
+ rowIndex,
382
+ }: {
383
+ row: T;
384
+ column: CanvasColumnProps<T>;
385
+ rowIndex: number;
386
+ }) => any;
387
+ edit?: ({
388
+ row,
389
+ column,
390
+ rowIndex,
391
+ }: {
392
+ row: T;
393
+ column: CanvasColumnProps<T>;
394
+ rowIndex: number;
395
+ }) => any;
396
+ title?: ({ column }: { column: CanvasColumnProps<T> }) => any;
397
+ };
398
+ cellRender?: CellRender;
399
+ editRender?: CellRender;
400
+ }
401
+ export interface CanvasTableProps<
402
+ T extends Recordable = Recordable,
403
+ B extends Recordable = Recordable,
404
+ > {
405
+ columns: CanvasColumnProps<T>[];
406
+ data: T[];
407
+ config?: ConfigType;
408
+ footerData?: B[];
409
+ loading?: boolean;
410
+ }
411
+
412
+ export interface PCanvasGridProps<
413
+ D extends Recordable = Recordable,
414
+ F extends Recordable = Recordable,
415
+ > {
416
+ staticConfig?: {
417
+ selectable?: boolean;
418
+ showCount?: boolean;
419
+ tree?: boolean;
420
+ };
421
+ manualFetch?: boolean;
422
+ formConfig?: PFormProps<F>;
423
+ columns: CanvasColumnProps<D>[];
424
+ toolbarConfig?: ToolbarConfig;
425
+ pageConfig?: PageConfig;
426
+ proxyConfig?: ProxyConfig<D, F>;
427
+ config?: ConfigType;
428
+ /**
429
+ * 表格边框样式,映射 e-virt-table `BORDER`。
430
+ * - `true` / `'default'`:完整单元格边框
431
+ * - `'outer'`:仅外边框
432
+ * - `'inner'` / `false`:仅内部横线
433
+ * - `'none'`:无边框
434
+ * 显式传入时优先于 `config.BORDER`。
435
+ */
436
+ border?: BorderConfigValue;
437
+ /**
438
+ * 滚动条模式,映射 e-virt-table `scrollbarMode`。
439
+ * - `'outer'`:外部预留滚动条轨道(默认)
440
+ * - `'inner'`:覆盖在内容上,悬停表格内部后显示
441
+ * 显式传入时优先于 `config.scrollbarMode`。
442
+ */
443
+ scrollbarMode?: ScrollbarMode;
444
+ /**
445
+ * 内部滚动条(`scrollbarMode: 'inner'`)悬停后显示延迟(ms),映射 `SCROLLBAR_SHOW_DELAY`。
446
+ * 显式传入时优先于 `config.SCROLLBAR_SHOW_DELAY`。
447
+ */
448
+ scrollbarShowDelay?: number;
449
+ // 重置后不自动提交
450
+ lazyReset?: boolean;
451
+ /**
452
+ * 适应展示区到页面顶部的高度,通常和容器最上的y值有关(正比)
453
+ */
454
+ fitHeight?: number;
455
+ /**
456
+ * 开启后组件根节点按视口从其左上角铺满宽高,与 PGrid 的 autoBoxSize 行为一致。
457
+ * 外层未声明固定高度、需组件自身占满可视区域时使用。
458
+ */
459
+ autoBoxSize?: boolean;
460
+ /**
461
+ * `autoBoxSize` 时距视口右侧/底部的预留像素;数字或 `"12px"` 同时作用于两侧;对象可分别指定 `right` / `bottom`。
462
+ * 未传时使用 `setUIKitConfig({ grid: { autoBoxSizeOffset } })` 的全局值。
463
+ */
464
+ autoBoxSizeOffset?: number | string | { right?: number; bottom?: number };
465
+ }
466
+ export interface PGridInstance<
467
+ D extends Recordable = Recordable,
468
+ F extends Recordable = Recordable,
469
+ > {
470
+ commitProxy: {
471
+ query: () => Promise<D[]>;
472
+ reload: () => Promise<D[]>;
473
+ reloadPage: () => Promise<D[]>;
474
+ passQuery: (query: Partial<F>, lazy?: boolean) => Promise<void | D[]>;
475
+ forcePassQuery: (query: Partial<F>, lazy?: boolean) => Promise<void | D[]>;
476
+ };
477
+ selectedRowKeys: string[] | number[];
478
+ selectedRecords: D[];
479
+ $table: Recordable;
480
+ $form: Recordable;
481
+ getFormData: () => Partial<F>;
482
+ setLoadings: (value: boolean) => void;
483
+ setBtnLoading: (code: string, status: boolean) => void;
484
+ resizeTable: () => void;
485
+ }
486
+
487
+ export interface PFormInstance {
488
+ reset: () => void;
489
+ $form: Recordable;
490
+ }
491
+
492
+ export interface PromisePickerInstance<D extends Recordable = Recordable> {
493
+ pick: () => Promise<{ row: D; field?: string }>;
494
+ pickMultiple: () => Promise<D[]>;
495
+ grid: PGridInstance<D>;
496
+ hide: () => void;
497
+ }
498
+
499
+ export interface PFormBlockInstance {
500
+ $form: Recordable;
501
+ }
502
+
503
+ export interface PFormGroupInstance {
504
+ activeKey: number;
505
+ setActiveKey: (activeKey: number) => void;
506
+ validateAll: () => Promise<void>;
507
+ validate: (index: number, ignoreTabError?: boolean) => Promise<void>;
508
+ validateFields: (index: number, fields: string[], ignoreTabError?: boolean) => Promise<void>;
509
+ collapse: () => void;
510
+ expand: () => void;
511
+ }
512
+ export interface PCanvasTableInstance<T extends Recordable = Recordable> {
513
+ $table: InstanceType<typeof EVirtTable>;
514
+ selectedRecords: T[];
515
+ setLoading: (value: boolean) => void;
516
+ }