From a7de6406ed01cb0b61409f4bb32aa3ba5b65cae6 Mon Sep 17 00:00:00 2001 From: Illia Filippov Date: Thu, 25 Dec 2025 02:39:42 +0100 Subject: [PATCH] fix(path-input): improve keydown handling - Updated keydown event logic to prevent search activation when input fields or contenteditable elements are focused. - Enhanced ESC key handling to ensure parent modal does not close when search is open. - Adjusted dependencies in useEffect to include entries length for better state management. --- apps/ui/src/components/ui/path-input.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/ui/src/components/ui/path-input.tsx b/apps/ui/src/components/ui/path-input.tsx index 09f8186f..c9f79f34 100644 --- a/apps/ui/src/components/ui/path-input.tsx +++ b/apps/ui/src/components/ui/path-input.tsx @@ -217,7 +217,8 @@ function PathInput({ e.key === '/' && !isEditing && !isSearchOpen && - !(e.target as HTMLElement).matches('input, textarea') + entries.length > 0 && + !(e.target as HTMLElement).matches('input, textarea, [contenteditable="true"]') ) { e.preventDefault(); setIsSearchOpen(true); @@ -225,14 +226,13 @@ function PathInput({ // Close search with Escape key if (e.key === 'Escape' && isSearchOpen) { e.preventDefault(); - e.stopPropagation(); // Prevent parent modal from closing setIsSearchOpen(false); } }; - window.addEventListener('keydown', handleGlobalKeyDown, true); // Use capture phase + window.addEventListener('keydown', handleGlobalKeyDown, true); // Use capture phase for ESC handling and prevent parent modal from closing when search is open return () => window.removeEventListener('keydown', handleGlobalKeyDown, true); - }, [isEditing, isSearchOpen]); + }, [isEditing, isSearchOpen, entries.length]); // Close search when clicking outside useEffect(() => {