Skip to content

Instantly share code, notes, and snippets.

@tupton
Created October 21, 2019 19:19
Show Gist options
  • Save tupton/e9140ee67ee1f5ab15d6be949bd7cee7 to your computer and use it in GitHub Desktop.
Save tupton/e9140ee67ee1f5ab15d6be949bd7cee7 to your computer and use it in GitHub Desktop.
hook that provides a jsx component
const useSupportSidebar = () => {
const classes = useStyles();
const [isSidebarOpen, setSidebarOpen] = useState(false);
const toggleSidebar = () => setSidebarOpen(!isSidebarOpen);
const closeSidebar = () => setSidebarOpen(false);
const drawerStateClass = isSidebarOpen ? classes.drawerOpen : classes.drawerClose;
const Sidebar = (
<Drawer
variant="temporary"
anchor="right"
onClose={closeSidebar}
className={`${classes.drawer} ${drawerStateClass}`}
classes={{
paper: `${drawerStateClass} ${classes.drawerPaper}`,
}}
open={isSidebarOpen} >
<div>
<IconButton onClick={closeSidebar}>
<i className="fa fa-close" />
</IconButton>
</div>
<SupportRequest />
</Drawer>
);
return [Sidebar, toggleSidebar];
};
export default useSupportSidebar;
export const withSidebar = Component => props => {
const [Sidebar, toggleSidebar] = useSupportSidebar();
return (
<>
<Component {...props} toggleSidebar={toggleSidebar} />
<Sidebar />
</>
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment