From eddc275de8fa112eaddb418721adf876308e3969 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Fri, 27 Mar 2026 21:55:07 +0000 Subject: [PATCH] Fix popup scroll clamping to prevent reactions drift Co-authored-by: Ray Jacobson --- packages/harmony/src/components/popup/Popup.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/harmony/src/components/popup/Popup.tsx b/packages/harmony/src/components/popup/Popup.tsx index 89ed7a7a761..b3df1048deb 100644 --- a/packages/harmony/src/components/popup/Popup.tsx +++ b/packages/harmony/src/components/popup/Popup.tsx @@ -324,12 +324,18 @@ export const PopupInternal = forwardRef< (scrollParent: Element, initialScrollPosition: number) => { const scrollTop = scrollParent.scrollTop if (wrapperRef.current) { - wrapperRef.current.style.top = `${ + const nextTop = originalTopPosition.current - scrollTop + initialScrollPosition - }px` + const adjustedTop = disableAutoFlip + ? nextTop + : Math.min( + Math.max(0, nextTop), + Math.max(0, window.innerHeight - wrapperRef.current.offsetHeight) + ) + wrapperRef.current.style.top = `${adjustedTop}px` } }, - [wrapperRef, originalTopPosition] + [disableAutoFlip, wrapperRef, originalTopPosition] ) // Set up scroll listeners