From 274d71cb2f77bb8a41a30b039c721e26ac0cfebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20B=C3=BCchele?= Date: Mon, 12 Nov 2018 02:23:19 -0800 Subject: [PATCH] update default filters Summary: Searchbar didn't update the filters when new default filters were added. This adds the new filters when they are added to the searchbar. Existing filters are not touched. Reviewed By: passy Differential Revision: D12999885 fbshipit-source-id: 51d9a1579724be2098b54161b39a0769180fb343 --- src/ui/components/searchable/Searchable.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ui/components/searchable/Searchable.js b/src/ui/components/searchable/Searchable.js index cad952f66..9f9a83db9 100644 --- a/src/ui/components/searchable/Searchable.js +++ b/src/ui/components/searchable/Searchable.js @@ -107,7 +107,7 @@ const Searchable = ( placeholder: 'Search...', }; - state = { + state: State = { filters: this.props.defaultFilters || [], focusedToken: -1, searchTerm: '', @@ -176,6 +176,21 @@ const Searchable = ( if (this.props.onFilterChange != null) { this.props.onFilterChange(this.state.filters); } + } else if (prevProps.defaultFilters !== this.props.defaultFilters) { + const mergedFilters = [...this.state.filters]; + this.props.defaultFilters.forEach((defaultFilter: Filter) => { + const filterIndex = mergedFilters.findIndex( + (f: Filter) => f.key === defaultFilter.key, + ); + if (filterIndex > -1) { + mergedFilters[filterIndex] = defaultFilter; + } else { + mergedFilters.push(defaultFilter); + } + }); + this.setState({ + filters: mergedFilters, + }); } }