fix autocomplete menu flickering issue (#2220)
authorAjay Bura <32841439+ajbura@users.noreply.github.com>
Thu, 20 Feb 2025 07:32:44 +0000 (18:32 +1100)
committerGitHub <noreply@github.com>
Thu, 20 Feb 2025 07:32:44 +0000 (18:32 +1100)
src/app/components/editor/autocomplete/AutocompleteMenu.tsx

index 5d2d917ca882265af8a86faff74b82e09a62120e..452fa1b4afb197d4e93213b684200f3df94684f5 100644 (file)
@@ -5,6 +5,7 @@ import { Header, Menu, Scroll, config } from 'folds';
 
 import * as css from './AutocompleteMenu.css';
 import { preventScrollWithArrowKey, stopPropagation } from '../../../utils/keyboard';
+import { useAlive } from '../../../hooks/useAlive';
 
 type AutocompleteMenuProps = {
   requestClose: () => void;
@@ -12,13 +13,22 @@ type AutocompleteMenuProps = {
   children: ReactNode;
 };
 export function AutocompleteMenu({ headerContent, requestClose, children }: AutocompleteMenuProps) {
+  const alive = useAlive();
+
+  const handleDeactivate = () => {
+    if (alive()) {
+      // The component is unmounted so we will not call for `requestClose`
+      requestClose();
+    }
+  };
+
   return (
     <div className={css.AutocompleteMenuBase}>
       <div className={css.AutocompleteMenuContainer}>
         <FocusTrap
           focusTrapOptions={{
             initialFocus: false,
-            onDeactivate: () => requestClose(),
+            onPostDeactivate: handleDeactivate,
             returnFocusOnDeactivate: false,
             clickOutsideDeactivates: true,
             allowOutsideClick: true,