import { Nullable } from '../../../utils'; import { ComponentInternalInstance, CSSProperties, PropType, Ref, VNode } from 'vue'; import { TableColumnCtx } from './table-column/defaults'; import { Store } from './table-store'; import TableLayout from './table-utils/table-layout'; export declare type DefaultRow = any; interface TableRefs { headerWrapper: HTMLElement; footerWrapper: HTMLElement; fixedBodyWrapper: HTMLElement; rightFixedBodyWrapper: HTMLElement; bodyWrapper: HTMLElement; [key: string]: any; } interface TableState { isGroup: Ref; resizeState: Ref<{ width: any; height: any; }>; doLayout: () => void; debouncedUpdateLayout: () => void; } declare type HoverState = Nullable<{ cell: HTMLElement; column: TableColumnCtx; row: T; }>; declare type RIS = { row: T; $index: number; store: Store; }; declare type RenderExpanded = ({ row, $index, store }: RIS) => VNode; declare type SummaryMethod = (data: { columns: TableColumnCtx; data: T[]; }) => string[]; interface Sort { prop: string; order: 'ascending' | 'descending'; init?: any; silent?: any; } interface Filter { column: TableColumnCtx; values: string[]; silent: any; } interface TreeNode { expanded?: boolean; loading?: boolean; noLazyChildren?: boolean; indent?: number; level?: number; display?: boolean; } interface Table extends ComponentInternalInstance { $ready: boolean; hoverState?: HoverState; renderExpanded: RenderExpanded; store: Store; layout: TableLayout; refs: TableRefs; tableId: string; state: TableState; } interface RenderRowData { store: Store; _self: Table; column: TableColumnCtx; row: T; $index: number; treeNode?: TreeNode; } declare type ColumnCls = string | ((data: { row: T; rowIndex: number; }) => string); declare type ColumnStyle = CSSProperties | ((data: { row: T; rowIndex: number; }) => CSSProperties); declare type CellCls = string | ((data: { row: T; rowIndex: number; column: TableColumnCtx; columnIndex: number; }) => string); declare type CellStyle = CSSProperties | ((data: { row: T; rowIndex: number; column: TableColumnCtx; columnIndex: number; }) => CSSProperties); declare type Layout = 'fixed' | 'auto'; interface TableProps { data: T[]; size?: string; width?: string | number; height?: string | number; maxHeight?: string | number; fit?: boolean; stripe?: boolean; border?: boolean; rowKey?: string | ((row: T) => string); context?: Table; showHeader?: boolean; showSummary?: boolean; sumText?: string; summaryMethod?: SummaryMethod; rowClassName?: ColumnCls; rowStyle?: ColumnStyle; cellClassName?: CellCls; cellStyle?: CellStyle; headerRowClassName?: ColumnCls; headerRowStyle?: ColumnStyle; headerCellClassName?: CellCls; headerCellStyle?: CellStyle; highlightCurrentRow?: boolean; currentRowKey?: string | number; emptyText?: string; expandRowKeys?: any[]; defaultExpandAll?: boolean; defaultSort?: Sort; tooltipEffect?: string; spanMethod?: (data: { row: T; rowIndex: number; column: TableColumnCtx; columnIndex: number; }) => number[] | { rowspan: number; colspan: number; }; selectOnIndeterminate?: boolean; indent?: number; treeProps?: { hasChildren?: string; children?: string; }; lazy?: boolean; load?: (row: T, treeNode: TreeNode, resolve: (data: T[]) => void) => void; className?: string; style?: CSSProperties; tableLayout: Layout; } export declare const tableEmits: string[]; export declare const tableProps: { data: { type: PropType; default: () => never[]; }; size: StringConstructor; width: (StringConstructor | NumberConstructor)[]; height: (StringConstructor | NumberConstructor)[]; maxHeight: (StringConstructor | NumberConstructor)[]; fit: { type: BooleanConstructor; default: boolean; }; stripe: BooleanConstructor; border: BooleanConstructor; rowKey: PropType string) | undefined>; showHeader: { type: BooleanConstructor; default: boolean; }; showSummary: BooleanConstructor; sumText: StringConstructor; summaryMethod: PropType | undefined>; rowClassName: PropType | undefined>; rowStyle: PropType | undefined>; cellClassName: PropType | undefined>; cellStyle: PropType | undefined>; headerRowClassName: PropType | undefined>; headerRowStyle: PropType | undefined>; headerCellClassName: PropType | undefined>; headerCellStyle: PropType | undefined>; highlightCurrentRow: BooleanConstructor; currentRowKey: (StringConstructor | NumberConstructor)[]; emptyText: StringConstructor; expandRowKeys: PropType; defaultExpandAll: BooleanConstructor; defaultSort: PropType; tooltipEffect: StringConstructor; spanMethod: PropType<((data: { row: any; rowIndex: number; column: TableColumnCtx; columnIndex: number; }) => number[] | { rowspan: number; colspan: number; }) | undefined>; selectOnIndeterminate: { type: BooleanConstructor; default: boolean; }; indent: { type: NumberConstructor; default: number; }; treeProps: { type: PropType<{ hasChildren?: string | undefined; children?: string | undefined; } | undefined>; default: () => { hasChildren: string; children: string; }; }; lazy: BooleanConstructor; load: PropType<((row: any, treeNode: TreeNode, resolve: (data: any[]) => void) => void) | undefined>; style: { type: PropType; default: () => {}; }; className: { type: StringConstructor; default: string; }; tableLayout: { type: PropType; default: string; }; }; export type { SummaryMethod, Table, TableProps, TableRefs, ColumnCls, ColumnStyle, TreeNode, RenderRowData, Sort, Filter }; export declare type TableEmits = typeof tableEmits;