///
import { SpinProps } from 'antd/lib/spin';
import { IDictionary, IArrayDictionary } from '@mjcloud/types';
import { SortOrder, ColumnType, TableLocale, SorterResult, TablePaginationConfig, RowSelectionType, TableCurrentDataSource } from 'antd/lib/table/interface';
import { Index, GridCellProps, ScrollSyncChildProps, CollectionCellRendererParams, CollectionCellSizeAndPosition } from 'react-virtualized';
export declare type Key = string | number;
export declare type FixedType = 'left' | 'right' | boolean;
export declare type GetCheckDisabled = (record: RecordType) => boolean;
export declare type GetKey = (record: RecordType, index?: number) => Key;
export declare type GetBodyRowHeight = (params: Index & {
state: ICellState;
}) => number;
export declare type ITableColumnProps = Omit, 'children'>;
export declare type ContainerRenderer = (props: ScrollSyncChildProps, state: ICellState) => React.ReactNode;
export declare type CellRenderer = (props: CellProps) => React.ReactNode;
export declare type HeaderCellRenderer = (props: HeaderCellProps) => React.ReactNode;
export declare type SelectionSelectFn = (record: T, selected: boolean, selectedRowKeys: Key[], halfSelectedKeys: Key[]) => void;
export declare type HeaderCellSizeAndPositionGetter = (params: HeaderCellIndex) => CollectionCellSizeAndPosition;
export interface TableRowSelection {
type?: RowSelectionType;
selectedRowKeys?: Key[];
halfSelectedKeys?: Key[];
onSelect?: SelectionSelectFn;
fixed?: boolean;
strictly?: boolean;
columnWidth?: string | number;
columnTitle?: string | React.ReactNode;
}
export interface ITableLocale extends TableLocale {
}
export interface CellProps extends GridCellProps {
state: ICellState;
className?: string;
}
export interface IColumnProps extends ColumnType {
control?: any;
isTree?: boolean;
display?: boolean;
colorCommand?: string;
children?: IColumnProps[];
summaryRender?: (text: any, record: T, index: number) => React.ReactNode;
}
interface HeaderCellProps extends CollectionCellRendererParams {
state: ICellState;
headerRows: IHeaderCellType[];
}
interface HeaderCellIndex extends Index {
headerRows: IHeaderCellType[];
}
export interface ITableScroll {
x: boolean | number | string;
y: number;
scrollToFirstRowOnChange?: boolean;
}
export interface ITableComponents {
body?: {
cell?: React.ReactType;
};
}
export interface IHeaderCellType {
key: React.Key;
className: string;
fixed?: FixedType;
isTree?: boolean;
style: React.CSSProperties;
children: React.ReactNode;
column: IColumnProps;
colSpan: number;
rowSpan: number;
rowIndex: number;
hasSubColumns: boolean;
colStart: number;
colEnd: number;
width: number;
height?: number;
x: number;
y?: number;
}
export interface IHeaderCellInfo {
width: number;
height: number;
x: number;
y: number;
}
export interface ICellState {
columns: ITableColumnProps[];
autoCellWidth: number;
isScrollX: boolean;
isScrollY: boolean;
tableWidth: number;
/**
* 总行数: headerRowCount + dataSource.length + footerRowCount
*/
rowCount: number;
/**
* 总列数: 遍历并打平columns, 获得总列数
*/
columnCount: number;
/**
* 表格头总行数: 遍历并打平columns, 获得表格头总行数, 也是columns嵌套深度值
*/
/**
* 左边固定列数: 遍历columns获得
*/
leftColumnCount: number;
/**
* 右边固定列数: 遍历columns获得
*/
rightColumnCount: number;
leftColumnWidth: number;
rightColumnWidth: number;
headerRows: IHeaderCellType[];
headerLeftRows: IHeaderCellType[];
headerRightRows: IHeaderCellType[];
headerRowCount: number;
headerHeight: number;
bodyHeight: number;
}
export interface ITableDataSourceItem extends IDictionary {
_display: boolean;
_deepness: number;
_expanded: boolean;
_last: boolean;
_parent?: ITableDataSourceItem;
_children?: ITableDataSourceItem[];
_parentRowKey: string;
_rowKey: string;
}
export interface DataNode extends IDictionary {
}
export interface DataEntity {
index: number;
key: Key;
pos: string;
parentPos?: string;
node: DataNode;
parent?: DataEntity;
children?: DataEntity[];
level: number;
}
export interface FlattenNode {
parent: FlattenNode | null;
children: FlattenNode[];
pos: string;
data: DataNode;
isStart: boolean[];
isEnd: boolean[];
}
export interface ITableState {
/**
* 合计区块总行数: summaryDataSource.length
*/
footerRowCount: number;
footerHeight: number;
spinProps: SpinProps;
loading: boolean;
spinning: boolean;
width?: number;
columns: IColumnProps[];
dataSource: ITableDataSourceItem[];
tileDataSource: ITableDataSourceItem[];
}
export interface ITableProps {
id?: string;
size: 'default' | 'middle' | 'small';
dataSource: RecordType[];
rowHeight: number;
bordered: boolean;
className?: string;
locale: ITableLocale;
scroll: ITableScroll;
showSummary: boolean;
summaryDataSource: RecordType[];
headerRowHeight: number;
overscanRowCount: number;
columns: IColumnProps[];
overscanColumnCount: number;
style?: React.CSSProperties;
components: ITableComponents;
loading: boolean | SpinProps;
sortDirections?: SortOrder[];
rowSelection?: TableRowSelection;
pagination: TablePaginationConfig | false;
rowKey: string | ((record: RecordType, index: number) => string);
keyEntities: Record;
expandLevel: number;
expandedRowKeys: string[] | number[];
expandLevel2Keys: IArrayDictionary;
childrenColumnName: string;
onExpand: (expanded: boolean, record: RecordType) => void;
onExpandedRowsChange: (expandedRowKeys: string[] | number[], expandLevel: number) => void;
onChange?: (pagination: TablePaginationConfig, filters: Record, sorter: SorterResult | SorterResult[], extra: TableCurrentDataSource) => void;
}
export interface IFormatDataParams {
source: T[];
data: ITableDataSourceItem[];
parent?: ITableDataSourceItem;
parentRowKey?: string;
expandedRowKeys: IDictionary;
disabledFn?: (row: IDictionary) => boolean;
deepness?: number;
display?: boolean;
}
export {};