From 6a84f25301d8799da092020ce5d6a1f467321041 Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Wed, 16 Aug 2023 23:23:07 +0530 Subject: [PATCH] chore: fix issue where scroll would get reset in popovers [skip e2e] --- .../Components/Popover/PositionedPopoverContent.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/web/src/javascripts/Components/Popover/PositionedPopoverContent.tsx b/packages/web/src/javascripts/Components/Popover/PositionedPopoverContent.tsx index 0ac18d78440..68927b4cc88 100644 --- a/packages/web/src/javascripts/Components/Popover/PositionedPopoverContent.tsx +++ b/packages/web/src/javascripts/Components/Popover/PositionedPopoverContent.tsx @@ -1,7 +1,7 @@ import { useDocumentRect } from '@/Hooks/useDocumentRect' import { useAutoElementRect } from '@/Hooks/useElementRect' import { classNames } from '@standardnotes/utils' -import { CSSProperties, useCallback, useLayoutEffect, useState } from 'react' +import { CSSProperties, useCallback, useLayoutEffect, useRef, useState } from 'react' import Portal from '../Portal/Portal' import { PopoverCSSProperties, getPositionedPopoverStyles } from './GetPositionedPopoverStyles' import { PopoverContentProps } from './Types' @@ -85,9 +85,11 @@ const PositionedPopoverContent = ({ useDisableBodyScrollOnMobile() + const canCorrectInitialScroll = useRef(true) const correctInitialScrollForOverflowedContent = useCallback((element: HTMLElement | null) => { - if (element && element.scrollTop > 0) { + if (element && element.scrollTop > 0 && canCorrectInitialScroll.current) { element.scrollTop = 0 + canCorrectInitialScroll.current = false } }, []) @@ -145,6 +147,9 @@ const PositionedPopoverContent = ({ className, )} ref={mergeRefs([correctInitialScrollForOverflowedContent, setAnimationElement])} + onScroll={() => { + canCorrectInitialScroll.current = false + }} > {children}