Add default search term in Searchable

Summary: Add a way to provide default search term; similar to default filters

Reviewed By: mweststrate

Differential Revision: D19449561

fbshipit-source-id: 6845ae5d2e058fe68974ac7aa8fd7b45814c2002
This commit is contained in:
Timur Valiev
2020-01-20 10:16:10 -08:00
committed by Facebook Github Bot
parent f94446310d
commit ff26deedd7

View File

@@ -113,6 +113,7 @@ type Props = {
columns?: TableColumns;
onFilterChange: (filters: Array<Filter>) => void;
defaultFilters: Array<Filter>;
defaultSearchTerm: string;
allowRegexSearch: boolean;
allowBodySearch: boolean;
};
@@ -148,7 +149,7 @@ const Searchable = (
state: State = {
filters: this.props.defaultFilters || [],
focusedToken: -1,
searchTerm: '',
searchTerm: this.props.defaultSearchTerm ?? '',
hasFocus: false,
regexEnabled: false,
bodySearchEnabled: false,
@@ -235,8 +236,10 @@ 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];
} else {
let mergedFilters = this.state.filters;
if (prevProps.defaultFilters !== this.props.defaultFilters) {
mergedFilters = [...this.state.filters];
this.props.defaultFilters.forEach((defaultFilter: Filter) => {
const filterIndex = mergedFilters.findIndex(
(f: Filter) => f.key === defaultFilter.key,
@@ -247,8 +250,17 @@ const Searchable = (
mergedFilters.push(defaultFilter);
}
});
}
let newSearchTerm = this.state.searchTerm;
if (
prevProps.defaultSearchTerm !== this.props.defaultSearchTerm ||
prevProps.defaultFilters !== this.props.defaultFilters
) {
newSearchTerm = this.props.defaultSearchTerm;
}
this.setState({
filters: mergedFilters,
searchTerm: newSearchTerm,
});
}
}