network-resurrector/src/components/layout/Sidebar.js

128 lines
3.5 KiB
JavaScript
Raw Normal View History

2023-03-04 00:37:52 +02:00
import React from "react";
import PropTypes from "prop-types";
import clsx from "clsx";
import { makeStyles, useTheme } from "@material-ui/core/styles";
2023-03-04 21:14:47 +02:00
import {
Drawer,
List,
Divider,
IconButton,
ListItemIcon,
ListItemText
} from "@material-ui/core";
2023-03-04 00:37:52 +02:00
import ChevronLeftIcon from "@material-ui/icons/ChevronLeft";
import ChevronRightIcon from "@material-ui/icons/ChevronRight";
import ListItem from "@material-ui/core/ListItem";
2023-03-25 00:28:48 +02:00
import BuildIcon from "@material-ui/icons/Build";
2023-03-04 00:37:52 +02:00
import DnsIcon from "@material-ui/icons/Dns";
2023-03-20 18:49:35 +02:00
import DeviceHubIcon from "@material-ui/icons/DeviceHub";
2023-03-04 00:37:52 +02:00
import SettingsIcon from "@material-ui/icons/Settings";
import DashboardIcon from "@material-ui/icons/Dashboard";
2023-03-20 19:04:29 +02:00
import FeaturedPlayListIcon from "@material-ui/icons/FeaturedPlayList";
2023-03-04 00:37:52 +02:00
import { useHistory } from "react-router-dom";
2023-03-04 22:06:55 +02:00
import { useTranslation } from "react-i18next";
2023-03-04 00:37:52 +02:00
import styles from "./styles";
const useStyles = makeStyles(styles);
const Sidebar = ({ open, handleDrawerClose }) => {
const classes = useStyles();
const theme = useTheme();
const history = useHistory();
2023-03-04 22:06:55 +02:00
const { t } = useTranslation();
2023-03-04 00:37:52 +02:00
return (
<Drawer
variant="permanent"
className={clsx(classes.drawer, {
[classes.drawerOpen]: open,
[classes.drawerClose]: !open
})}
classes={{
paper: clsx({
[classes.drawerOpen]: open,
[classes.drawerClose]: !open
})
}}
>
<div className={classes.toolbar}>
<IconButton onClick={handleDrawerClose}>
{theme.direction === "rtl" ? (
<ChevronRightIcon />
) : (
<ChevronLeftIcon />
)}
</IconButton>
</div>
<Divider />
<List>
<ListItem
button
key="dashboard"
onClick={() => history.push("/dashboard")}
>
<ListItemIcon>
<DashboardIcon />
</ListItemIcon>
2023-03-04 22:06:55 +02:00
<ListItemText primary={t("Menu.Dashboard")} />
2023-03-04 00:37:52 +02:00
</ListItem>
<ListItem
button
key="machines"
onClick={() => history.push("/machines")}
>
<ListItemIcon>
<DnsIcon />
</ListItemIcon>
2023-03-04 22:06:55 +02:00
<ListItemText primary={t("Menu.Machines")} />
2023-03-04 00:37:52 +02:00
</ListItem>
2023-03-20 18:49:35 +02:00
<ListItem button key="system" onClick={() => history.push("/system")}>
<ListItemIcon>
<DeviceHubIcon />
</ListItemIcon>
<ListItemText primary={t("Menu.System")} />
</ListItem>
2023-03-04 00:37:52 +02:00
</List>
<Divider />
<List>
2023-03-25 00:28:48 +02:00
<ListItem
button
key="administration"
onClick={() => history.push("/administration")}
>
2023-03-04 00:37:52 +02:00
<ListItemIcon>
2023-03-25 00:28:48 +02:00
<BuildIcon />
2023-03-04 00:37:52 +02:00
</ListItemIcon>
2023-03-25 00:28:48 +02:00
<ListItemText primary={t("Menu.Administration")} />
2023-03-04 00:37:52 +02:00
</ListItem>
<ListItem
button
key="settings"
onClick={() => history.push("/settings")}
>
<ListItemIcon>
<SettingsIcon />
</ListItemIcon>
2023-03-04 22:06:55 +02:00
<ListItemText primary={t("Menu.Settings")} />
2023-03-04 00:37:52 +02:00
</ListItem>
</List>
2023-03-20 19:04:29 +02:00
<Divider />
<List>
<ListItem button key="about" onClick={() => history.push("/about")}>
<ListItemIcon>
<FeaturedPlayListIcon />
</ListItemIcon>
<ListItemText primary={t("Menu.About")} />
</ListItem>
</List>
2023-03-04 00:37:52 +02:00
</Drawer>
);
};
Sidebar.propTypes = {
open: PropTypes.bool.isRequired,
handleDrawerClose: PropTypes.func.isRequired
};
export default Sidebar;