vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
193 lines (171 loc) • 6.91 kB
TypeScript
import { CreateElement } from 'vue'
import { SlotVNodeType, RowInfo, VNodeStyle, VNodeClassName } from '../component'
import { Table } from '../table'
import { Grid } from '../grid'
import { ColumnInfo, ColumnCellRenderOptions, ColumnContentRenderOptions } from '../column'
import { ColumnExportCellRenderParams, ColumnExportFooterRenderParams } from '../export'
import { ColumnEditRenderOptions, ColumnEditRenderParams } from '../edit'
import { ColumnFooterRenderParams } from '../footer'
import { ColumnFilterRenderOptions, ColumnFilterRenderParams, ColumnFilterMethodParams, ColumnFilterResetParams } from '../filter'
import { ToolbarButtonRenderOptions, ToolbarButtonRenderParams, ToolbarToolRenderOptions, ToolbarToolRenderParams } from '../toolbar'
import { FormItemRenderOptions, FormItemRenderParams, FormItemVisibleParams, FormItemResetParams } from '../form-item'
/**
* 渲染器
*/
export interface VxeGlobalRenderer {
mixin(map: { [name: string]: RendererMapOptions }): VxeGlobalRenderer;
get(name: string): RendererMapOptions;
add(name: string, options: RendererMapOptions): VxeGlobalRenderer;
delete(name: string): VxeGlobalRenderer;
}
export interface RendererMapOptions {
/**
* 请使用 filterClassName
* @deprecated
*/
className?: string;
/**
* 请使用 showFilterFooter
* @deprecated
*/
isFooter?: boolean;
// 筛选渲染
filterClassName?: string | ((params: ColumnFilterRenderParams) => string | VNodeClassName)
showFilterFooter?: boolean;
renderFilter?(h: CreateElement, renderOpts: ColumnFilterRenderOptions, params: ColumnFilterRenderParams): SlotVNodeType | SlotVNodeType[];
filterMethod?(params: ColumnFilterMethodParams): boolean;
filterResetMethod?(params: ColumnFilterResetParams): void;
// 默认行为
defaultFilterMethod?(params: ColumnFilterMethodParams): boolean;
// 单元格渲染
cellClassName?: string | ((params: ColumnCellRenderParams | ColumnEditRenderParams) => string | VNodeClassName)
cellStyle?: VNodeStyle | ((params: ColumnCellRenderParams | ColumnEditRenderParams) => VNodeStyle)
renderHeader?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
renderDefault?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
renderFooter?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnFooterRenderParams): SlotVNodeType | SlotVNodeType[];
exportMethod?(params: ColumnExportCellRenderParams): string;
footerExportMethod?(params: ColumnExportFooterRenderParams): string;
// 编辑渲染
autofocus?: string | ((params: ColumnCellRenderParams | ColumnEditRenderParams) => HTMLElement | null);
renderEdit?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
renderCell?(h: CreateElement, renderOpts: ColumnCellRenderOptions | ColumnEditRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
// 内容渲染
renderExpand?(h: CreateElement, renderOpts: ColumnContentRenderOptions, params: ColumnCellRenderParams | ColumnEditRenderParams): SlotVNodeType | SlotVNodeType[];
// 工具栏-按钮渲染
renderToolbarButton?(h: CreateElement, renderOpts: ToolbarButtonRenderOptions, params: ToolbarButtonRenderParams): SlotVNodeType | SlotVNodeType[];
renderToolbarTool?(h: CreateElement, renderOpts: ToolbarToolRenderOptions, params: ToolbarToolRenderParams): SlotVNodeType | SlotVNodeType[];
// 表单-项渲染
itemClassName?: string | ((params: FormItemRenderParams) => string | VNodeClassName)
itemStyle?: VNodeStyle | ((params: FormItemRenderParams) => VNodeStyle)
itemContentClassName?: string | ((params: FormItemRenderParams) => string | VNodeClassName)
itemContentStyle?: VNodeStyle | ((params: FormItemRenderParams) => VNodeStyle)
itemTitleClassName?: string | ((params: FormItemRenderParams) => string | VNodeClassName)
itemTitleStyle?: VNodeStyle | ((params: FormItemRenderParams) => VNodeStyle)
renderItemTitle?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): SlotVNodeType | SlotVNodeType[];
renderItemContent?(h: CreateElement, renderOpts: FormItemRenderOptions, params: FormItemRenderParams): SlotVNodeType | SlotVNodeType[];
itemVisibleMethod?(params: FormItemVisibleParams): boolean;
itemResetMethod?(params: FormItemResetParams): void;
// 空内容渲染
renderEmpty?(h: CreateElement, renderOpts: TableEmptyRender, params: EmptyRenderParams): SlotVNodeType | SlotVNodeType[];
[key: string]: any;
}
/**
* 渲染选项
*/
export class RenderOptions {
/**
* 渲染器名称
*/
name?: string;
/**
* 目标组件渲染的参数
*/
props?: { [key: string]: any };
/**
* 目标组件渲染的属性
*/
attrs?: { [key: string]: any };
/**
* 目标组件渲染的事件
*/
events?: { [key: string]: Function };
/**
* 目标组件渲染的原生事件
*/
nativeEvents?: { [key: string]: Function };
[key: string]: any;
}
/**
* 渲染参数
*/
export class RenderParams {}
/**
* 选项参数
*/
export interface OptionProps extends RenderParams {
value?: string;
label?: string;
[key: string]: any;
}
/**
* 分组选项参数
*/
export interface OptionGroupProps extends RenderParams {
options?: string;
label?: string;
[key: string]: any;
}
/**
* 单元格渲染参数
*/
export interface ColumnCellRenderParams extends TableRenderParams {
/**
* 列对象
*/
column: ColumnInfo;
/**
* 相对于 columns 中的索引
*/
columnIndex: number;
/**
* 相对于可视区渲染中的列索引
*/
$columnIndex: number;
/**
* 行数据对象
*/
row: RowInfo;
/**
* 相对于 data 中的索引
*/
rowIndex: number;
/**
* 相对于当前表格数据的索引
*/
$rowIndex: number;
isHidden: boolean;
fixed: string;
type: string;
}
/**
* 空内容渲染配置项
*/
export class TableEmptyRender extends RenderOptions { }
export class TableRenderParams extends RenderParams {
/**
* 表格实例对象
*/
$table: Table;
}
export class GridRenderParams extends TableRenderParams {
/**
* 高级表格实例对象
*/
$grid: Grid;
}
export class EmptyRenderParams extends TableRenderParams { }
export type ColumnDefaultSlotParams = ColumnCellRenderParams
export type ColumnContentSlotParams = ColumnContentRenderParams
export type ColumnIconSlotParams = ColumnIconRenderParams
export type ColumnContentRenderParams = ColumnCellRenderParams
export type ColumnIconRenderParams = ColumnCellRenderParams