/// 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 {};