@visualjs/grid
Version:
JavaScript Data Table
82 lines (81 loc) • 2.84 kB
TypeScript
import { PureComponent } from "preact/compat";
import { JSXInternal } from "preact/src/jsx";
import { Alignment, ScrollChangeReason } from "./constants";
import { RowInfo, CellInfo, ItemSize } from "./types";
export interface Props {
className?: string;
style?: JSXInternal.CSSProperties;
rows: string[];
rowHeight: ItemSize;
columns: string[];
pinnedLeftColumns?: string[];
pinnedRightColumns?: string[];
columnWidth: ItemSize;
pinnedLeftClassName?: string;
pinnedRightClassName?: string;
throttleRate?: number;
throttleTimeout?: number;
overscanColumnCount?: number;
overscanRowCount?: number;
scrollTopOffset?: number;
scrollLeftOffset?: number;
scrollToColumnIndex?: number;
scrollToColumnAlignment?: Alignment;
scrollToRowIndex?: number;
scrollToRowAlignment?: Alignment;
renderRow(rowInfo: RowInfo): JSX.Element;
renderCell(cellInfo: CellInfo): JSX.Element;
onWheelHorizontal?: (ev: WheelEvent) => void;
onScrollHorizontal?: (ev: Event) => void;
onScrollVertical?: (ev: Event) => void;
getScrollXNode?: (node: HTMLDivElement) => void;
getScrollYNode?: (node: HTMLDivElement) => void;
}
export interface State {
offsetLeft: number;
offsetTop: number;
scrollChangeReason: ScrollChangeReason;
}
export declare class VirtualGrid extends PureComponent<Props, State> {
static defaultProps: {
throttleRate: number;
throttleTimeout: number;
overscanRowCount: number;
overscanColumnCount: number;
};
itemSizeGetter: (itemSize: ItemSize, keyer: (index: number) => string) => (index: number) => number;
private rowManager;
private columnManager;
private onScrollVertical;
private onScrollHorizontal;
private rootNode?;
private scrollYNode?;
private scrollXNode?;
private rowStyleCache;
private columnStyleCache;
readonly state: State;
componentDidMount(): void;
componentWillReceiveProps(nextProps: Props): void;
componentDidUpdate(_: Props, prevState: State): void;
componentWillUnmount(): void;
scrollTo({ top, left }: {
top?: number;
left?: number;
}): void;
getOffsetForColumn(index: number, scrollToAlignment?: Alignment, itemCount?: number): number;
getOffsetForRow(index: number, scrollToAlignment?: Alignment, itemCount?: number): number;
recomputeSizes(startRowIndex?: number, startColumnIndex?: number): void;
private getSize;
private getRowStyle;
private getColumnStyle;
private getPinnedColumnStyle;
private handleMouseWheel;
private handleScroll;
private getNodeOffset;
private getRootRef;
private getScrollYRef;
private getScrollXRef;
private getPinnedLeftWidth;
private getPinnedRightWidth;
render(): JSXInternal.Element;
}