From 351c238af7d983aa370758b63a8eec60b93e0d62 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Mon, 20 Jan 2025 11:56:07 +0100 Subject: [PATCH] Recalculate popover position when resized while open --- src/components/feedback/Popover.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/feedback/Popover.tsx b/src/components/feedback/Popover.tsx index e5814ec76..e865f67fb 100644 --- a/src/components/feedback/Popover.tsx +++ b/src/components/feedback/Popover.tsx @@ -133,9 +133,9 @@ function usePopoverPositioning( // First of all, open popover if it's using the native API, otherwise its // size is 0x0 and positioning calculations won't work. - const popover = popoverRef.current; + const popover = popoverRef.current!; if (asNativePopover) { - popover?.togglePopover(true); + popover.togglePopover(true); } const cleanup = adjustPopoverPositioning(); @@ -151,12 +151,17 @@ function usePopoverPositioning( capture: true, }); + // Readjust popover positioning if its size changes, in case it dropped-up + const observer = new ResizeObserver(adjustPopoverPositioning); + observer.observe(popover); + return () => { if (asNativePopover) { popover?.togglePopover(false); } cleanup(); listeners.removeAll(); + observer.disconnect(); }; }, [adjustPopoverPositioning, asNativePopover, popoverOpen, popoverRef]); }