UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

35 lines (34 loc) 959 B
import * as React from 'react'; export function useScrollToRow({ data, enableVirtualization, page, paginatorRenderer, scrollToRow, }) { let rowRefs = React.useRef({}); let pageRef = React.useRef(page); pageRef.current = page; let dataRef = React.useRef(data); dataRef.current = data; let scrollToIndex = React.useMemo(() => { if (!scrollToRow || paginatorRenderer) return; let index = scrollToRow(pageRef.current, dataRef.current); return index < 0 ? void 0 : index; }, [paginatorRenderer, scrollToRow]); React.useEffect(() => { if (enableVirtualization || null == scrollToIndex || scrollToIndex < 0) return; rowRefs.current[pageRef.current[scrollToIndex]?.id]?.scrollIntoView(); }, [enableVirtualization, scrollToIndex]); let tableRowRef = React.useCallback( (row) => (element) => { rowRefs.current[row.id] = element; }, [], ); return { scrollToIndex, tableRowRef, }; }