Facet
Show a Facet filter for a particular field.
Must configure the corresponding field in the SearchProvider
facets object.
Example
import { Facet } from "@elastic/react-search-ui";
import { MultiCheckboxFacet } from "@elastic/react-search-ui-views";
...
<SearchProvider config={{
...otherConfig,
searchQuery: {
facets: {
states: { type: "value", size: 30 }
}
}
}}>
{() => (
<Facet field="states" label="States" view={MultiCheckboxFacet} />
)}
</SearchProvider>
Example of an OR based Facet filter
Certain configuration of the Facet
Component will require a "disjunctive" facet to work
correctly. "Disjunctive" facets are facets that do not change when a selection is made. Meaning, all available options
will remain as selectable options even after a selection is made.
import { Facet } from "@elastic/react-search-ui";
import { MultiCheckboxFacet } from "@elastic/react-search-ui-views";
...
<SearchProvider config={{
...otherConfig,
searchQuery: {
disjunctiveFacets: ["states"],
facets: {
states: { type: "value", size: 30 }
}
}
}}>
{() => (
<Facet field="states" label="States" view={MultiCheckboxFacet} filterType="any" />
)}
</SearchProvider>
Properties
Name | Description |
---|---|
className | |
field | Field name corresponding to this filter. This requires that the corresponding field has been configured in facets on the top level Provider. |
filterType | The type of filter to apply with the selected values. I.e., should "all" of the values match, or just "any" of the values, or "none" of the values. Note: See the example above which describes using "disjunctive" facets in conjunction with filterType. |
label | A static label to show in the facet filter. |
show | The number of facet filter options to show before concatenating with a "Show more" link. |
isFilterable | Whether or not to show Facet quick filter. |
view | Used to override the default view for this Component. See View customization below. |
* | Any other property passed will be passed through and available to use in a Custom View |
View customization
A complete guide to view customization can be found in the Customization: Component views and HTML section.
The following properties are available in the view:
Name | Description |
---|---|
className | Passed through from main component. |
label | Type: string . Passed through from main component. |
onMoreClick | Type: () => void . Used for a "Show more" link. Call this to show more options. |
onRemove | Type: (value: FieldValue) => void . Call this when a user removes a facet filter selection. Pass the value from the corresponding selection from options . |
onChange | Type: (value: FieldValue) => void . Call this when a user changes a facet filter selection. Pass the value from the corresponding selection from options . |
onSelect | Type: (value: FieldValue) => void . Call this when a user adds a facet filter selection. Pass the value from the corresponding selection from options . |
options | Type: FacetValue[] . The options to show available for selection for this facet. selected property will be true if this values is selected. |
showMore | Type: boolean . Whether or not to show a "Show more" link. If there are no more options available to show, then this will be false . |
values | Type: FilterValue[] . A list of all the selected values. This can also be deduced be inspected the selected properties of the options . |
showSearch | Type: boolean . Whether or not the compopnent is isFilterable . This would indicates that a filter search box should be shown. |
onSearch | Type: (value: string) => void . Call this to filter down the facet options shown. Used if there is a search box shown in relation to showSearch . |
searchPlaceholder | Type: string . The placeholder fo show in the filter search box when showSearch is true. |
See MultiCheckboxFacet.tsx for an example.
When overriding Facet views, note that there are pre-built options that you can choose from, in addition to providing your own:
import {
BooleanFacet,
SingleSelectFacet,
SingleLinksFacet
} from "@elastic/react-search-ui-views";
// Default out-of-the-box view
<Facet
field="acres"
label="Acres"
/>
// Choose an alternate out-of-the-box view
<Facet
field="acres"
label="Acres"
view={SingleSelectFacet}
/>