import React from 'react'; import { useHistory } from 'react-router-dom'; import IconButton from '@material-ui/core/IconButton'; import Menu from '@material-ui/core/Menu'; import MenuItem from '@material-ui/core/MenuItem'; import MoreHorizIcon from '@material-ui/icons/MoreHoriz'; import { makeStyles } from '@material-ui/core'; import { useAuth } from '../../hooks/useAuth'; const ITEM_HEIGHT = 48; const useStyles = makeStyles({ moreMenu: { position: 'absolute', right: 10, zIndex: 100 } }); const MoreMenu: React.FC = () => { const classes = useStyles(); const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null); const { logout } = useAuth(); const history = useHistory(); const open = Boolean(anchorEl); const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => { setAnchorEl(event.currentTarget); }; const handleLogout = () => { logout(); history.push('/login'); }; const handleClose = () => { setAnchorEl(null); }; return ( <div className={classes.moreMenu}> <div> <IconButton aria-label="more" aria-controls="long-menu" aria-haspopup="true" onClick={handleClick} > <MoreHorizIcon /> </IconButton> <Menu id="long-menu" anchorEl={anchorEl} keepMounted open={open} onClose={handleClose} PaperProps={{ style: { maxHeight: ITEM_HEIGHT * 4.5, width: '20ch' } }} > <MenuItem onClick={handleLogout}>Log out</MenuItem> </Menu> </div> </div> ); }; export default MoreMenu;