chowa
Version:
UI component library based on React
169 lines (168 loc) • 6.2 kB
TypeScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import * as React from 'react';
import * as PropTypes from 'prop-types';
import TableColumn, { TableColumnProps, DataIndex, SortMode } from './table-column';
export interface Record {
index?: React.ReactText;
[key: string]: any;
}
export declare type Data = Record[];
export interface ColumnsWidthMap {
[dataIndex: string]: number;
}
export interface ExpanedVisibleMap {
[index: string]: boolean;
}
export interface FilterInfo {
dataIndex: DataIndex;
values: React.ReactText[];
}
export interface SorterInfo {
dataIndex: DataIndex;
mode: SortMode;
}
export interface UpdateParams {
realColumnsWidthMap?: ColumnsWidthMap;
realRowsHeightMap?: number[];
expanedVisibleMap?: ExpanedVisibleMap;
filterInfo?: FilterInfo;
sorterInfo?: SorterInfo;
selfSelectedIndexs?: React.ReactText[];
highlightRowIndex?: React.ReactText;
headerHeight?: number;
contentScrollTop?: number;
footerHeight?: number;
scrollXStart?: boolean;
scrollXEnd?: boolean;
}
export interface TableProps {
className?: string;
style?: React.CSSProperties;
children: React.ReactElement<any>;
size?: 'default' | 'small' | 'large';
align?: 'left' | 'right' | 'center';
loading?: boolean;
data: Data;
columns?: TableColumnProps[];
bordered?: boolean;
striped?: boolean;
fixedHeader?: boolean;
scrollHeight?: number;
resizeable?: boolean;
showHeader?: boolean;
headerRowAttr?: (rowIndex: number) => React.Attributes;
selectable?: boolean;
selectedIndexs?: React.ReactText[];
onSelect?: (record: Record) => void;
onDeSelect?: (record: Record) => void;
onSelectAll?: () => void;
onDeSelectAll?: () => void;
accordion?: boolean;
expandedRowRender?: (record: Record) => React.ReactNode;
expandedOpenNode?: React.ReactNode;
expandedCloseNode?: React.ReactNode;
onExpandedVisibleChange?: (visible: boolean, record: Record) => void;
rowAttr?: (index: React.ReactText, record: Record) => React.Attributes;
highlightRow?: boolean;
footer?: React.ReactNode;
noDataDescription?: React.ReactNode;
noDataImg?: string;
noDataImgStyle?: React.CSSProperties;
draggable?: boolean;
onRowDragEnd?: (data: Data, dragRecord: Record) => void;
onColumDragEnd?: (columns: TableColumnProps[], dragColumn: TableColumnProps) => void;
}
export interface TableState {
renderData?: Data;
selfLoading?: boolean;
renderColumns: TableColumnProps[];
customColumnsWidthMap: ColumnsWidthMap;
realColumnsWidthMap?: ColumnsWidthMap;
realRowsHeightMap?: number[];
expanedVisibleMap?: ExpanedVisibleMap;
renderDataIndexs: DataIndex[];
leftFixedColums: TableColumnProps[];
leftFixedDataIndexs: DataIndex[];
rightFixedColums: TableColumnProps[];
rightFixedDataIndexs: DataIndex[];
filterInfo?: FilterInfo;
sorterInfo?: SorterInfo;
headerHeight?: number;
contentScrollTop?: number;
footerHeight?: number;
scrollXStart?: boolean;
scrollXEnd?: boolean;
selfSelectedIndexs?: React.ReactText[];
highlightRowIndex?: React.ReactText;
}
declare class Table extends React.PureComponent<TableProps, TableState> {
static propTypes: {
className: PropTypes.Requireable<string>;
style: PropTypes.Requireable<object>;
size: PropTypes.Requireable<string>;
align: PropTypes.Requireable<string>;
loading: PropTypes.Requireable<boolean>;
data: PropTypes.Requireable<any[]>;
bordered: PropTypes.Requireable<boolean>;
striped: PropTypes.Requireable<boolean>;
fixedHeader: PropTypes.Requireable<boolean>;
scrollHeight: PropTypes.Requireable<number>;
columns: PropTypes.Requireable<any[]>;
resizeable: PropTypes.Requireable<boolean>;
showHeader: PropTypes.Requireable<boolean>;
headerRowAttr: PropTypes.Requireable<(...args: any[]) => any>;
selectable: PropTypes.Requireable<boolean>;
selectedIndexs: PropTypes.Requireable<any[]>;
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
onDeSelect: PropTypes.Requireable<(...args: any[]) => any>;
onSelectAll: PropTypes.Requireable<(...args: any[]) => any>;
onDeSelectAll: PropTypes.Requireable<(...args: any[]) => any>;
accordion: PropTypes.Requireable<boolean>;
expandedRowRender: PropTypes.Requireable<(...args: any[]) => any>;
expandedOpenNode: PropTypes.Requireable<PropTypes.ReactNodeLike>;
expandedCloseNode: PropTypes.Requireable<PropTypes.ReactNodeLike>;
onExpandedVisibleChange: PropTypes.Requireable<(...args: any[]) => any>;
rowAttr: PropTypes.Requireable<(...args: any[]) => any>;
highlightRow: PropTypes.Requireable<boolean>;
footer: PropTypes.Requireable<PropTypes.ReactNodeLike>;
noDataDescription: PropTypes.Requireable<PropTypes.ReactNodeLike>;
noDataImg: PropTypes.Requireable<string>;
noDataImgStyle: PropTypes.Requireable<object>;
draggable: PropTypes.Requireable<boolean>;
onRowDragEnd: PropTypes.Requireable<(...args: any[]) => any>;
onColumDragEnd: PropTypes.Requireable<(...args: any[]) => any>;
};
static defaultProps: {
align: string;
size: string;
loading: boolean;
data: any[];
bordered: boolean;
striped: boolean;
fixedHeader: boolean;
scrollHeight: number;
resizeable: boolean;
showHeader: boolean;
selectedIndexs: any[];
selectable: boolean;
accordion: boolean;
draggable: boolean;
};
static Column: typeof TableColumn;
constructor(props: TableProps);
componentDidUpdate(preProps: TableProps): void;
private updateRenderData;
private rowDragSorter;
private columnDragSorter;
private compileColums;
private renderTable;
render(): {};
}
export default Table;