Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4780 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4779 stevensc 1
/* eslint-disable react/prop-types */
2
import * as React from 'react';
3
import Box from '@mui/material/Box';
4
import Drawer from '@mui/material/Drawer';
5
import List from '@mui/material/List';
6
import ListItem from '@mui/material/ListItem';
7
import ListItemIcon from '@mui/material/ListItemIcon';
8
import ListItemText from '@mui/material/ListItemText';
9
import Accordion from '@mui/material/Accordion';
10
import AccordionSummary from '@mui/material/AccordionSummary';
11
import AccordionDetails from '@mui/material/AccordionDetails';
12
import Link from '@mui/material/Link';
13
import Typography from '@mui/material/Typography';
14
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
15
 
16
function MenuDrawer({ isOpen = false, items = [], icons=[], closeDrawer = () => { } }) {
17
 
18
    return (
19
        <Drawer
20
            anchor='right'
21
            open={isOpen}
22
            onClose={closeDrawer}
23
        >
24
            <Box
25
                sx={{ width: 250 }}
26
                role="presentation"
27
            >
28
                <List>
29
                    {items.map((navItem, index) => {
30
                        return (
31
                            <MenuDrawer.Item
32
                                key={index}
33
                                Icon={icons[index]}
34
                                title={navItem.label}
35
                                url={navItem.href}
36
                                childs={navItem.childs}
37
                            />
38
                        )
39
                    })}
40
                </List>
41
            </Box>
42
 
43
        </Drawer>
44
    )
45
}
46
 
47
const Item = ({ Icon, title, url, childs = [] }) => {
48
    return (
49
        <ListItem disablePadding>
50
            {!childs.length
51
                ?
52
                <Link href={url}>
53
                    <ListItemIcon>
54
                        {Icon && <Icon />}
55
                    </ListItemIcon>
56
                    <ListItemText primary={title} />
57
                </Link>
58
                :
59
                <Accordion>
60
                    <AccordionSummary
61
                        expandIcon={<ExpandMoreIcon />}
62
                        aria-controls="panel1a-content"
63
                        id="panel1a-header"
64
                    >
65
                        <Typography>Accordion 1</Typography>
66
                    </AccordionSummary>
67
                    <AccordionDetails>
68
                        {childs.map((child, index) => {
69
                            return (
70
                                <Link key={index} href={child.href}>
71
                                    <ListItemText primary={child.label} />
72
                                </Link>
73
                            )
74
                        })}
75
                    </AccordionDetails>
76
                </Accordion>
77
            }
78
 
79
        </ListItem>
80
    )
81
}
82
 
83
MenuDrawer.Item = Item
84
 
85
export default MenuDrawer