UNPKG

fixed-react-data-grid-custom

Version:

Excel-like grid component built with React, with editors, keyboard navigation, copy & paste, and the like

60 lines (59 loc) 3.26 kB
import React from 'react'; import { CalculatedColumn, Position, ScrollPosition, SubRowDetails, RowRenderer, RowRendererProps } from './common/types'; import { ViewportProps, ViewportState } from './Viewport'; declare type SharedViewportProps<R> = Pick<ViewportProps<R>, 'rowKey' | 'totalWidth' | 'rowGetter' | 'rowsCount' | 'selectedRows' | 'rowRenderer' | 'cellMetaData' | 'rowHeight' | 'scrollToRowIndex' | 'contextMenu' | 'rowSelection' | 'getSubRowDetails' | 'rowGroupRenderer' | 'enableCellSelect' | 'enableCellAutoFocus' | 'cellNavigationMode' | 'eventBus' | 'RowsContainer' | 'editorPortalTarget' | 'interactionMasksMetaData'>; declare type SharedViewportState = Pick<ViewportState, 'rowOverscanStartIdx' | 'rowOverscanEndIdx' | 'rowVisibleStartIdx' | 'rowVisibleEndIdx' | 'colVisibleStartIdx' | 'colVisibleEndIdx' | 'colOverscanStartIdx' | 'colOverscanEndIdx' | 'lastFrozenColumnIndex' | 'height' | 'isScrolling'>; export interface CanvasProps<R> extends SharedViewportProps<R>, SharedViewportState { columns: CalculatedColumn<R>[]; width: number; totalColumnWidth: number; onScroll(position: ScrollPosition): void; } declare type RendererProps<R> = Pick<CanvasProps<R>, 'rowVisibleStartIdx' | 'rowVisibleEndIdx' | 'columns' | 'cellMetaData' | 'colVisibleStartIdx' | 'colVisibleEndIdx' | 'colOverscanEndIdx' | 'colOverscanStartIdx' | 'lastFrozenColumnIndex' | 'isScrolling'> & { ref(row: (RowRenderer<R> & React.Component<RowRendererProps<R>>) | null): void; key: number; idx: number; row: R; subRowDetails?: SubRowDetails; height: number; isSelected: boolean; scrollLeft: number; }; export default class Canvas<R> extends React.PureComponent<CanvasProps<R>> { static displayName: string; private readonly canvas; private readonly interactionMasks; private readonly rows; private unsubscribeScrollToColumn; private _scroll; componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(prevProps: CanvasProps<R>): void; handleScroll: (e: React.UIEvent<HTMLDivElement>) => void; onHitBottomCanvas: () => void; onHitTopCanvas: () => void; handleHitColummBoundary: ({ idx }: Position) => void; scrollToRow(scrollToRowIndex: number): void; scrollToColumn: (idx: number) => void; getRows(rowOverscanStartIdx: number, rowOverscanEndIdx: number): { row: R; subRowDetails: SubRowDetails<unknown> | undefined; }[]; getScroll(): { scrollTop: number; scrollLeft: number; }; getClientScrollTopOffset(node: HTMLDivElement): number; isRowSelected(idx: number, row: R): boolean; setScrollLeft(scrollLeft: number): void; getRowByRef: (i: number) => (RowRenderer<R> & React.Component<RowRendererProps<R>, {}, any>) | undefined; getRowTop: (rowIdx: number) => number; getRowHeight: (rowIdx: number) => number; getRowColumns: (rowIdx: number) => CalculatedColumn<R, unknown, keyof R>[]; renderCustomRowRenderer(props: RendererProps<R>): JSX.Element; renderGroupRow(props: RendererProps<R>): JSX.Element; renderRow(props: RendererProps<R>): JSX.Element; renderPlaceholder(key: string, height: number): JSX.Element; render(): JSX.Element; } export {};