UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

322 lines (321 loc) 13.4 kB
import * as React from 'react'; import PropTypes from 'prop-types'; import { DraggableProvided, DropResult, ResponderProvided } from 'react-beautiful-dnd'; import { PerformanceTable as PerformanceTableLocal } from '../../../lib/locale-provider'; import { RadioChangeEvent } from '../../../lib/radio'; import { CheckboxChangeEvent } from '../../../lib/checkbox'; import { TableProps, SelectionInfo, SelectionItemSelectFn } from './Table.d'; import { RowProps } from './Row.d'; import { SortType } from './common.d'; import Column from './Column'; import Cell from './Cell'; import HeaderCell from './HeaderCell'; import ProfessionalBar from './query-bar/TableProfessionalBar'; import DynamicFilterBar from './query-bar/TableDynamicFilterBar'; import TableStore from './TableStore'; interface TableRowProps extends RowProps { key?: string | number; depth?: number; } export declare enum TableQueryBarType { professionalBar = "professionalBar", filterBar = "filterBar" } declare type Offset = { top?: number; left?: number; width?: number; height?: number; }; interface TableState { headerOffset?: Offset; tableOffset?: Offset; width: number; columnWidth: number; dataKey: number; shouldFixedColumn: boolean; contentHeight: number; contentWidth: number; tableRowsMaxHeight: number[]; isColumnResizing?: boolean; expandedRowKeys: string[] | number[]; searchText: string; sortType?: SortType; scrollY: number; isScrolling?: boolean; data: object[]; cacheData: object[]; fixedHeader: boolean; fixedHorizontalScrollbar?: boolean; isTree?: boolean; selectedRowKeys: string[] | number[]; selectionDirty?: boolean; [key: string]: any; } export declare const CUSTOMIZED_KEY = "__customized-column__"; export default class PerformanceTable extends React.Component<TableProps, TableState> { static displayName: string; static Column: typeof Column; static Cell: typeof Cell; static ColumnGroup: import("./ColumnGroup").IColumnGroup; static HeaderCell: typeof HeaderCell; static propTypes: { columns: PropTypes.Requireable<any[]>; autoHeight: PropTypes.Requireable<boolean>; affixHeader: PropTypes.Requireable<number | boolean>; affixHorizontalScrollbar: PropTypes.Requireable<number | boolean>; bordered: PropTypes.Requireable<boolean>; bodyRef: PropTypes.Requireable<(...args: any[]) => any>; className: PropTypes.Requireable<string>; classPrefix: PropTypes.Requireable<string>; children: PropTypes.Requireable<any>; cellBordered: PropTypes.Requireable<boolean>; clickScrollLength: PropTypes.Requireable<object>; data: PropTypes.Requireable<(object | null | undefined)[]>; defaultExpandAllRows: PropTypes.Requireable<boolean>; defaultExpandedRowKeys: PropTypes.Requireable<(string | number | null | undefined)[]>; defaultSortType: PropTypes.Requireable<string | boolean>; disabledScroll: PropTypes.Requireable<boolean>; expandedRowKeys: PropTypes.Requireable<(string | number | null | undefined)[]>; hover: PropTypes.Requireable<boolean>; height: PropTypes.Requireable<number>; headerHeight: PropTypes.Requireable<number>; locale: PropTypes.Requireable<object>; loading: PropTypes.Requireable<boolean>; loadAnimation: PropTypes.Requireable<boolean>; minHeight: PropTypes.Requireable<number>; rowKey: PropTypes.Requireable<string | number>; rowHeight: PropTypes.Requireable<number | ((...args: any[]) => any)>; renderTreeToggle: PropTypes.Requireable<(...args: any[]) => any>; renderRowExpanded: PropTypes.Requireable<(...args: any[]) => any>; rowExpandedHeight: PropTypes.Requireable<number>; renderEmpty: PropTypes.Requireable<(...args: any[]) => any>; renderLoading: PropTypes.Requireable<(...args: any[]) => any>; rowClassName: PropTypes.Requireable<string | ((...args: any[]) => any)>; rtl: PropTypes.Requireable<boolean>; style: PropTypes.Requireable<object>; sortColumn: PropTypes.Requireable<string>; sortType: PropTypes.Requireable<string | boolean>; showHeader: PropTypes.Requireable<boolean>; showScrollArrow: PropTypes.Requireable<boolean>; shouldUpdateScroll: PropTypes.Requireable<boolean>; translate3d: PropTypes.Requireable<boolean>; wordWrap: PropTypes.Requireable<boolean>; width: PropTypes.Requireable<number>; virtualized: PropTypes.Requireable<boolean>; isTree: PropTypes.Requireable<boolean>; onRowClick: PropTypes.Requireable<(...args: any[]) => any>; onRowContextMenu: PropTypes.Requireable<(...args: any[]) => any>; onScroll: PropTypes.Requireable<(...args: any[]) => any>; onSortColumn: PropTypes.Requireable<(...args: any[]) => any>; onExpandChange: PropTypes.Requireable<(...args: any[]) => any>; onTouchStart: PropTypes.Requireable<(...args: any[]) => any>; onTouchMove: PropTypes.Requireable<(...args: any[]) => any>; onDataUpdated: PropTypes.Requireable<(...args: any[]) => any>; highLightRow: PropTypes.Requireable<boolean>; /** * 显示查询条 */ queryBar: PropTypes.Requireable<boolean | object>; customizedCode: PropTypes.Requireable<string>; customizable: PropTypes.Requireable<boolean>; columnDraggable: PropTypes.Requireable<boolean>; columnTitleEditable: PropTypes.Requireable<boolean>; columnsDragRender: PropTypes.Requireable<object>; rowSelection: PropTypes.Requireable<object>; rowDraggable: PropTypes.Requireable<boolean>; }; static ProfessionalBar: typeof ProfessionalBar; static DynamicFilterBar: typeof DynamicFilterBar; static defaultProps: { classPrefix: string; data: never[]; defaultSortType: string; height: number; rowHeight: number; headerHeight: number; minHeight: number; rowExpandedHeight: number; hover: boolean; highLightRow: boolean; showHeader: boolean; showScrollArrow: boolean; bordered: boolean; rowKey: string; translate3d: boolean; shouldUpdateScroll: boolean; locale: { emptyMessage: string; loading: string; }; clickScrollLength: { horizontal: number; vertical: number; }; }; static getDerivedStateFromProps(props: TableProps, state: TableState): { cacheData: object[]; isTree: boolean | undefined; data: object[]; } | null; translateDOMPositionXY: null; scrollListener: any; bscroll: any; tableRef: React.RefObject<any>; scrollbarYRef: React.RefObject<any>; scrollbarXRef: React.RefObject<any>; tableBodyRef: React.RefObject<any>; affixHeaderWrapperRef: React.RefObject<any>; mouseAreaRef: React.RefObject<any>; headerWrapperRef: React.RefObject<any>; tableHeaderRef: React.RefObject<any>; wheelWrapperRef: React.RefObject<any>; tableRows: { [key: string]: [HTMLElement, any]; }; mounted: boolean; disableEventsTimeoutId: null; scrollY: number; scrollX: number; wheelHandler: any; minScrollY: any; minScrollX: any; mouseArea: any; touchX: any; touchY: any; wheelListener: any; touchStartListener: any; touchMoveListener: any; setRowBottomBorderList: Array<number>; nextRowZIndex: Array<number>; _cacheCells: any; _cacheScrollX: number; _cacheRenderCols: any; _cacheChildrenSize: number; _visibleRows: never[]; _lastRowIndex: string | number; tableStore: TableStore; constructor(props: TableProps); listenWheel: (deltaX: number, deltaY: number) => void; componentDidMount(): void; shouldComponentUpdate(nextProps: TableProps, nextState: TableState): boolean; componentDidUpdate(prevProps: TableProps, prevState: TableState): void; componentWillUnmount(): void; getExpandedRowKeys(): string[] | number[]; getSortType(): "desc" | "asc" | undefined; getScrollCellGroups(): any; getFixedLeftCellGroups(): any; getFixedRightCellGroups(): any; isRTL(): boolean; getRowHeight(rowData?: {}): number; /** * 获取表头高度 */ getTableHeaderHeight(): number; /** * Table 个性化高度变更 */ handleHeightTypeChange(): void; /** * 获取 Table 需要渲染的高度 */ getTableHeight(): number; /** * 处理 column props * @param column */ getColumnProps(column: any): Pick<any, string | number | symbol>; /** * 处理columns json -> reactNode * @param columns */ processTableColumns(columns: any[]): (JSX.Element | undefined)[]; /** * 获取 columns ReactElement 数组 * - 处理 children 中存在 <Column> 数组的情况 * - 过滤 children 中的空项 */ getTableColumns(): React.ReactNodeArray; getRecordKey: (record: object, index: number) => any; getCheckboxPropsByItem: (item: object, index: number) => any; getDefaultSelection(): any[]; handleSelect: (record: object, rowIndex: number, e: CheckboxChangeEvent) => void; handleSelectRow: (selectionKey: string, index: number, onSelectFunc: SelectionItemSelectFn) => void; handleRadioSelect: (record: object, rowIndex: number, e: RadioChangeEvent) => void; renderSelectionBox: (type: "checkbox" | "radio" | undefined, rowData: object, rowIndex: number) => JSX.Element; renderRowSelection(fixed: any): JSX.Element | undefined; getCellDescriptor(): any; setOffsetByAffix: () => void; handleWindowScroll: () => void; affixHorizontalScrollbar: () => void; affixTableHeader: () => void; handleSortColumn: (dataKey: string) => void; handleColumnResizeEnd: (columnWidth: number, _cursorDelta: number, dataKey: any, index: number) => void; handleColumnResizeStart: (width: number, left: number, fixed: boolean) => void; handleColumnResizeMove: (width: number, left: number, fixed: boolean) => void; handleTreeToggle: (rowKey: any, _rowIndex: number, rowData: any) => void; setSelectedRowKeys(selectedRowKeys: string[], selectionInfo: SelectionInfo): void; handleScrollX: (delta: number) => void; handleScrollY: (delta: number) => void; handleWheel: (deltaX: number, deltaY: number) => void; debounceScrollEndedCallback: () => void; handleTouchStart: (event: React.TouchEvent<Element>) => void; handleTouchMove: ({ e }: { e: any; }) => void; /** * 当用户在 Table 内使用 tab 键,触发了 onScroll 事件,这个时候应该更新滚动条位置 * https://github.com/rsuite/rsuite/issues/234 */ handleBodyScroll: (event: React.UIEvent<HTMLDivElement>) => void; handleDragEnd: (resultDrag: DropResult, provided: ResponderProvided) => void; initPosition(): void; initBScroll(tableBody: any): void; updatePosition(): void; updatePositionByFixedCell(): void; shouldHandleWheelX: (delta: number) => boolean; shouldHandleWheelY: (delta: number) => boolean; shouldRenderExpandedRow(rowData: object): boolean; addPrefix: (name: string) => string; calculateRowMaxHeight(): void; calculateTableWidth: () => void; calculateTableContentWidth(prevProps: TableProps): void; calculateTableContextHeight(prevProps?: TableProps): void; getControlledScrollTopValue(value: any): number[]; getControlledScrollLeftValue(value: any): number[]; /** * public method */ scrollTop: (top?: number) => void; scrollLeft: (left?: number) => void; scrollTo: (coord: { x: number; y: number; }) => void; bindTableRowsRef: (index: string | number, rowData: any, provided?: DraggableProvided | undefined) => (ref: HTMLElement) => void; bindRowClick: (rowIndex: string | number, index: string | number, rowData: object) => (event: React.MouseEvent<Element, MouseEvent>) => void; onRowClick(rowData: any, event: any, rowIndex: any, index: any): void; bindRowContextMenu: (rowData: object) => (event: React.MouseEvent<Element, MouseEvent>) => void; renderRowData(bodyCells: any[], rowData: any, props: TableRowProps, shouldRenderExpandedRow?: boolean): JSX.Element; calculateFixedAndScrollColumn(cells: any[]): { fixedLeftCells: any[]; fixedRightCells: any[]; scrollCells: any[]; fixedLeftCellGroupWidth: number; fixedRightCellGroupWidth: number; }; renderRow(props: TableRowProps, cells: any[], shouldRenderExpandedRow?: boolean, rowData?: any): JSX.Element; renderRowExpanded(rowData?: object): JSX.Element | null; renderMouseArea(): JSX.Element; renderTableHeader(headerCells: any[], rowWidth: number): JSX.Element; renderTableBody(bodyCells: any[], rowWidth: number): JSX.Element; renderInfo(locale: PerformanceTableLocal): {} | null | undefined; renderScrollbar(): JSX.Element | null; /** * show loading */ renderLoading(): {} | null | undefined; renderTableToolbar(): JSX.Element | null; render(): JSX.Element; } export {};