Skip to content

Commit b98a8c8

Browse files
committed
feat: expose generic type, class name prop for FilterChips
1 parent f7ee9ac commit b98a8c8

File tree

2 files changed

+38
-20
lines changed

2 files changed

+38
-20
lines changed

src/Shared/Components/FilterChips/FilterChips.component.tsx

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,37 @@ const FilterChip = ({
1818
const valueToDisplay = getFormattedValue(label, value) ?? value
1919

2020
return (
21-
<div className="flexbox flex-align-center br-4 dc__border dc__bg-n50 pl-6 pr-6 pt-2 pb-2 dc__user-select-none h-24 dc__gap-6 fs-12 lh-20 cn-9 fw-4 dc__ellipsis-right">
22-
<span className="fw-6 dc__capitalize">{labelToDisplay}</span>
23-
<span className="dc__divider h-24" />
24-
<span className="dc__ellipsis-right">{valueToDisplay}</span>
25-
<button
26-
type="button"
27-
className="flex p-0 dc__transparent"
28-
onClick={removeFilter}
29-
aria-label="Remove filter"
30-
>
31-
<CloseIcon className="icon-dim-12 icon-use-fill-n6" />
32-
</button>
33-
</div>
21+
labelToDisplay &&
22+
valueToDisplay && (
23+
<div className="flexbox flex-align-center br-4 dc__border dc__bg-n50 pl-6 pr-6 pt-2 pb-2 dc__user-select-none h-24 dc__gap-6 fs-12 lh-20 cn-9 fw-4 dc__ellipsis-right">
24+
<span className="fw-6 dc__capitalize">{labelToDisplay}</span>
25+
<span className="dc__divider h-24" />
26+
<span className="dc__ellipsis-right">{valueToDisplay}</span>
27+
<button
28+
type="button"
29+
className="flex p-0 dc__transparent"
30+
onClick={removeFilter}
31+
aria-label="Remove filter"
32+
>
33+
<CloseIcon className="icon-dim-12 icon-use-fill-n6" />
34+
</button>
35+
</div>
36+
)
3437
)
3538
}
3639

3740
/**
3841
* Component for rendering the applied filter chips
3942
*/
40-
const FilterChips = ({
43+
const FilterChips = <T,>({
4144
filterConfig,
4245
clearFilters,
4346
onRemoveFilter,
4447
getFormattedLabel,
4548
getFormattedValue,
46-
}: FilterChipsProps) => {
49+
className = '',
50+
clearButtonClassName = '',
51+
}: FilterChipsProps<T>) => {
4752
const handleRemoveFilter = (filterKey, valueToRemove) => {
4853
const updatedFilterConfig = JSON.parse(JSON.stringify(filterConfig))
4954
if (Array.isArray(filterConfig[filterKey])) {
@@ -63,7 +68,7 @@ const FilterChips = ({
6368

6469
return (
6570
chips.length > 0 && (
66-
<div className="flexbox pt-6 pb-6 flex-wrap dc__gap-8">
71+
<div className={`flexbox pt-6 pb-6 flex-wrap dc__gap-8 ${className}`}>
6772
{chips.map(([filterKey, filterValue]) =>
6873
Array.isArray(filterValue) ? (
6974
filterValue.map((filter) => (
@@ -88,7 +93,11 @@ const FilterChips = ({
8893
),
8994
)}
9095
<div className="flex">
91-
<button type="button" className="cta text fs-13-imp lh-20-imp h-20 p-0-imp" onClick={clearFilters}>
96+
<button
97+
type="button"
98+
className={`cta text fs-13-imp lh-20-imp h-20 p-0-imp ${clearButtonClassName}`}
99+
onClick={clearFilters}
100+
>
92101
Clear All Filters
93102
</button>
94103
</div>

src/Shared/Components/FilterChips/types.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,26 @@ export interface FilterChipProps {
2323
getFormattedValue?: (filterKey: string, filterValue: unknown) => ReactNode
2424
}
2525

26-
export interface FilterChipsProps extends Pick<FilterChipProps, 'getFormattedLabel' | 'getFormattedValue'> {
26+
export interface FilterChipsProps<T = Record<string, unknown>>
27+
extends Pick<FilterChipProps, 'getFormattedLabel' | 'getFormattedValue'> {
2728
/**
2829
* Current filter configuration
2930
*/
30-
filterConfig: Record<string, unknown>
31+
filterConfig: T
3132
/**
3233
* Callback handler for removing the filters
3334
*/
3435
clearFilters: () => void
3536
/**
3637
* Handler for removing a applied filter
3738
*/
38-
onRemoveFilter: (filterConfig: Record<string, unknown>) => void
39+
onRemoveFilter: (filterConfig: T) => void
40+
/**
41+
* Class name for the container
42+
*/
43+
className?: string
44+
/**
45+
* Class name for the clear filter button
46+
*/
47+
clearButtonClassName?: string
3948
}

0 commit comments

Comments
 (0)