UNPKG

10.2 kBTypeScriptView Raw
1import { CreateElement, VNode } from 'vue'
2import { VXETableComponent } from './component'
3import { ColumnFilterOption, ColumnFilterParams, ColumnFilterRenderOptions, ColumnFilterSlotParams, ColumnFilterMethodParams } from './filter'
4import { ColumnCellRenderParams, ColumnDefaultSlotParams, ColumnIconSlotParams, ColumnContentSlotParams, RenderOptions, OptionProps, OptionGroupProps } from './v-x-e-table'
5import { ColumnHeaderSlotParams, ColumnHeaderRenderParams } from './header'
6import { ColumnFooterSlotParams, ColumnFooterRenderParams } from './footer'
7import { ColumnEditRenderOptions, ColumnEditSlotParams } from './edit'
8import { ColumnExportCellRenderParams, ColumnExportFooterRenderParams } from './export'
9import { TableOverflow } from './table'
10
11/**
12 * 列
13 */
14export declare class Column extends VXETableComponent {
15 /**
16 * 渲染类型
17 */
18 type?: 'seq' | 'radio' | 'checkbox' | 'expand' | 'html';
19 /**
20 * 列字段名
21 */
22 field?: string;
23 /**
24 * 列标题
25 */
26 title?: string;
27 /**
28 * 列宽度
29 */
30 width?: number | string;
31 /**
32 * 列最小宽度,把剩余宽度按比例分配
33 */
34 minWidth?: number | string;
35 /**
36 * 是否允许拖动列宽调整大小
37 */
38 resizable?: boolean;
39 /**
40 * 将列固定在左侧或者右侧
41 */
42 fixed?: ColumnFixed;
43 /**
44 * 列对其方式
45 */
46 align?: ColumnAlign;
47 /**
48 * 表头对齐方式
49 */
50 headerAlign?: ColumnAlign;
51 /**
52 * 表尾列的对齐方式
53 */
54 footerAlign?: ColumnAlign;
55 /**
56 * 当内容过长时显示为省略号
57 */
58 showOverflow?: TableOverflow;
59 /**
60 * 当表头内容过长时显示为省略号
61 */
62 showHeaderOverflow?: TableOverflow;
63 /**
64 * 当表尾内容过长时显示为省略号
65 */
66 showFooterOverflow?: TableOverflow;
67 /**
68 * 给单元格附加 className
69 */
70 className?: string | ((params: ColumnCellRenderParams) => string | any[] | { [key: string]: boolean });
71 /**
72 * 给表头单元格附加 className
73 */
74 headerClassName?: string | ((params: ColumnHeaderRenderParams) => string | any[] | { [key: string]: boolean });
75 /**
76 * 给表尾单元格附加 className
77 */
78 footerClassName?: string | ((params: ColumnFooterRenderParams) => string | any[] | { [key: string]: boolean });
79 /**
80 * 格式化显示内容
81 */
82 formatter?: ((params: ColumnFormatterMethodParams) => string) | any[] | string;
83 /**
84 * 是否允许排序
85 */
86 sortable?: boolean;
87 /**
88 * 是否服务端排序
89 */
90 remoteSort?: boolean;
91 /**
92 * 自定义排序的属性
93 */
94 sortBy?: string | string[];
95 /**
96 * 自定义排序方法
97 */
98 sortMethod?(a: any, b: any): boolean;
99 /**
100 * 配置筛选条件数组
101 */
102 filters?: ColumnFilterOption[];
103 /**
104 * 筛选是否允许多选
105 */
106 filterMultiple?: boolean;
107 /**
108 * 自定义筛选方法
109 */
110 filterMethod?(params: ColumnFilterMethodParams): boolean;
111 /**
112 * 筛选模板配置项
113 */
114 filterRender?: ColumnFilterRenderOptions;
115 /**
116 * 指定为树节点
117 */
118 treeNode?: boolean;
119 /**
120 * 是否可视
121 */
122 visible?: boolean;
123 /**
124 * 自定义单元格数据导出方法
125 */
126 exportMethod?(params: ColumnExportCellRenderParams): string | number;
127 /**
128 * 自定义表尾单元格数据导出方法
129 */
130 footerExportMethod?(params: ColumnExportFooterRenderParams): string | number;
131 /**
132 * 单元格值类型
133 */
134 cellType?: string;
135 /**
136 * 单元格渲染配置项
137 */
138 cellRender?: ColumnCellRenderOptions;
139 /**
140 * 单元格编辑渲染配置项
141 */
142 editRender?: ColumnEditRenderOptions;
143 /**
144 * 内容渲染配置项
145 */
146 contentRender?: ColumnContentRenderOptions;
147 /**
148 * 额外的参数
149 */
150 params?: any;
151}
152
153export type ColumnAlign = 'left' | 'center' | 'right' | null
154export type ColumnFixed = 'left' | 'right' | null
155
156export interface ColumnOptions {
157 /**
158 * 渲染类型
159 */
160 type?: 'seq' | 'radio' | 'checkbox' | 'expand' | 'html';
161 /**
162 * 列字段名
163 */
164 field?: string;
165 /**
166 * 列标题
167 */
168 title?: string;
169 /**
170 * 列宽度
171 */
172 width?: number | string;
173 /**
174 * 列最小宽度,把剩余宽度按比例分配
175 */
176 minWidth?: number | string;
177 /**
178 * 是否允许拖动列宽调整大小
179 */
180 resizable?: boolean;
181 /**
182 * 将列固定在左侧或者右侧
183 */
184 fixed?: ColumnFixed;
185 /**
186 * 列对其方式
187 */
188 align?: ColumnAlign;
189 /**
190 * 表头对齐方式
191 */
192 headerAlign?: ColumnAlign;
193 /**
194 * 表尾列的对齐方式
195 */
196 footerAlign?: ColumnAlign;
197 /**
198 * 当内容过长时显示为省略号
199 */
200 showOverflow?: boolean | string;
201 /**
202 * 当表头内容过长时显示为省略号
203 */
204 showHeaderOverflow?: boolean | string;
205 /**
206 * 当表尾内容过长时显示为省略号
207 */
208 showFooterOverflow?: boolean | string;
209 /**
210 * 给单元格附加 className
211 */
212 className?: string | ((params: ColumnCellRenderParams) => string | any[] | { [key: string]: boolean });
213 /**
214 * 给表头单元格附加 className
215 */
216 headerClassName?: string | ((params: ColumnHeaderRenderParams) => string | any[] | { [key: string]: boolean });
217 /**
218 * 给表尾单元格附加 className
219 */
220 footerClassName?: string | ((params: ColumnFooterRenderParams) => string | any[] | { [key: string]: boolean });
221 /**
222 * 格式化显示内容
223 */
224 formatter?: ((params: ColumnFormatterMethodParams) => string) | any[] | string;
225 /**
226 * 是否允许排序
227 */
228 sortable?: boolean;
229 /**
230 * 是否服务端排序
231 */
232 remoteSort?: boolean;
233 /**
234 * 自定义排序的属性
235 */
236 sortBy?: string | string[];
237 /**
238 * 自定义排序方法
239 */
240 sortMethod?(a: any, b: any): boolean;
241 /**
242 * 配置筛选条件数组
243 */
244 filters?: ColumnFilterOption[];
245 /**
246 * 筛选是否允许多选
247 */
248 filterMultiple?: boolean;
249 /**
250 * 自定义筛选方法
251 */
252 filterMethod?(params: ColumnFilterMethodParams): boolean;
253 /**
254 * 筛选模板配置项
255 */
256 filterRender?: ColumnFilterRenderOptions;
257 /**
258 * 指定为树节点
259 */
260 treeNode?: boolean;
261 /**
262 * 是否可视
263 */
264 visible?: boolean;
265 /**
266 * 自定义单元格数据导出方法
267 */
268 exportMethod?(params: ColumnExportCellRenderParams): string | number;
269 /**
270 * 自定义表尾单元格数据导出方法
271 */
272 footerExportMethod?(params: ColumnExportFooterRenderParams): string | number;
273 /**
274 * 单元格值类型
275 */
276 cellType?: string;
277 /**
278 * 单元格渲染配置项
279 */
280 cellRender?: ColumnCellRenderOptions;
281 /**
282 * 单元格编辑渲染配置项
283 */
284 editRender?: ColumnEditRenderOptions;
285 /**
286 * 内容渲染配置项
287 */
288 contentRender?: ColumnContentRenderOptions;
289 /**
290 * 额外的参数
291 */
292 params?: any;
293
294 slots?: {
295 default?(params: ColumnDefaultSlotParams, h: CreateElement): VNode[] | string[];
296 header?(params: ColumnHeaderSlotParams, h: CreateElement): VNode[] | string[];
297 footer?(params: ColumnFooterSlotParams, h: CreateElement): VNode[] | string[];
298 content?(params: ColumnContentSlotParams, h: CreateElement): VNode[] | string[];
299 filter?(params: ColumnFilterSlotParams, h: CreateElement): VNode[] | string[];
300 edit?(params: ColumnEditSlotParams, h: CreateElement): VNode[] | string[];
301 icon?(params: ColumnIconSlotParams, h: CreateElement): VNode[] | string[];
302 };
303}
304
305/**
306 * 列对象
307 */
308export class ColumnInfo {
309 title: string;
310 width: number | string;
311 minWidth: number | string;
312 resizable: boolean;
313 fixed: string;
314 align: ColumnAlign;
315 headerAlign: ColumnAlign;
316 footerAlign: ColumnAlign;
317 property: string;
318 type: string;
319 sortable: boolean;
320 treeNode: boolean;
321 filters: ColumnFilterParams[];
322 filterRender: ColumnFilterRenderOptions;
323 cellType: string;
324 cellRender: ColumnCellRenderOptions;
325 editRender: ColumnEditRenderOptions;
326 contentRender: ColumnContentRenderOptions;
327
328 id: string;
329 parentId: string;
330 level: number;
331 rowSpan: number;
332 colSpan: number;
333 visible: boolean;
334 halfVisible: boolean;
335 defaultVisible: any;
336 checked: boolean;
337 halfChecked: boolean;
338 disabled: boolean;
339 order: string;
340 renderWidth: number;
341 renderHeight: number;
342 resizeWidth: number;
343 model: {
344 update: boolean;
345 value: any;
346 };
347 children: ColumnInfo[];
348
349 getTitle(): string;
350 [key: string]: any;
351}
352
353export class ColumnConfig extends ColumnInfo {}
354
355/**
356 * 默认的渲染配置项
357 */
358export interface ColumnCellRenderOptions extends RenderOptions {
359 /**
360 * 下拉选项列表(需要渲染器支持)
361 */
362 options?: { [key: string]: any }[];
363 /**
364 * 下拉选项属性参数配置(需要渲染器支持)
365 */
366 optionProps?: OptionProps;
367 /**
368 * 下拉分组选项列表(需要渲染器支持)
369 */
370 optionGroups?: { [key: string]: any }[];
371 /**
372 * 下拉分组选项属性参数配置(需要渲染器支持)
373 */
374 optionGroupProps?: OptionGroupProps;
375 /**
376 * 渲染组件的内容(需要渲染器支持)
377 */
378 content?: string;
379}
380
381/**
382 * 内容渲染配置项
383 */
384export interface ColumnContentRenderOptions extends RenderOptions {
385 /**
386 * 下拉选项列表(需要渲染器支持)
387 */
388 options?: { [key: string]: any }[];
389 /**
390 * 下拉选项属性参数配置(需要渲染器支持)
391 */
392 optionProps?: OptionProps;
393 /**
394 * 下拉分组选项列表(需要渲染器支持)
395 */
396 optionGroups?: { [key: string]: any }[];
397 /**
398 * 下拉分组选项属性参数配置(需要渲染器支持)
399 */
400 optionGroupProps?: OptionGroupProps;
401}
402
403/**
404 * 格式化方法参数
405 */
406export interface ColumnFormatterMethodParams {
407 /**
408 * 单元格值
409 */
410 cellValue: any;
411 /**
412 * 列对象
413 */
414 column: ColumnInfo;
415 /**
416 * 行数据对象
417 */
418 row: any;
419}
420
\No newline at end of file