From 087d7d477b34c514644f49ad956ddd13b1a7d3fa Mon Sep 17 00:00:00 2001 From: Polle Pas Date: Wed, 17 Jul 2024 14:32:52 +0200 Subject: [PATCH] Fix indicator jumping when scrolling table with keyboard --- .../TableEditor/ActiveCellIndicator.tsx | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/browser/data-browser/src/components/TableEditor/ActiveCellIndicator.tsx b/browser/data-browser/src/components/TableEditor/ActiveCellIndicator.tsx index 59679a100..aa82e4e05 100644 --- a/browser/data-browser/src/components/TableEditor/ActiveCellIndicator.tsx +++ b/browser/data-browser/src/components/TableEditor/ActiveCellIndicator.tsx @@ -11,10 +11,16 @@ import { import { scrollIntoView } from './helpers/scrollIntoView'; import { CursorMode, useTableEditorContext } from './TableEditorContext'; +type OnScrollCallbackOptions = { + scrollUpdateWasRequested: boolean; +}; + export interface ActiveCellIndicatorProps { sizeStr: string; scrollerRef: React.RefObject; - setOnScroll: (onScroll: () => void) => void; + setOnScroll: ( + onScroll: ({ scrollUpdateWasRequested }: OnScrollCallbackOptions) => void, + ) => void; } const cursorGoesOffscreen = (parentRect: DOMRect, childRect: DOMRect) => { @@ -128,14 +134,17 @@ export function ActiveCellIndicator({ ); useEffect(() => { - setOnScroll(() => (_, __, requested: boolean) => { - if (requested) { - return; - } - - setScrolling(true); - updatePosition(false); - }); + setOnScroll( + () => + ({ scrollUpdateWasRequested }: OnScrollCallbackOptions) => { + if (scrollUpdateWasRequested) { + return; + } + + setScrolling(true); + updatePosition(false); + }, + ); }, [updatePosition]); useEffect(() => {