Skip to content

ToggleFilterButton

Enables or disable a particular filter in a list view.

Toggle filter button

Use it in the sidebar of a <List> view to toggle predefined filters:

import { ToggleFilterButton, SearchInput } from '@/components/admin';
import { FilterLiveForm, Translate } from 'ra-core';
const ProductFilters = () => (
<div className="min-w-48 hidden md:block">
<FilterLiveForm>
<SearchInput />
</FilterLiveForm>
<FilterCategory label="Sales" icon={<DollarSign />}>
<ToggleFilterButton
label="Best Sellers"
value={{ sales_lte: undefined, sales_gt: 25, sales: undefined }}
/>
<ToggleFilterButton
label="Average Sellers"
value={{ sales_lte: 25, sales_gt: 10, sales: undefined }}
/>
<ToggleFilterButton
label="Low Sellers"
value={{ sales_lte: 10, sales_gt: 0,
sales: undefined }}
/>
<ToggleFilterButton
label="Never Sold"
value={{ sales_lte: undefined, sales_gt: undefined, sales: 0 }}
/>
</FilterCategory>
<FilterCategory label="Stock" icon={<ChartNoAxesColumn/>}>
<ToggleFilterButton
label="No Stock"
value={{ stock_lt: undefined, stock_gt: undefined, stock: 0 }}
/>
<ToggleFilterButton
label="Low Stock"
value={{ stock_lt: 10, stock_gt: 0, stock: undefined }}
/>
<ToggleFilterButton
label="Average Stock"
value={{ stock_lt: 50, stock_gt: 9, stock: undefined }}
/>
<ToggleFilterButton
label="Enough Stock"
value={{ stock_lt: undefined, stock_gt: 49, stock: undefined }}
/>
</FilterCategory>
</div>
);
const FilterCategory = ({
icon,
label,
children,
}: {
icon: ReactNode;
label: string;
children?: ReactNode;
}) => (
<>
<h3 className="flex flex-row items-center gap-2 mb-1 font-bold text-sm">
{icon}
<Translate i18nKey={label} />
</h3>
<div className="flex flex-col items-start ml-3 mb-4">{children}</div>
</>
);
PropRequiredTypeDefaultDescription
valueRequiredobject-Filter values to toggle
labelRequiredstringra.action.filtersi18n key
classNameOptionalstring-CSS classes
sizeOptionalstringsmallButton size