import { PureComponent, Validator, Requireable } from 'react'; import * as PropTypes from 'prop-types'; import { RenderedSection } from './Grid'; export type OnSectionRenderedParams = RenderedSection; export type ChildProps = { onSectionRendered: (params: RenderedSection) => void; scrollToColumn: number; scrollToRow: number; }; /** * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time. */ export type ArrowKeyStepperProps = { children: (props: ChildProps) => React.ReactNode; className?: string | undefined; columnCount: number; rowCount: number; mode?: 'edges' | 'cells' | undefined; disabled?: boolean | undefined; isControlled?: boolean | undefined; onScrollToChange?: ((params: ScrollIndices) => void) | undefined; scrollToColumn?: number | undefined; scrollToRow?: number | undefined; /** * PLEASE NOTE * The [key: string]: any; line is here on purpose * This is due to the need of force re-render of PureComponent * Check the following link if you want to know more * https://github.com/bvaughn/react-virtualized#pass-thru-props */ [key: string]: any; }; export type ScrollIndices = { scrollToRow: number; scrollToColumn: number; }; export type ScrollIndexes = ScrollIndices; export class ArrowKeyStepper extends PureComponent { static defaultProps: { disabled: false; isControlled: false; mode: 'edges'; scrollToColumn: 0; scrollToRow: 0; }; } export default ArrowKeyStepper;