StandardFacet | Yext Hitchhikers Platform
Check out this Storybook to visualize and test this component.
The <StandardFacet />
component can only be used within the <Facets />
parent component and allows users to single-out a specified facet in order to edit it.
For more information on facets, check out the Facets and Filters unit as well as the Facets component documentation.
Basic Example
To make a field eligible as a facet, we need to make sure it’s set as a facet in the searchableFields
attribute in the search configuration. This exposes the field in the API response and allows facets to be applied on that field. For example:
{
"verticals": {
"products": {
"entityTypes": ["product"],
"searchableFields": {
"c_color": {
"facet": true
},
"c_size": {
"facet": true
}
}
}
}
}
Once that’s done, you can use the <StandardFacet />
component within the <Facets />
parent component. The main reason you’d want to do this is if you want to override the default properties for an individual facet but not the others.
import { useSearchActions } from "@yext/search-headless-react";
import {
SearchBar,
StandardCard,
VerticalResults,
Facets,
StandardFacet,
} from "@yext/search-ui-react";
import { useEffect } from "react";
function App() {
const searchActions = useSearchActions();
useEffect(() => {
searchActions.setVertical("products");
}, []);
return (
<div className="flex justify-center px-4 py-6">
<div className="w-full max-w-5xl">
<SearchBar />
<div className="flex">
<div>
<Facets>
<StandardFacet
fieldId="c_size"
defaultExpanded={false}
label={"Dimensions"}
/>
</Facets>
</div>
<VerticalResults CardComponent={StandardCard} />
</div>
</div>
</div>
);
}
export default App;
In the above example, we override the defaultExpanded
and label
properties only for the size
facet.
Transforming Facet Options
The <StandardFacet />
component also exposes a prop to transform the facet options. You might use this prop if you wanted to change the display order of the options, or add/remove a prefix to the option names.
Here’s an example where we sort the options to display in alphabetical order using the transformOptions
prop:
<Facets>
<StandardFacet
fieldId="color"
transformOptions={(options: DisplayableFacet["options"]) =>
[...options].sort((a, b) =>
a.displayName.localeCompare(b.displayName)
)
}
/>
</Facets>
Customizations
Like the rest of our components, you can customize the elements of the Standard Facet using the customCssClasses
prop.
Component API
Check out the component properties in the Search UI React Github repo .