import React from 'react'; import { CheckboxOptionType } from '../../types/checkbox'; export declare type DataType = Record; export declare type Column = HeadColumn | AccessorColumn; export declare type BaseColumn = { Header: React.ReactNode; Footer?: React.ReactNode; colSpan?: number; rowSpan?: number; fixed?: 'left' | 'right'; renderHeaderCell?: (rowRecord: TableHeadRow, cell: TableHeadCell, index: number) => React.ReactNode; renderFooterCell?: (rowRecord: TableHeadRow, cell: TableHeadCell, index: number) => React.ReactNode; }; export declare type HeadColumn = { columns: Column[]; } & BaseColumn; export declare type AccessorColumn = { accessor: string; width?: number; filter?: ColumnFilter; data?: T[]; onCell?: OnCellFn; renderCell?: (rowRecord: TableRow, cell: TableCell, index: number) => React.ReactNode; sort?: ColumnSort; } & BaseColumn; export declare type OnCellFn = (row: T, index: number) => (React.CSSProperties & { colSpan?: number; rowSpan?: number; }) | undefined; export declare type ColumnFilter = { render: FilterRender | FilterType; icon?: React.ReactNode; filterValue?: D; options?: CheckboxOptionType[]; }; export declare type FilterRenderProps = { data: TableRow[]; filterValue?: D; options?: CheckboxOptionType[]; onFilter: (excludeIds: string[], filterValue: D) => void; closePopover: () => void; setEffect: (effect: boolean) => void; }; export declare type FilterRender = (props: FilterRenderProps) => React.ReactElement; export declare type FilterType = 'text' | 'checkbox' | 'radio'; export declare type ColumnSort = { render?: SortRender; sortValue?: SortDir; customSort?: (curRow: TableRow, nextRow: TableRow, dir: SortDir) => number; }; export declare type SortRenderProps = { sortValue?: SortDir; onSort: (value: SortDir) => void; }; export declare type SortRender = (props: SortRenderProps) => React.ReactElement; export declare type SortDir = 'desc' | 'asc' | 'none'; export declare type TableHeadRow = { cells: TableHeadCell[]; style?: React.CSSProperties; id: string; }; export declare type TableHeadCell = { rowSpan: number; colSpan: number; content: React.ReactNode; style?: React.CSSProperties; className?: string; column: Column; parent?: TableHeadCell; children?: TableHeadCell[]; id: string; accessor?: string; fixed?: 'left' | 'right'; left?: number; width?: number; renderFilter?: (body: TableRow[]) => React.ReactNode; renderSort?: () => React.ReactNode; }; export declare type TableRow = { cells: TableCell[]; style?: React.CSSProperties; data: T; id: string; }; export declare type TableCell = { id: string; rowSpan: number; colSpan: number; content: React.ReactNode; head: TableHeadCell; style?: React.CSSProperties; className?: string; };