mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
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.
This commit is contained in:
@@ -217,7 +217,8 @@ function PathInput({
|
|||||||
e.key === '/' &&
|
e.key === '/' &&
|
||||||
!isEditing &&
|
!isEditing &&
|
||||||
!isSearchOpen &&
|
!isSearchOpen &&
|
||||||
!(e.target as HTMLElement).matches('input, textarea')
|
entries.length > 0 &&
|
||||||
|
!(e.target as HTMLElement).matches('input, textarea, [contenteditable="true"]')
|
||||||
) {
|
) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setIsSearchOpen(true);
|
setIsSearchOpen(true);
|
||||||
@@ -225,14 +226,13 @@ function PathInput({
|
|||||||
// Close search with Escape key
|
// Close search with Escape key
|
||||||
if (e.key === 'Escape' && isSearchOpen) {
|
if (e.key === 'Escape' && isSearchOpen) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation(); // Prevent parent modal from closing
|
|
||||||
setIsSearchOpen(false);
|
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);
|
return () => window.removeEventListener('keydown', handleGlobalKeyDown, true);
|
||||||
}, [isEditing, isSearchOpen]);
|
}, [isEditing, isSearchOpen, entries.length]);
|
||||||
|
|
||||||
// Close search when clicking outside
|
// Close search when clicking outside
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user