UNPKG

5.92 kBTypeScriptView Raw
1import { CreateElement, VNode } from 'vue'
2import { RowInfo } from '../component'
3import { Table } from '../table'
4import { Grid } from '../grid'
5import { ColumnInfo, ColumnCellRenderOptions, ColumnContentRenderOptions } from '../column'
6import { ColumnExportCellRenderParams, ColumnExportFooterRenderParams } from '../export'
7import { ColumnEditRenderOptions, ColumnEditRenderParams } from '../edit'
8import { ColumnFooterRenderParams } from '../footer'
9import { ColumnFilterRenderOptions, ColumnFilterRenderParams, ColumnFilterMethodParams, ColumnFilterResetParams } from '../filter'
10import { ToolbarButtonRenderOptions, ToolbarButtonRenderParams, ToolbarToolRenderOptions, ToolbarToolRenderParams } from '../toolbar'
11import { FormItemRenderOptions, FormItemRenderParams, FormItemVisibleParams, FormItemResetParams } from '../form-item'
12
13/**
14 * 渲染器
15 */
16export interface VxeGlobalRenderer {
17 mixin(map: { [name: string]: RendererMapOptions }): VxeGlobalRenderer;
18 get(name: string): RendererMapOptions;
19 add(name: string, options: RendererMapOptions): VxeGlobalRenderer;
20 delete(name: string): VxeGlobalRenderer;
21}
22
23export interface RendererMapOptions {
24 // 筛选渲染
25 className?: string;
26 isFooter?: boolean;
27 renderFilter?(h: CreateElement, renderOpts: ColumnFilterRenderOptions, params: ColumnFilterRenderParams): VNode[] | string[];
28 filterMethod?(params: ColumnFilterMethodParams): boolean;
29 filterResetMethod?(params: ColumnFilterResetParams): void;
30 // 默认行为
31 defaultFilterMethod?(params: ColumnFilterMethodParams): boolean;
32
33 // 单元格渲染
34 renderHeader?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): VNode[] | string[];
35 renderDefault?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): VNode[] | string[];
36 renderFooter?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnFooterRenderParams): VNode[] | string[];
37 exportMethod?(params: ColumnExportCellRenderParams): string;
38 footerExportMethod?(params: ColumnExportFooterRenderParams): string;
39
40 // 编辑渲染
41 autofocus?: string;
42 renderEdit?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): VNode[] | string[];
43 renderCell?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): VNode[] | string[];
44
45 // 内容渲染
46 renderExpand?(h: CreateElement, renderOpts: ColumnContentRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): VNode[] | string[];
47
48 // 工具栏-按钮渲染
49 renderToolbarButton?(h: CreateElement, renderOpts: ToolbarButtonRenderOptions, params: ToolbarButtonRenderParams): VNode[] | string[];
50 renderToolbarTool?(h: CreateElement, renderOpts: ToolbarToolRenderOptions, params: ToolbarToolRenderParams): VNode[] | string[];
51
52 // 表单-项渲染
53 renderItemTitle?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): VNode[] | string[];
54 renderItemContent?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): VNode[] | string[];
55 itemVisibleMethod?(params: FormItemVisibleParams): boolean;
56 itemResetMethod?(params: FormItemResetParams): void;
57
58 // 空内容渲染
59 renderEmpty?(h: CreateElement, renderOpts: TableEmptyRender, params: EmptyRenderParams): VNode[] | string[];
60
61 [key: string]: any;
62}
63
64/**
65 * 渲染选项
66 */
67export class RenderOptions {
68 /**
69 * 渲染器名称
70 */
71 name?: string;
72 /**
73 * 目标组件渲染的参数
74 */
75 props?: { [key: string]: any };
76 /**
77 * 目标组件渲染的属性
78 */
79 attrs?: { [key: string]: any };
80 /**
81 * 目标组件渲染的事件
82 */
83 events?: { [key: string]: Function };
84 /**
85 * 目标组件渲染的原生事件
86 */
87 nativeEvents?: { [key: string]: Function };
88 [key: string]: any;
89}
90
91/**
92 * 渲染参数
93 */
94export class RenderParams {}
95
96/**
97 * 选项参数
98 */
99export interface OptionProps extends RenderParams {
100 value?: string;
101 label?: string;
102 [key: string]: any;
103}
104
105/**
106 * 分组选项参数
107 */
108export interface OptionGroupProps extends RenderParams {
109 options?: string;
110 label?: string;
111 [key: string]: any;
112}
113
114/**
115 * 单元格渲染参数
116 */
117export interface ColumnCellRenderParams extends TableRenderParams {
118 /**
119 * 列对象
120 */
121 column: ColumnInfo;
122 /**
123 * 相对于 columns 中的索引
124 */
125 columnIndex: number;
126 /**
127 * 相对于可视区渲染中的列索引
128 */
129 $columnIndex: number;
130 /**
131 * 行数据对象
132 */
133 row: RowInfo;
134 /**
135 * 相对于 data 中的索引
136 */
137 rowIndex: number;
138 /**
139 * 相对于当前表格数据的索引
140 */
141 $rowIndex: number;
142 isHidden: boolean;
143 fixed: string;
144 type: string;
145}
146
147/**
148 * 空内容渲染配置项
149 */
150export class TableEmptyRender extends RenderOptions { }
151
152export class TableRenderParams extends RenderParams {
153 /**
154 * 表格实例对象
155 */
156 $table: Table;
157}
158
159export class GridRenderParams extends TableRenderParams {
160 /**
161 * 高级表格实例对象
162 */
163 $grid: Grid;
164}
165
166export class EmptyRenderParams extends TableRenderParams { }
167
168export interface ColumnDefaultSlotParams extends ColumnCellRenderParams { }
169export interface ColumnContentSlotParams extends ColumnContentRenderParams { }
170export interface ColumnIconSlotParams extends ColumnIconRenderParams { }
171
172export interface ColumnContentRenderParams extends ColumnCellRenderParams { }
173export interface ColumnIconRenderParams extends ColumnCellRenderParams { }