Add a filter chip
const [activeFilters, setActiveFilters] = useState<string[]>([]);
const addFilter = () => {
const randomFilter = `Filter ${Math.floor(Math.random() * 100)}`;
if (!activeFilters.includes(randomFilter)) {
setActiveFilters((prevFilters) => [...prevFilters, randomFilter]);
}
};
const removeFilter = (filter: string) => {
setActiveFilters((prevFilters) => prevFilters.filter((f) => f !== filter));
};<div>
{activeFilters.map((filter) => (
<GoabFilterChip
key={filter}
content={filter}
onClick={() => removeFilter(filter)}
mr="s"
mb="s"
mt="s"
/>
))}
</div>
<GoabButton mt="l" onClick={addFilter}>Add Random Filter</GoabButton>Allow users to apply filters using selectable chips, which visually represent active filters and can be removed to update results dynamically.
When to use
Use this pattern when:
- Users need to apply multiple filters to a dataset
- Filters should be visible and easily removable
- You want to show active filter state clearly
Considerations
- Each chip should clearly indicate what filter it represents
- Provide visual feedback when adding/removing filters
- Consider the order of chips (most recent, alphabetical, etc.)