UNPKG

ndla-ui

Version:

UI component library for NDLA.

48 lines (41 loc) 1.13 kB
import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; class SearchFilterWrapper extends Component { constructor(props) { super(props); this.state = { allValues: props.values, }; this.changedFilter = this.changedFilter.bind(this); } componentWillReceiveProps(nextProps) { if (!nextProps.isNarrowScreen && this.props.isNarrowScreen) { this.props.onChange(this.state.allValues); } } changedFilter(changes, key) { const { allValues } = this.state; allValues[key] = changes; this.setState({ allValues, }); // If allowed to pass on if (!this.props.isNarrowScreen) { this.props.onChange(allValues); } } render() { return ( <Fragment> {this.props.children(this.changedFilter, this.state.allValues)} </Fragment> ); } } SearchFilterWrapper.propTypes = { children: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired, values: PropTypes.objectOf(PropTypes.arrayOf(PropTypes.string)), isNarrowScreen: PropTypes.bool.isRequired, }; export default SearchFilterWrapper;