'use client'; import PerfectScrollbar from 'react-perfect-scrollbar'; import { useDispatch, useSelector } from 'react-redux'; import Link from 'next/link'; import { toggleSidebar } from '@/store/themeConfigSlice'; import AnimateHeight from 'react-animate-height'; import { IRootState } from '@/store'; import { useState, useEffect } from 'react'; import IconCaretsDown from '@/components/icon/icon-carets-down'; import IconMenuDashboard from '@/components/icon/menu/icon-menu-dashboard'; import IconCaretDown from '@/components/icon/icon-caret-down'; import IconMinus from '@/components/icon/icon-minus'; import IconMenuChat from '@/components/icon/menu/icon-menu-chat'; import IconMenuMailbox from '@/components/icon/menu/icon-menu-mailbox'; import IconMenuTodo from '@/components/icon/menu/icon-menu-todo'; import IconMenuNotes from '@/components/icon/menu/icon-menu-notes'; import IconMenuScrumboard from '@/components/icon/menu/icon-menu-scrumboard'; import IconMenuContacts from '@/components/icon/menu/icon-menu-contacts'; import IconMenuInvoice from '@/components/icon/menu/icon-menu-invoice'; import IconMenuCalendar from '@/components/icon/menu/icon-menu-calendar'; import IconMenuComponents from '@/components/icon/menu/icon-menu-components'; import IconMenuElements from '@/components/icon/menu/icon-menu-elements'; import IconMenuCharts from '@/components/icon/menu/icon-menu-charts'; import IconMenuWidgets from '@/components/icon/menu/icon-menu-widgets'; import IconMenuFontIcons from '@/components/icon/menu/icon-menu-font-icons'; import IconMenuDragAndDrop from '@/components/icon/menu/icon-menu-drag-and-drop'; import IconMenuTables from '@/components/icon/menu/icon-menu-tables'; import IconMenuDatatables from '@/components/icon/menu/icon-menu-datatables'; import IconMenuForms from '@/components/icon/menu/icon-menu-forms'; import IconMenuUsers from '@/components/icon/menu/icon-menu-users'; import IconMenuPages from '@/components/icon/menu/icon-menu-pages'; import IconMenuAuthentication from '@/components/icon/menu/icon-menu-authentication'; import IconMenuDocumentation from '@/components/icon/menu/icon-menu-documentation'; import { usePathname } from 'next/navigation'; import { getTranslation } from '@/i18n'; const Sidebar = () => { const dispatch = useDispatch(); const { t } = getTranslation(); const pathname = usePathname(); const [currentMenu, setCurrentMenu] = useState(''); const [errorSubMenu, setErrorSubMenu] = useState(false); const themeConfig = useSelector((state: IRootState) => state.themeConfig); const semidark = useSelector((state: IRootState) => state.themeConfig.semidark); const toggleMenu = (value: string) => { setCurrentMenu((oldValue) => { return oldValue === value ? '' : value; }); }; useEffect(() => { const selector = document.querySelector('.sidebar ul a[href="' + window.location.pathname + '"]'); if (selector) { selector.classList.add('active'); const ul: any = selector.closest('ul.sub-menu'); if (ul) { let ele: any = ul.closest('li.menu').querySelectorAll('.nav-link') || []; if (ele.length) { ele = ele[0]; setTimeout(() => { ele.click(); }); } } } }, []); useEffect(() => { setActiveRoute(); if (window.innerWidth < 1024 && themeConfig.sidebar) { dispatch(toggleSidebar()); } }, [pathname]); const setActiveRoute = () => { let allLinks = document.querySelectorAll('.sidebar ul a.active'); for (let i = 0; i < allLinks.length; i++) { const element = allLinks[i]; element?.classList.remove('active'); } const selector = document.querySelector('.sidebar ul a[href="' + window.location.pathname + '"]'); selector?.classList.add('active'); }; return (
); }; export default Sidebar;