packages/react-search-ui-views/src/layouts/LayoutSidebar.tsx (50 lines of code) (raw):

import React from "react"; import { appendClassName } from "../view-helpers"; interface LayoutSidebarProps { className: string; children: React.ReactNode; } interface LayoutSidebarState { isSidebarToggled: boolean; } class LayoutSidebar extends React.Component< LayoutSidebarProps, LayoutSidebarState > { constructor(props) { super(props); this.state = { isSidebarToggled: false }; } toggleSidebar = () => { this.setState(({ isSidebarToggled }) => ({ isSidebarToggled: !isSidebarToggled })); }; renderToggleButton = (label) => { if (!this.props.children) return null; return ( <button hidden type="button" className="sui-layout-sidebar-toggle" onClick={this.toggleSidebar} > {label} </button> ); }; render() { const { className, children } = this.props; const { isSidebarToggled } = this.state; const classes = appendClassName( className, isSidebarToggled ? `${className}--toggled` : null ); return ( <> {this.renderToggleButton("Show Filters")} <div className={classes}> {this.renderToggleButton("Save Filters")} {children} </div> </> ); } } export default LayoutSidebar;