import { useRef, useState, useEffect } from 'react'; import stateNav from "@/state/state-nav"; import { Container, Stack, ActionIcon, Box } from "@mantine/core"; import { IconX } from '@tabler/icons-react'; import GlobalSearch from "./globalSearch"; export function NavbarSearch() { const [isOpen, setIsOpen] = useState(false); const containerRef = useRef(null); const isNavigatingRef = useRef(false); // Close when clicking outside useEffect(() => { function handleClickOutside(event: MouseEvent) { const target = event.target as HTMLElement; // Jangan close jika klik di search result item (biar handleSelect yang urus) if (target.closest('.search-result-item')) { return; } // Close jika klik di luar container if (containerRef.current && !containerRef.current.contains(target)) { setIsOpen(false); stateNav.clear(); } } document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, []); // Reset navigation flag saat component unmount atau route change useEffect(() => { return () => { isNavigatingRef.current = false; }; }, []); return ( {isOpen && ( { setIsOpen(false); stateNav.clear(); }} style={{ position: 'absolute', right: 10, top: '50%', transform: 'translateY(-50%)', zIndex: 1000 }} > )} ); }