Rev 4790 | Rev 4955 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import * as React from 'react';import Box from '@mui/material/Box';import Drawer from '@mui/material/Drawer';import List from '@mui/material/List';import ListItem from '@mui/material/ListItem';import ListItemIcon from '@mui/material/ListItemIcon';import ListItemText from '@mui/material/ListItemText';import Accordion from '@mui/material/Accordion';import AccordionSummary from '@mui/material/AccordionSummary';import AccordionDetails from '@mui/material/AccordionDetails';import Link from '@mui/material/Link';import Typography from '@mui/material/Typography';import ExpandMoreIcon from '@mui/icons-material/ExpandMore';function MenuDrawer({ isOpen = false, items = [], icons = [], closeDrawer = () => { } }) {return (<Drawer anchor='right' open={isOpen} onClose={closeDrawer}><Box sx={{ width: 250, padding: '1rem' }} role="presentation"><List>{items.map((navItem, index) => {return (<MenuDrawer.Itemkey={index}Icon={icons[index]}title={navItem.label}url={navItem.href}childs={navItem.childs}/>)})}</List></Box></Drawer>)}const Item = ({ Icon, title, url, childs = [] }) => {return (<ListItem disablePadding>{!childs.length?<Link href={`/${url}`} display='flex' gap='.5rem'><ListItemIcon>{Icon && <Icon />}</ListItemIcon><ListItemText primary={title} /></Link>:<Accordion sx={{ border: 'none', width: '100%', boxShadow: 'none' }}><AccordionSummaryexpandIcon={<ExpandMoreIcon />}sx={{ minHeight: 'auto !important', margin: '0', padding: 0 }}>{Icon && <Icon />}<Typography margin='0'>{title}</Typography></AccordionSummary><AccordionDetails sx={{ padding: 0 }}>{childs.map((child, index) => {if (child.childs?.length) {return (<Accordion key={index} sx={{ border: 'none', width: '100%', boxShadow: 'none' }}><AccordionSummaryexpandIcon={<ExpandMoreIcon />}sx={{ minHeight: 'auto !important', margin: '0' }}><Typography margin='0'>{child.label}</Typography></AccordionSummary><AccordionDetails sx={{ padding: 0 }}>{child.childs.map((levelThree, index) => {return (<Link key={index} href={`/${levelThree.href}`}><ListItemText primary={levelThree.label} /></Link>)})}</AccordionDetails></Accordion>)}return (<Link key={index} href={`${child.href}`}><ListItemText primary={child.label} /></Link>)})}</AccordionDetails></Accordion>}</ListItem>)}MenuDrawer.Item = Itemexport default MenuDrawer