Files

122 lines
2.7 KiB
JavaScript
Raw Permalink Normal View History

2021-07-19 23:40:54 +02:00
import {useRef, useState} from 'react'
2022-01-19 06:35:04 +04:00
import {styled} from '@mui/material/styles'
2021-07-19 23:40:54 +02:00
import PropTypes from 'prop-types'
import {useRouter} from 'next/navigation'
2022-01-19 07:06:26 +04:00
import {Button, ListItemIcon, ListItemText, Menu, MenuItem} from '@mui/material'
import PublicIcon from '@mui/icons-material/Public'
2021-07-19 23:40:54 +02:00
2022-01-19 06:35:04 +04:00
const PREFIX = 'rezo-menu'
const classes = {
paper: `${PREFIX}-paper`,
root: `${PREFIX}-root`
}
const Root = styled('div')((
{
theme
2021-07-19 23:40:54 +02:00
}
2022-01-19 06:35:04 +04:00
) => ({
[`& .${classes.paper}`]: {
border: '1px solid #d3d4d5'
},
2021-07-19 23:40:54 +02:00
2022-01-19 06:35:04 +04:00
[`& .${classes.root}`]: {
2021-07-19 23:40:54 +02:00
'&:hover': {
backgroundColor: theme.palette.primary.main,
'& .MuiListItemIcon-root, & .MuiListItemText-primary': {
color: theme.palette.common.white
}
}
}
2022-01-19 06:35:04 +04:00
}))
function StyledMenu(props) {
return (
<Menu
elevation={0}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'center'
}}
transformOrigin={{
vertical: 'top',
horizontal: 'center'
}}
{...props}
/>
)
}
const StyledMenuItem = MenuItem
2021-07-19 23:40:54 +02:00
const siteDomain = process.env.NEXT_PUBLIC_PROD_DOMAIN || 'localhost'
export default function RezoMenu({data}) {
const router = useRouter()
const [anchorElement, setAnchorElement] = useState(null)
const anchorRef = useRef(null)
const handleClick = event => {
setAnchorElement(event.currentTarget)
}
2021-09-23 21:21:46 +02:00
const handleClose = (rezo, link) => {
2021-07-19 23:40:54 +02:00
setAnchorElement(null)
2021-09-23 21:21:46 +02:00
if (typeof rezo === 'string' && !link) {
2021-07-19 23:40:54 +02:00
const url = `https://${rezo}.${siteDomain}`
router.push(url)
2021-09-23 21:21:46 +02:00
} else if (typeof rezo === 'string' && link) {
window.open(link, '_blank')
2021-07-19 23:40:54 +02:00
}
}
return (
2022-01-19 06:35:04 +04:00
(
<Root>
<Button
ref={anchorRef}
startIcon={<PublicIcon />}
size='small'
aria-controls='customized-menu'
aria-haspopup='true'
variant='contained'
color='primary'
onClick={handleClick}
>
Rézo
</Button>
<StyledMenu
keepMounted
id='customized-menu'
anchorEl={anchorElement}
open={Boolean(anchorElement)}
classes={{
paper: classes.paper
}}
onClose={handleClose}
>
{data.map(({id, tit, icon, link}) => (
<StyledMenuItem
key={id}
classes={{
root: classes.root
}}
onClick={() => handleClose(id, link)}
>
<ListItemIcon>
{icon}
</ListItemIcon>
<ListItemText primary={tit} />
</StyledMenuItem>
))}
</StyledMenu>
</Root>
)
2021-07-19 23:40:54 +02:00
)
}
RezoMenu.propTypes = {
data: PropTypes.array.isRequired
}