tln-pm
Version:
Project Management as Code
161 lines (152 loc) • 5.32 kB
JSX
import { useState } from 'react';
import { NavLink, useLocation } from "react-router";
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import Typography from '@mui/material/Typography';
import Menu from '@mui/material/Menu';
import MenuIcon from '@mui/icons-material/Menu';
import Container from '@mui/material/Container';
import Button from '@mui/material/Button';
import MenuItem from '@mui/material/MenuItem';
import AccountTreeIcon from '@mui/icons-material/AccountTree';
//const settings = ['Profile', 'Account', 'Dashboard', 'Logout'];
function Header(props) {
const location = useLocation();
const [anchorElNav, setAnchorElNav] = useState(null);
//const [anchorElUser, setAnchorElUser] = useState(null);
const handleOpenNavMenu = (event) => {
setAnchorElNav(event.currentTarget);
};
// const handleOpenUserMenu = (event) => {
// setAnchorElUser(event.currentTarget);
// };
const handleCloseNavMenu = () => {
setAnchorElNav(null);
};
// const handleCloseUserMenu = () => {
// setAnchorElUser(null);
// };
//
// console.log('!Header');
return (
<AppBar position="static" elevation={0}>
<Container maxWidth="xl">
<Toolbar disableGutters>
<AccountTreeIcon sx={{ display: { xs: 'none', md: 'flex' }, mr: 1 }} />
<Typography
variant="h7"
noWrap
component="a"
sx={{
mr: 2,
display: { xs: 'none', md: 'flex' },
fontWeight: 400,
color: 'inherit',
textDecoration: 'none',
}}
>
<span>tpm <sub>{props.version}</sub></span>
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}>
<IconButton
size="large"
aria-label="account of current user"
aria-controls="menu-appbar"
aria-haspopup="true"
onClick={handleOpenNavMenu}
color="inherit"
>
<MenuIcon />
</IconButton>
<Menu
id="menu-appbar"
anchorEl={anchorElNav}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'left',
}}
open={Boolean(anchorElNav)}
onClose={handleCloseNavMenu}
sx={{ display: { xs: 'block', md: 'none' } }}
>
{props.pages.map((page) => (
<NavLink key={page.id} to={page.href} style={{textDecoration: 'none'}} >
<MenuItem onClick={handleCloseNavMenu}>
<Typography sx={{ textAlign: 'center', color: 'black' }}>{page.title}</Typography>
</MenuItem>
</NavLink>
))}
</Menu>
</Box>
<AccountTreeIcon sx={{ display: { xs: 'flex', md: 'none' }, mr: 1 }} />
<Typography
variant="h7"
noWrap
component="a"
sx={{
mr: 2,
display: { xs: 'flex', md: 'none' },
flexGrow: 1,
fontWeight: 400,
color: 'inherit',
textDecoration: 'none',
}}
>
<span>tpm <sub>{props.version}</sub></span>
</Typography>
<Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
{props.pages.map((page) => (
<NavLink key={page.id} to={page.href} style={{textDecoration: 'none'}} >
<Button
onClick={handleCloseNavMenu}
sx={{ my: 2, color: 'white', display: 'block', textDecoration: location.pathname === page.href ? "underline" : "none" }}
>
{page.title}
</Button>
</NavLink>
))}
</Box>
{/*
<Box sx={{ flexGrow: 0 }}>
<Tooltip title="Open settings">
<IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
<Avatar alt="Remy Sharp" src="/static/images/avatar/2.jpg" />
</IconButton>
</Tooltip>
<Menu
sx={{ mt: '45px' }}
id="menu-appbar"
anchorEl={anchorElUser}
anchorOrigin={{
vertical: 'top',
horizontal: 'right',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={Boolean(anchorElUser)}
onClose={handleCloseUserMenu}
>
{settings.map((setting) => (
<MenuItem key={setting} onClick={handleCloseUserMenu}>
<Typography sx={{ textAlign: 'center' }}>{setting}</Typography>
</MenuItem>
))}
</Menu>
</Box>
*/}
</Toolbar>
</Container>
</AppBar>
);
}
export default Header;