63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import List from "@mui/material/List";
 | |
| import Divider from "@mui/material/Divider";
 | |
| import { authStore, NAVIGATION_ITEMS } from "@shared";
 | |
| import { NavigationItem, NavigationItemComponent } from "@entities";
 | |
| import { observer } from "mobx-react-lite";
 | |
| 
 | |
| interface NavigationListProps {
 | |
|   open: boolean;
 | |
|   onDrawerOpen?: () => void;
 | |
| }
 | |
| 
 | |
| export const NavigationList = observer(
 | |
|   ({ open, onDrawerOpen }: NavigationListProps) => {
 | |
|     const { payload } = authStore;
 | |
|     // @ts-ignore
 | |
|     const isAdmin = Boolean(payload?.is_admin) || false;
 | |
| 
 | |
|     const primaryItems = NAVIGATION_ITEMS.primary.filter((item) => {
 | |
|       if (item.for_admin) {
 | |
|         return isAdmin;
 | |
|       }
 | |
| 
 | |
|       if (item.nestedItems && item.nestedItems.length > 0) {
 | |
|         return item.nestedItems.some((nestedItem) => {
 | |
|           if (nestedItem.for_admin) {
 | |
|             return isAdmin;
 | |
|           }
 | |
|           return true;
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       return true;
 | |
|     });
 | |
| 
 | |
|     return (
 | |
|       <>
 | |
|         <List>
 | |
|           {primaryItems.map((item) => (
 | |
|             <NavigationItemComponent
 | |
|               key={item.id}
 | |
|               item={item as NavigationItem}
 | |
|               open={open}
 | |
|               onDrawerOpen={onDrawerOpen}
 | |
|             />
 | |
|           ))}
 | |
|         </List>
 | |
|         <Divider />
 | |
|         <List>
 | |
|           {NAVIGATION_ITEMS.secondary.map((item) => (
 | |
|             <NavigationItemComponent
 | |
|               key={item.id}
 | |
|               item={item as NavigationItem}
 | |
|               open={open}
 | |
|               onClick={item.onClick ? item.onClick : undefined}
 | |
|               onDrawerOpen={onDrawerOpen}
 | |
|             />
 | |
|           ))}
 | |
|         </List>
 | |
|       </>
 | |
|     );
 | |
|   }
 | |
| );
 |