import { AppstoreOutlined, BgColorsOutlined, CalendarOutlined, ClusterOutlined, EditOutlined, FileImageOutlined, MessageOutlined, QuestionCircleOutlined, ScissorOutlined, SettingOutlined, ShopOutlined, TeamOutlined, UserOutlined, } from "@ant-design/icons"; import { Divider, Menu } from "antd"; import { useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import { BreakpointLgWidth, Constants } from "../../utils"; import { useTranslation } from "react-i18next"; import { useSideBarContext } from "../../Contexts/SideBarContext"; import { useAppContext } from "../../Contexts/AppContext"; import { useStoresContext } from "../../Contexts/StoresContext"; export function SideMenuContent({ setIsSideMenuCollapsed, contentFirstRender, }) { const sideBarContext = useSideBarContext(); const storesContext = useStoresContext(); const location = useLocation(); const [selectedKeys, setSelectedKeys] = useState("/"); const { t } = useTranslation(); //const lastSubscribedTopic = useRef(""); const navigate = useNavigate(); const getFirstMenuItems = () => { let items = [ { label: t("sideMenu.overview"), icon: , key: Constants.ROUTE_PATHS.OVERVIEW, }, ]; // website let groupWebsite = { label: t("sideMenu.website.title"), icon: , children: [], key: "/website", }; groupWebsite.children.push({ label: t("sideMenu.website.colorPalette"), icon: , key: Constants.ROUTE_PATHS.WEBSITE_COLOR_PALETTE, }); groupWebsite.children.push({ label: t("sideMenu.website.banner"), icon: , key: Constants.ROUTE_PATHS.WEBSITE_BANNER, }); groupWebsite.children.push({ label: t("sideMenu.website.socials"), icon: , key: Constants.ROUTE_PATHS.WEBSITE_SOCIALS, }); items.push(groupWebsite); // stores let stores = { label: storesContext.stores.length > 1 ? t("sideMenu.store.titlePlural") : t("sideMenu.store.titleSingular"), children: [], type: "group", }; storesContext.stores.forEach((store) => { let groupStore = { label: store.name, icon: , children: [], }; if (sideBarContext.permissions.includes("settings")) { groupStore.children.push({ label: t("sideMenu.store.settings"), icon: , key: `${Constants.ROUTE_PATHS.STORE.SETTINGS}/${store.store_id}`, }); } if (sideBarContext.permissions.includes("employees")) { groupStore.children.push({ label: t("sideMenu.store.employees"), icon: , key: `${Constants.ROUTE_PATHS.STORE.EMPLOYEES}/${store.store_id}`, }); } if (sideBarContext.permissions.includes("services")) { groupStore.children.push({ label: t("sideMenu.store.services"), icon: , key: `${Constants.ROUTE_PATHS.STORE.SERVICES}/${store.store_id}`, }); } if (sideBarContext.permissions.includes("calendar")) { groupStore.children.push({ label: t("sideMenu.store.calendar"), icon: , key: `${Constants.ROUTE_PATHS.STORE.CALENDAR}/${store.store_id}`, }); } stores.children.push(groupStore); }); items.push(stores); return items; }; const getSecondMenuItems = () => { let items = []; items.push( { label: t("sideMenu.support"), icon: , key: Constants.ROUTE_PATHS.SUPPORT, }, { label: t("sideMenu.feedback"), icon: , key: Constants.ROUTE_PATHS.FEEDBACK, }, { label: sideBarContext.username, icon: , key: Constants.ROUTE_PATHS.USER_PROFILE, } ); return items; }; useEffect(() => { const pathname = location.pathname; setSelectedKeys(pathname); //lastSubscribedTopic.current = pathname; /* const subscribeTopicMessage = () => webSocketContext.SendSocketMessage( SentMessagesCommands.SubscribeToTopic, { topic: pathname, browserTabSession: BrowserTabSession, } ); subscribeTopicMessage(); const handleSubscribeTopicMessage = () => subscribeTopicMessage(); document.addEventListener( wsConnectionCustomEventName, handleSubscribeTopicMessage ); */ // auto close sideMenu on mobile // this will prevent to auto close sideMenu on first render as the useEffects will be called after the first render if (contentFirstRender.current) { contentFirstRender.current = false; //return; } else if ( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ) || document.body.clientWidth < BreakpointLgWidth ) { setIsSideMenuCollapsed(true); } /* return () => document.removeEventListener( wsConnectionCustomEventName, handleSubscribeTopicMessage ); */ }, [location.pathname]); return (
C O M P A N Y
Dashboard
navigate(item.key)} theme="light" selectedKeys={[selectedKeys]} items={getFirstMenuItems()} defaultOpenKeys={["/website"]} />
navigate(item.key)} items={getSecondMenuItems()} />
); }