// Copyright (c) 2022 Robin Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import React, { Component } from 'react'; import { WithStyles } from '@mui/styles'; import withStyles from '@mui/styles/withStyles'; import createStyles from '@mui/styles/createStyles'; import Toolbar from '@mui/material/Toolbar'; import IconButton from '@mui/material/Toolbar'; import Drawer from '@mui/material/Drawer'; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { Theme } from '@mui/material/styles'; const drawerStyles = (theme: Theme) => { return createStyles({ list: { width: 250, }, fullList: { width: 'auto', }, drawer_header: { color: 'white', background: theme.palette.primary.main, } })}; type Anchor = 'top' | 'left' | 'bottom' | 'right'; type CloseEventHandler = () => void; interface DrawerProps extends WithStyles { title?: string; position: Anchor; is_open: boolean; onClose?: CloseEventHandler; children?: React.ReactChild | React.ReactChild[]; } type DrawerState = { is_open: boolean; } export const TemporaryDrawer = withStyles(drawerStyles)( class extends Component { constructor(props: DrawerProps) { super(props); this.state = { is_open: props.is_open }; } toggleDrawer(anchor: Anchor, open: boolean): void { this.setState({ is_open: open }); }; fireClose() { let handler = this.props.onClose; if (handler != null) { handler(); } } render() { const { classes } = this.props; return (
{ this.fireClose(); }} >
{ this.fireClose(); }} onKeyDown={() => { this.fireClose(); }} > {this.props.children}
); } } );