import { type FC, useEffect } from 'react' import LogoImage from '../assets/images/logo.png' import LogoSmall from '../assets/images/logo-small.png' import { useTranslation } from 'react-i18next' import { DocumentText, Home2, Logout, People, Setting2, TicketDiscount, Calendar, Security, Card, SecurityUser, TruckFast, Element3, Star1, NotificationBing, SmsEdit } from 'iconsax-react' import SideBarItem from './SideBarItem' import { useLocation } from 'react-router-dom' import { Pages } from '../config/Pages' import { useSharedStore } from './store/sharedStore' import { clx } from '../helpers/utils' import ProductsSubMenu from './components/ProductsSubMenu' import OrdersSubMenu from './components/OrdersSubMenu' import CustomersSubMenu from './components/CustomersSubMenu' import DiscountSubMenu from './components/DiscountSubMenu' import { SideBarItemHasSubMenu } from '../config/SideBarSubMenu' import { usePermissions } from '@/hooks/usePermissions' import { PermissionEnum } from '@/pages/roles/enum/Enum' import Skeleton from 'react-loading-skeleton' const SideBar: FC = () => { const { t } = useTranslation('global') const { openSidebar, setOpenSidebar, hasSubMenu, setSubMenuName, setSubtMenu, subMenuName } = useSharedStore() const location = useLocation() const { checkPermission, isLoading } = usePermissions() const isActive = (name: string) => { return location.pathname.includes(name) } useEffect(() => { const split = location.pathname.split('/') if (SideBarItemHasSubMenu.includes(split[1])) { setSubMenuName(split[1]) setSubtMenu(true) } else { setSubMenuName('') setSubtMenu(false) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [location.pathname]) const iconSizeSideBar = 20 return ( <> { openSidebar &&
setOpenSidebar(false)} /> }
{ !hasSubMenu ? : }
{t('sidebar.menu')}
{isLoading ? (
{Array.from({ length: 8 }).map((_, index) => (
))}
) : (
{checkPermission(PermissionEnum.MANAGE_REPORTS) && ( } title={t('sidebar.mainpage')} isActive={isActive('dashboard')} link={Pages.dashboard} activeName='' /> )} {checkPermission(PermissionEnum.MANAGE_ORDERS) && ( } title={t('sidebar.orders')} isActive={isActive('orders')} link={Pages.orders.list} name='orders' activeName='orders' /> )} {checkPermission(PermissionEnum.MANAGE_FOODS) && ( } title={t('sidebar.foods')} isActive={isActive('products')} link={Pages.products.list} activeName='products' /> )} {checkPermission(PermissionEnum.MANAGE_SCHEDULES) && ( } title={t('sidebar.schedule')} isActive={isActive('schedule')} link={Pages.schedule.list} name='schedule' activeName='schedule' /> )} {checkPermission(PermissionEnum.MANAGE_PAYMENTS) && ( } title={t('sidebar.payment_methods')} isActive={isActive('payment_methods')} link={Pages.payment_methods.list} name='payment_methods' activeName='payment_methods' /> )} {checkPermission(PermissionEnum.MANAGE_USERS) && ( } title={t('sidebar.customers')} isActive={isActive('customers')} link={Pages.customers.list} name='customers' activeName='customers' /> )} {checkPermission(PermissionEnum.MANAGE_REVIEWS) && ( } title={t('sidebar.reviews')} isActive={isActive('reviews')} link={Pages.reviews.list} name='reviews' activeName='reviews' /> )} {checkPermission(PermissionEnum.MANAGE_PAGER) && ( } title={t('sidebar.pagers')} isActive={isActive('pagers')} link={Pages.pagers.list} name='pagers' activeName='pagers' /> )} {checkPermission(PermissionEnum.MANAGE_ADMINS) && ( } title={t('sidebar.admins')} isActive={isActive('admins')} link={Pages.admins.list} name='admins' activeName='admins' /> )} {checkPermission(PermissionEnum.MANAGE_DELIVERY) && ( } title={t('sidebar.shipment_methods')} isActive={isActive('shipment_methods')} link={Pages.shipment_methods.list} name='shipment_methods' activeName='shipment_methods' /> )} {checkPermission(PermissionEnum.MANAGE_COUPONS) && ( } title={t('sidebar.discount')} isActive={isActive('discounts')} link={Pages.coupons.list} name='discounts' activeName='discounts' /> )} {checkPermission(PermissionEnum.MANAGE_ROLES) && ( } title={t('sidebar.roles')} isActive={isActive('roles')} link={Pages.roles.list} name='roles' activeName='roles' /> )} {/* { checkPermission(PermissionEnum.MANAGE_SETTINGS) && ( } title={t('sidebar.notifications')} isActive={isActive('notifications')} link={Pages.notifications.list} name='notifications' activeName='notifications' /> ) } */}
)}
{t('sidebar.other')}
{isLoading ? (
) : (
{/* {checkPermission(PermissionEnum.VIEW_REPORTS) && ( } title={t('sidebar.statistics')} isActive={isActive('statistics')} link={Pages.statistics.list} activeName='statistics' /> )} */} {/* {checkPermission(PermissionEnum.MANAGE_CONTACTS) && ( } title={t('sidebar.comments')} isActive={isActive('comments')} link={Pages.comments.list} activeName='comments' /> )} */} {checkPermission(PermissionEnum.MANAGE_REPORTS) && ( } title={t('sidebar.reports')} isActive={isActive('reports')} link={Pages.reports.list} activeName='reports' /> )}
)}
{isLoading ? (
) : ( <>
{checkPermission(PermissionEnum.MANAGE_SETTINGS) && ( } title={t('sidebar.setting')} isActive={isActive('setting')} link={Pages.setting} activeName='settings' /> )}
} title={t('sidebar.logout')} isActive={isActive('logout')} link={`#`} isLogout activeName='' />
)}
{ hasSubMenu && (openSidebar || window.innerWidth > 1139) &&
{ subMenuName === 'products' ? : subMenuName === 'orders' ? : subMenuName === 'customers' ? : subMenuName === 'discounts' ? : null }
} ) } export default SideBar