openreplay/frontend/app/components/hocs/withToggle.js
2021-05-01 15:12:01 +05:30

20 lines
539 B
JavaScript

const withToggle = (stateName = 'open', handlerName = 'switchOpen', initial = false) => BaseComponent =>
class extends React.Component {
state = {
toggle: initial,
};
onToggle = state => this.setState({
toggle: typeof state === 'boolean' ? state : !this.state.toggle,
})
render() {
const newProps = {
[ handlerName ]: this.onToggle,
[ stateName ]: this.state.toggle,
};
return <BaseComponent { ...newProps } { ...this.props } />;
}
};
export default withToggle;