@itwin/itwinui-react
Version:
A react component library for iTwinUI
35 lines (34 loc) • 959 B
JavaScript
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,
};
}