UNPKG

chowa

Version:

UI component library based on React

169 lines (168 loc) 6.2 kB
/** * @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;