const { __ } = wp.i18n; const { Toolbar, withAPIData, Dropdown } = wp.components; /** * When the display mode is 'Product category' search for and select product categories to pull products from. */ export class ProductsCategorySelect extends React.Component { /** * Constructor. */ constructor( props ) { super( props ); this.state = { selectedCategories: props.selected_display_setting, filterQuery: '' } this.checkboxChange = this.checkboxChange.bind( this ); this.filterResults = this.filterResults.bind( this ); } /** * Handle checkbox toggle. * * @param Event object evt */ checkboxChange( evt ) { let selectedCategories = this.state.selectedCategories; if ( evt.target.checked && ! selectedCategories.includes( parseInt( evt.target.value, 10 ) ) ) { selectedCategories.push( parseInt( evt.target.value, 10 ) ); } else if ( ! evt.target.checked ) { selectedCategories = selectedCategories.filter( category => category !== parseInt( evt.target.value, 10 ) ); } this.setState( { selectedCategories: selectedCategories } ); this.props.update_display_setting_callback( selectedCategories ); } /** * Filter categories. * * @param Event object evt */ filterResults( evt ) { this.setState( { filterQuery: evt.target.value } ); } /** * Render the list of categories and the search input. */ render() { return (