saleor-dashboard/src/components/AppLayout/ResponsiveDrawer.tsx

69 lines
1.6 KiB
TypeScript
Raw Normal View History

2019-06-19 14:40:52 +00:00
import Drawer from "@material-ui/core/Drawer";
import Hidden from "@material-ui/core/Hidden";
import {
createStyles,
Theme,
withStyles,
WithStyles
} from "@material-ui/core/styles";
2019-08-09 10:26:22 +00:00
import React from "react";
2019-08-09 11:14:35 +00:00
import { drawerWidth, drawerWidthExpanded } from "./consts";
2019-06-19 14:40:52 +00:00
const styles = (theme: Theme) =>
createStyles({
drawerDesktop: {
backgroundColor: theme.palette.background.paper,
border: "none",
height: "100vh",
2019-08-09 11:14:35 +00:00
overflow: "visible",
padding: 0,
2019-06-19 14:40:52 +00:00
position: "fixed" as "fixed",
2019-09-26 12:40:32 +00:00
transition: "width 0.3s ease",
2019-08-09 11:14:35 +00:00
width: drawerWidthExpanded
},
drawerDesktopSmall: {
overflow: "visible",
transition: "width 0.2s ease",
2019-06-19 14:40:52 +00:00
width: drawerWidth
},
drawerMobile: {
2019-08-09 11:14:35 +00:00
width: drawerWidthExpanded
2019-06-19 14:40:52 +00:00
}
});
interface ResponsiveDrawerProps extends WithStyles<typeof styles> {
children?: React.ReactNode;
open: boolean;
2019-08-09 11:14:35 +00:00
small: boolean;
2019-06-19 14:40:52 +00:00
onClose?();
}
const ResponsiveDrawer = withStyles(styles, { name: "ResponsiveDrawer" })(
2019-08-09 11:14:35 +00:00
({ children, classes, onClose, open, small }: ResponsiveDrawerProps) => (
2019-06-19 14:40:52 +00:00
<>
<Hidden smDown>
<Drawer
variant="persistent"
open
classes={{
2019-08-09 11:14:35 +00:00
paper: small ? classes.drawerDesktop : classes.drawerDesktopSmall
2019-06-19 14:40:52 +00:00
}}
>
{children}
</Drawer>
</Hidden>
<Hidden mdUp>
<Drawer
variant="temporary"
onClose={onClose}
open={open}
classes={{ paper: classes.drawerMobile }}
>
{children}
</Drawer>
</Hidden>
</>
)
);
export default ResponsiveDrawer;