import { HTMLAttributes } from "vue";
import { _TabelDataItem } from "./propTypes";
type align = "left" | "center" | "right";
export interface row {
[key: string]: any;
}
interface ColumnCallBackParam {
row: T;
column: TableComponent.Columns;
/**经过排序的下标 */
index: number;
indexs: Array;
/**原始数据下标 */
dataIndex: number;
dataIndexs: Array;
/**树形表格等级深度 */
treeLever: number;
}
export type WidthCssUnit = "px" | "rem";
export declare namespace TableComponent {
interface Columns {
/**列头名字 */
title?: string;
/**列字段 */
key?: Extract;
/**对齐方式*/
align?: align;
/**列宽 若没设置,会根据table宽度均分,若其他设置了的已经超出了table宽度则会默认设置为minWidth */
width?: number;
/**最小列宽,不设置则为80 */
minWidth?: number;
/**自定义渲染,类似vue的render函数 */
render?: (param: ColumnCallBackParam) => any;
/**自定义表头 */
renderHeader?: (param: Pick, "column" | "index">) => any;
/**列class */
className?: HTMLAttributes["class"];
/**单元格class */
cellClassName?: HTMLAttributes["class"];
/**单元格点击事件 */
cellClick?: ((event: MouseEvent, param: ColumnCallBackParam) => void);
/**表头单元格class */
cellHeaderClassName?: HTMLAttributes["class"];
/**开启排序 */
sortable?: boolean;
/**表格类型 */
type?: "" | "selection";
/**是否为树形表格 */
tree?: boolean;
/**固定列,true “left”表示固定在左侧 “right”固定右侧 */
fixed?: true | "left" | "right";
}
type TabelDataItem = _TabelDataItem & T;
}
export declare namespace TableComponentInner {
interface Columns extends TableComponent.Columns {
/**是否为固定左列最后一个,用来做阴影效果 */
isLastFixedLeft?: boolean;
/**是否为固定右列第一个,用来做阴影效果 */
isFirstFixedRight?: boolean;
}
}
export type ExpandParma = {
row: row;
index: number;
};
export type ExpandFunction = (param: ExpandParma) => any;
export type ExpandRender = string | ExpandFunction;
export type SortType = "up" | "down" | "";
export interface SortConfig {
/**排序类型*/
type: SortType;
/**排序的key */
key: string;
/**若没有key则使用index */
columnIndex: number;
}
export interface TableEmitsLoad {
ExportToExcel(): void;
SetAllSelection(): void;
ClearAllSelection(): void;
}
type GetTableRef = () => HTMLTableElement | undefined;
export interface TabelBodyEmitsLoadInput {
GetTableRef: GetTableRef;
}
export interface TabelHeaderEmitsLoadInput {
GetTableRef: GetTableRef;
}
export {};