import React, { useEffect, useRef, useState } from "react"; import { FormattedMessage } from "react-intl"; import { Nav, Navbar, Button } from "react-bootstrap"; import { IconName } from "@fortawesome/fontawesome-svg-core"; import { LinkContainer } from "react-router-bootstrap"; import { Link, useLocation } from "react-router-dom"; import { Icon } from "src/components/Shared"; interface IMenuItem { messageID: string; href: string; icon: IconName; } const menuItems: IMenuItem[] = [ { icon: "play-circle", messageID: "scenes", href: "/scenes" }, { href: "/scenes/markers", icon: "map-marker-alt", messageID: "markers" }, { href: "/galleries", icon: "image", messageID: "galleries" }, { href: "/performers", icon: "user", messageID: "performers" }, { href: "/studios", icon: "video", messageID: "studios" }, { href: "/tags", icon: "tag", messageID: "tags" } ]; export const MainNavbar: React.FC = () => { const location = useLocation(); const [expanded, setExpanded] = useState(false); // react-bootstrap typing bug // eslint-disable-next-line @typescript-eslint/no-explicit-any const navbarRef = useRef(); const maybeCollapse = (event: Event) => { if ( navbarRef.current && event.target instanceof Node && !navbarRef.current.contains(event.target) ) { setExpanded(false); } }; useEffect(() => { if (expanded) { document.addEventListener("click", maybeCollapse); document.addEventListener("touchstart", maybeCollapse); } return () => { document.removeEventListener("click", maybeCollapse); document.removeEventListener("touchstart", maybeCollapse); }; }, [expanded]); const path = location.pathname === "/performers" ? "/performers/new" : location.pathname === "/studios" ? "/studios/new" : null; const newButton = path === null ? ( "" ) : ( ); return ( setExpanded(false)} > ); };