import React from "react"; import PropTypes from "prop-types"; import { Grid, Sidebar, Button, Segment } from "semantic-ui-react"; export class GridResponsiveSidebarColumn extends React.Component { render() { const closeSidebarBtnRef = React.createRef(); const { mobile, tablet, computer, widescreen, largeScreen, width, open, onHideClick, children, } = this.props; return ( <> <Grid.Column mobile={mobile} tablet={tablet} width={width} only="mobile tablet"> <Sidebar as={Segment} animation="overlay" visible={open} width="wide" onHide={onHideClick} onShow={() => closeSidebarBtnRef.current.focus()} > <Button basic icon="close" size="small" floated="right" onClick={onHideClick} aria-label="Close filter" ref={closeSidebarBtnRef} className="mb-20" /> {children} </Sidebar> </Grid.Column> <Grid.Column width={width} only="computer" computer={computer} largeScreen={largeScreen} widescreen={widescreen} > {children} </Grid.Column> </> ); } } GridResponsiveSidebarColumn.propTypes = { width: PropTypes.number, open: PropTypes.bool.isRequired, onHideClick: PropTypes.func.isRequired, children: PropTypes.any.isRequired, mobile: PropTypes.number, tablet: PropTypes.number, computer: PropTypes.number, largeScreen: PropTypes.number, widescreen: PropTypes.number, }; GridResponsiveSidebarColumn.defaultProps = { width: 4, mobile: undefined, tablet: undefined, computer: undefined, widescreen: undefined, largeScreen: undefined, };