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}
/>