Actions
Stack Serverless
To update the state, you can use actions below. Actions are functions that update the Request State and performs an API request.
setSearchTerm("search term");
To get access to the actions within your component, you must wrap your component with our context HOCs.
// Selects `searchTerm` and `setSearchTerm` for use in Component withSearch(({ searchTerm, setSearchTerm }) => ({ searchTerm, setSearchTerm }))(Component);
See WithSearch & withSearch for more information.
There are certain cases where you may need to apply one or more actions at a time. Search UI intelligently batches actions into a single API call.
For example, if you need to apply two filters at once, it is perfectly acceptable to write the following code:
addFilter("states", "Alaska", "any"); addFilter("world_heritage_site", "true");
This will only result in a single API call.
addFilter( name: string, value: FilterValue, type: FilterType = "all", persistent?: Boolean )
Add a filter in addition to current filters values.
addFilter("states", "Alaska"); addFilter("isPublished", true); addFilter("rating", 1); addFilter("states", ["Alaska", "California"], "all", true); addFilter("states", ["Alaska", "California"], "any", true); addFilter("published", { name: "published", from: "2020-01-01", to: "2020-12-31" }); addFilter("rating", { name: "badRating", from: 1, to: 6 });
Parameters | description |
---|---|
name | Required. Name of the field |
value | Required. Filter Value. See FilterValue type. |
type | Optional. Defaults to all . How the filter is applied. Can be one of any , all , none |
persistent | Optional. Set true, the facet filter will not be cleared when a new search is performed |
setFilter( name: string, value: FilterValue, type: FilterType = "all", persistent?: Boolean )
Set a filter value, replacing current filter values.
setFilter("states", "Alaska"); setFilter("isPublished", true); setFilter("rating", 1); setFilter("states", ["Alaska", "California"], "all", true); setFilter("states", ["Alaska", "California"], "any", true); setFilter("published", { name: "published", from: "2020-01-01", to: "2020-12-31" }); setFilter("rating", { name: "badRating", from: 1, to: 6 });
Parameters | description |
---|---|
name | Required. Name of the field |
value | Required. Filter Value. See FilterValue type. |
type | Optional. Defaults to all . How the filter is applied. Can be one of any , all , none |
persistent | Optional. Set true, the facet filter will not be cleared when a new search is performed |
Removes filters or filter values.
removeFilter( name: string, value?: FilterValue, type?: FilterType )
removeFilter("states"); removeFilter("states", ["Alaska", "California"]); removeFilter("published", { name: "published", from: "2020-01-01", to: "2020-12-31" }); removeFilter("rating", { name: "badRating", from: 1, to: 6 });
Parameters | description |
---|---|
name | Required. Name of the field |
value | Optional. Filter Value. Will remove all filters under field if value not specified. See FilterValue type. |
type | Optional. Defaults to all . How the filter is applied. Can be one of any , all , none |
Reset state to initial search state.
reset();
Clear all filters.
clearFilters(((except: string[]) = []));
clearFilters(); clearFilters(["states"]);
- field name
Parameters | description |
---|---|
except | Optional. String array. Field names which you want to ignore being cleared. |
Update the current page number. Used for paging.
setCurrent(current: number)
setCurrent(2);
Parameters | description |
---|---|
current | Required. Number type. The page number. |
Update the number of results per page. Used for paging.
setResultsPerPage(resultsPerPage: number)
setResultsPerPage(20);
Parameters | description |
---|---|
resultsPerPage | Required. Number type. Sets number of results per page. |
setSearchTerm( searchTerm: string, { autocompleteMinimumCharacters = 0, autocompleteResults = false, autocompleteSuggestions = false, shouldClearFilters = true, refresh = true, debounce = 0 }: SetSearchTermOptions = {} )
Update the search term. Also gives you the ability to control autocomplete options.
setSearchTerm("train");
Parameters | description |
---|---|
searchTerm | Required. String type. the new search term to query by |
options | Optional. Object type. See SetSearchTermOptions type. |
Parameters | description |
---|---|
autocompleteMinimumCharacters | Optional. miniumum terms to start performing autocomplete suggestions |
autocompleteResults | Optional. To perform autocomplete Results |
autocompleteSuggestions | Optional. To perform autocomplete Suggestions |
shouldClearFilters | Optional. To clear filters |
refresh | Optional. To refresh results |
debounce | Optional. |
setSort( sort: SortOption[] | string, sortDirection: SortDirection )
Update the sort option.
Parameters | description |
---|---|
sort | SortOption or String - field to sort on |
sortDirection | String - "asc" or "desc" |
trackClickThrough( documentId: string, tags: string[] = [] )
Report a clickthrough event, which is when a user clicks on a result link.
Parameters | description |
---|---|
documentId | String - The document ID associated with the result that was clicked |
tags | Optional. Array[String] Optional tags which can be used to categorize this click event |
trackAutocompleteClickThrough( documentId: string, tags: string[] = [] )
Report a clickthrough event, which is when a user clicks on an autocomplete suggestion.
Parameters | description |
---|---|
documentId | String - The document ID associated with the result that was clicked |
tags | Optional. Array[String] Optional tags which can be used to categorize this click event |
This action requires the use of the analytics plugin.
trackAutocompleteSuggestionClickThrough( suggestion: string, postion: number tags: string[] = [] )
Report a suggestion clickthrough event, which is when a user clicks on an autocomplete suggestion.
Parameters | description |
---|---|
suggestion | String - The suggestion that was clicked |
position | Number - The position of the suggestion that was clicked |
tags | Optional. Array[String] Optional tags which can be used to categorize this click event |
a11yNotify( messageFunc: string, messageArgs?: unknown )
Reads out a screen reader accessible notification. See a11yNotificationMessages
under TODO LINK
Parameters | description |
---|---|
messageFunc | String - object key to run as function |
messageArgs | Object - Arguments to pass to form your screen reader message string |
FilterValue
can be either a value type or a range type.
type FilterValue = FilterValueValue | FilterValueRange; type FieldValue = string | number | boolean | Array<string | number | boolean>; type FilterValueValue = FieldValue; type FilterValueRange = { from?: FieldValue; name: string; to?: FieldValue; }; type FilterType = "any" | "all" | "none";