import { createSignal, onMount, type Component } from "solid-js"; import { LoadingSpinner, MenuToX, XToMenu } from "@icons"; import { Tree } from "./Tree"; import type { NavProps } from "../types"; const NavComponent: Component = props => { const [open, setOpen] = createSignal(false); const { tree, mobile, routes } = props; let navRef: HTMLDivElement; if (!tree) { return ; } function toggle(e: MouseEvent) { e.preventDefault(); setOpen(!open()); } if (!mobile) { return ( ); } const handleClickOutside = (event: MouseEvent) => { const isLink = "href" in (event.target || {}); if ( isLink || (document.body.contains(event.target as Node) && !navRef.contains(event.target as Node)) ) { setOpen(false); } }; onMount(() => { window.addEventListener("click", handleClickOutside); return () => { window.removeEventListener("click", handleClickOutside); }; }); return ( ); }; export default NavComponent;