// Focus management when modal opens - focus search input useEffect(() => { if (!isOpen) return;
// Focus search input with a small delay to ensure DOM is ready consttimer = setTimeout(() => { constsearchInput = document.querySelector( "[data-search-input]", ) asHTMLElement; if (searchInput) { searchInput.focus(); } }, 100);
return () =>clearTimeout(timer); }, [isOpen]);
// Focus trap for keyboard navigation within modal useEffect(() => { if (!isOpen) return;
consthandleKeyDown = (e: KeyboardEvent) => { if (e.key === "Tab") { // Get modal container and find focusable elements within it constmodalContainer = dialogRef.current; if (!modalContainer) return;
// Only handle Tab if active element is within this modal if (!modalContainer.contains(document.activeElementasNode)) return;
Modal for searching and selecting AniList manga matches for a Kenmei manga. Features focus management, scroll lock, and keyboard navigation.
Source