@uiw/react-table
Version:
Table component
66 lines (65 loc) • 2.37 kB
TypeScript
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;