123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- import React from 'react';
- import PropTypes from 'prop-types';
- import AppBar from '@material-ui/core/AppBar';
- import CssBaseline from '@material-ui/core/CssBaseline';
- import Divider from '@material-ui/core/Divider';
- import Drawer from '@material-ui/core/Drawer';
- import Hidden from '@material-ui/core/Hidden';
- import IconButton from '@material-ui/core/IconButton';
- import InboxIcon from '@material-ui/icons/MoveToInbox';
- import List from '@material-ui/core/List';
- import ListItem from '@material-ui/core/ListItem';
- import ListItemIcon from '@material-ui/core/ListItemIcon';
- import ListItemText from '@material-ui/core/ListItemText';
- import MailIcon from '@material-ui/icons/Mail';
- import MenuIcon from '@material-ui/icons/Menu';
- import Toolbar from '@material-ui/core/Toolbar';
- import Typography from '@material-ui/core/Typography';
- import { makeStyles, useTheme } from '@material-ui/core/styles';
- import MkFormPage from './MkFormPage';
- import { Route, Router, Switch } from 'react-router-dom';
- import WelcomPage from './WelcomPage';
- import { createBrowserHistory } from 'history';
- import MkTablePage from './MkTablePage';
- const browserHistory = createBrowserHistory();
- const drawerWidth = 240;
- const useStyles = makeStyles((theme) => ({
- root: {
- display: 'flex',
- },
- drawer: {
- [theme.breakpoints.up('sm')]: {
- width: drawerWidth,
- flexShrink: 0,
- },
- },
- appBar: {
- [theme.breakpoints.up('sm')]: {
- width: `calc(100% - ${drawerWidth}px)`,
- marginLeft: drawerWidth,
- },
- },
- menuButton: {
- marginRight: theme.spacing(2),
- [theme.breakpoints.up('sm')]: {
- display: 'none',
- },
- },
- // necessary for content to be below app bar
- toolbar: theme.mixins.toolbar,
- drawerPaper: {
- width: drawerWidth,
- },
- content: {
- flexGrow: 1,
- padding: theme.spacing(3),
- },
- }));
- function ResponsiveDrawer(props) {
- const { window } = props;
- const classes = useStyles();
- const theme = useTheme();
- const [mobileOpen, setMobileOpen] = React.useState(false);
- const [menuName, setMenuName] = React.useState('');
- const handleDrawerToggle = () => {
- setMobileOpen(!mobileOpen);
- };
- const handleOnClick = (path) => {
- setMenuName(path);
- browserHistory.push(path);
- }
- const menus = [
- {name: 'MkForm', path:'MkForm'},
- {name: 'MkTable', path:'MkTable'}
- ]
- const drawer = (
- <div>
- <div className={classes.toolbar} ><Typography variant="h4">Mokkon</Typography></div>
- <Divider />
- <List>
- {menus.map((menu, index) => (
- <ListItem button key={menu.name} onClick={() => handleOnClick(menu.path)}>
- <ListItemText primary={menu.name} />
- </ListItem>
- ))}
- </List>
- </div>
- );
- const container = window !== undefined ? () => window().document.body : undefined;
- return (
- <div className={classes.root}>
- <CssBaseline />
- <AppBar position="fixed" className={classes.appBar}>
- <Toolbar>
- <IconButton
- color="inherit"
- aria-label="open drawer"
- edge="start"
- onClick={handleDrawerToggle}
- className={classes.menuButton}
- >
- <MenuIcon />
- </IconButton>
- <Typography variant="h6" noWrap>
- {menuName}
- </Typography>
- </Toolbar>
- </AppBar>
- <nav className={classes.drawer} aria-label="mailbox folders">
- {/* The implementation can be swapped with js to avoid SEO duplication of links. */}
- <Hidden smUp implementation="css">
- <Drawer
- container={container}
- variant="temporary"
- anchor={theme.direction === 'rtl' ? 'right' : 'left'}
- open={mobileOpen}
- onClose={handleDrawerToggle}
- classes={{
- paper: classes.drawerPaper,
- }}
- ModalProps={{
- keepMounted: true, // Better open performance on mobile.
- }}
- >
- {drawer}
- </Drawer>
- </Hidden>
- <Hidden xsDown implementation="css">
- <Drawer
- classes={{
- paper: classes.drawerPaper,
- }}
- variant="permanent"
- open
- >
- {drawer}
- </Drawer>
- </Hidden>
- </nav>
- <main className={classes.content}>
- <div className={classes.toolbar} />
- <Router history={browserHistory}>
- <Switch>
- <Route path="/" component={WelcomPage} exact />
- <Route path="/MkForm" component={MkFormPage} />
- <Route path="/MkTable" component={MkTablePage} />
- </Switch>
- </Router>
- </main>
- </div>
- );
- }
- ResponsiveDrawer.propTypes = {
- /**
- * Injected by the documentation to work in an iframe.
- * You won't need it on your project.
- */
- window: PropTypes.func,
- };
- export default ResponsiveDrawer;
|