UNPKG

@uiw/react-table

Version:
66 lines (65 loc) 2.37 kB
import React from 'react'; import { IProps, HTMLDivProps } from '@uiw/utils'; import './style/index.less'; export interface ExpandableType<T> { expandedRowRender?: (record: T, index: number, expanded: boolean) => React.ReactNode; expandIcon?: (expanded: boolean, record: T, index: number) => React.ReactNode; rowExpandable?: (record: T) => boolean; defaultExpandAllRows?: boolean; defaultExpandedRowKeys?: Array<T[keyof T] | number>; expandedRowKeys?: Array<T[keyof T] | number>; onExpandedRowsChange?: (expandedRows: Array<T[keyof T] | number>) => void; onExpand?: (expanded: boolean, record: T, index: number) => void; indentSize?: number; childrenColumnName?: string; } export type TableColumns<T = any> = { title?: string | ((data: TableColumns<T>, rowNum: number, colNum: number) => JSX.Element) | JSX.Element; key?: string; width?: number; colSpan?: number; children?: TableColumns<T>[]; ellipsis?: boolean; render?: (text: string, keyName: string, rowData: T, rowNumber: number, columnNumber: number) => React.ReactNode; style?: React.CSSProperties; align?: 'left' | 'center' | 'right'; className?: string; fixed?: boolean | 'left' | 'right'; [key: string]: any; }; export interface TableProps<T extends { [key: string]: V; } = any, V = any> extends IProps, Omit<HTMLDivProps, 'title'> { prefixCls?: string; columns?: TableColumns<T>[]; data?: Array<T>; title?: React.ReactNode; footer?: React.ReactNode; bordered?: boolean; empty?: React.ReactNode; onCell?: (data: { [key: string]: any; }, options: ICellOptions, evn: React.MouseEvent<HTMLTableCellElement>) => void | React.ReactNode; onCellHead?: (data: TableColumns<T>, rowNum: number, colNum: number, evn: React.MouseEvent<HTMLTableCellElement>) => void; expandable?: ExpandableType<T>; rowKey?: keyof T; scroll?: { x?: React.CSSProperties['width']; y?: React.CSSProperties['height']; }; } export interface LocationWidth { left?: number; right?: number; width: number; key?: string; colSpan?: number; } export interface ICellOptions { rowNum: number; colNum: number; keyName: string; } export default function Table<T extends { [key: string]: V; }, V>(props?: TableProps<T, V>): React.JSX.Element;