+
+
+
Todo
-
- {tree.map((root) =>
- root.children.length > 0 ? (
-
-
- {root.name}
-
-
-
- {root.children.map((child) => (
-
- {child.name}
-
- ))}
-
-
- ) : (
-
- {root.name}
-
- ),
- )}
);
}
-function DesktopCategoryNavigationFallback({ tree, onOpenMenu }: { tree: CategoryNode[]; onOpenMenu: () => void }) {
+function DepartmentsMegaMenu({ tree, isActive }: { tree: CategoryNode[]; isActive: (name: string) => boolean }) {
+ const [open, setOpen] = useState(false);
+ const containerRef = useRef
(null);
+
+ useEffect(() => {
+ if (!open) return;
+ function handlePointerDown(event: PointerEvent) {
+ if (containerRef.current && !containerRef.current.contains(event.target as Node)) setOpen(false);
+ }
+ function handleKeyDown(event: KeyboardEvent) {
+ if (event.key === "Escape") setOpen(false);
+ }
+ document.addEventListener("pointerdown", handlePointerDown);
+ document.addEventListener("keydown", handleKeyDown);
+ return () => {
+ document.removeEventListener("pointerdown", handlePointerDown);
+ document.removeEventListener("keydown", handleKeyDown);
+ };
+ }, [open]);
+
return (
-