Signature
Import
About this widget
ThetoggleRefinement
widget provides an on/off filtering feature based on an attribute value.
Requirements
Ensure that the attribute provided is already declared as an attribute for faceting.Examples
JavaScript
Options
The CSS Selector or
HTMLElement
to insert the widget into.The name of the attribute on which apply the refinement.To avoid unexpected behavior, you can’t use the same
attribute
prop in a different type of widget.JavaScript
The value of the refinement to apply on the attribute when checked.
The value of the refinement to apply on the attribute when unchecked.
The CSS classes you can override:
root
. The root element of the widget.label
. The label of the toggle.checkbox
. The checkbox element of the toggle.labelText
. The label text of the toggle.
JavaScript
Templates
You can customize parts of a widget’s UI using the Templates API. Each template includes anhtml
function,
which you can use as a tagged template.
This function safely renders templates as HTML strings and works directly in the browser—no build step required.
For details, see Templating your UI.
The
html
function is available in InstantSearch.js version 4.46.0 or later.The template to use to customize the label. It exposes:
isRefined: boolean
. Indicates whether the checkbox is checked.count: number
. Shows the number of results after the refinement was applied.onFacetValue: object
. Describes the value for the attribute. It containscount
(useful to get the raw value of the count).offFacetValue: object
. Describes the value for the attribute. It containscount
(useful to get the raw value of the count).
HTML output
HTML
Customize the UI with connectToggleRefinement
If you want to create your own UI of the toggleRefinement
widget, you can use connectors.
To use connectToggleRefinement
, you can import it with the declaration relevant to how you installed InstantSearch.js.
JavaScript
Create a render function
This rendering function is called before the first search (init
lifecycle step)
and each time results come back from Algolia (render
lifecycle step).
JavaScript
Rendering options
The current refinement, with:
isRefined: boolean
. Indicates whether the checkbox is checked.count: number
. Shows the number of results after the refinement was applied.onFacetValue: object
. Describes the value for the attribute. It containscount
(useful to get the raw value of the count).offFacetValue: object
. Describes the value for the attribute. It containscount
(useful to get the raw value of the count).
JavaScript
Indicates if search state can be refined.
JavaScript
Updates to the next state by applying the toggle refinement.
JavaScript
The function to send
click
events.
The click
event is automatically sent when refine
is called.
To learn more, see the insights
middleware.eventType: 'click'
facetValue: string
JavaScript
Generates a URL for the next state.
JavaScript
All original widget options forwarded to the render function.
JavaScript
Create and instantiate the custom widget
First, create your custom widgets using a rendering function. Then, instantiate them with parameters. There are two kinds of parameters you can pass:- Instance parameters. Predefined options that configure Algolia’s behavior.
- Custom parameters. Parameters you define to make the widget reusable and adaptable.
renderFunction
, both instance and custom parameters are accessible through connector.widgetParams
.
TSX
Instance options
The name of the attribute on which to apply the refinement.To avoid unexpected behavior, you can’t use the same
attribute
prop in a different type of widget.JavaScript
The value of the refinement to apply on the attribute when checked.
The value of the refinement to apply on the attribute when unchecked.