8
8
formatMessage ,
9
9
} from "@maykin-ui/admin-ui" ;
10
10
import React , { useCallback , useMemo } from "react" ;
11
- import { useNavigation } from "react-router-dom" ;
11
+ import { useNavigation , useSearchParams } from "react-router-dom" ;
12
12
13
13
import { DestructionListToolbar } from "../../../components" ;
14
14
import {
@@ -90,6 +90,7 @@ export function BaseListView<T extends Zaak = Zaak>({
90
90
onSelectionChange,
91
91
} : BaseListViewProps < T > ) {
92
92
const { state } = useNavigation ( ) ;
93
+ const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
93
94
const [ page , setPage ] = usePage ( ) ;
94
95
const [ sort , setSort ] = useSort ( ) ;
95
96
@@ -108,7 +109,7 @@ export function BaseListView<T extends Zaak = Zaak>({
108
109
type FilterTransformData = ReturnType < typeof filterTransform > ;
109
110
110
111
// Filter.
111
- const [ , setFilterField ] = useFilter < FilterTransformData > ( ) ;
112
+ const [ setFilterField ] = useFilter < FilterTransformData > ( ) ;
112
113
113
114
// Selection.
114
115
const [
@@ -153,6 +154,19 @@ export function BaseListView<T extends Zaak = Zaak>({
153
154
onClearZaakSelection ?.( ) ;
154
155
} ;
155
156
157
+ const resetFilters = ( ) => {
158
+ const filterLookupValues = fields
159
+ . filter ( ( field ) => field . filterLookup )
160
+ . map ( ( field ) => field . filterLookup )
161
+ // We perform a `flatMap` to handle multiple filter lookups within one field
162
+ . flatMap ( ( filterLookup ) => filterLookup ?. split ( "," ) ) ;
163
+ const newSearchParams = new URLSearchParams ( searchParams ) ;
164
+ filterLookupValues . forEach ( ( filterLookup ) => {
165
+ if ( ! filterLookup ) return ;
166
+ newSearchParams . delete ( filterLookup ) ;
167
+ } ) ;
168
+ setSearchParams ( newSearchParams ) ;
169
+ } ;
156
170
// Selection actions.
157
171
const getSelectionActions = useCallback ( ( ) => {
158
172
const disabled = selectable && hasSelection ;
@@ -176,7 +190,18 @@ export function BaseListView<T extends Zaak = Zaak>({
176
190
} ,
177
191
] as ButtonProps [ ] )
178
192
: [ ] ;
179
- return [ ...dynamicItems , ...fixedItems ] ;
193
+ const clearFiltersItem = {
194
+ children : (
195
+ < >
196
+ < Solid . XCircleIcon />
197
+ Filters wissen
198
+ </ >
199
+ ) ,
200
+ variant : "warning" ,
201
+ wrap : false ,
202
+ onClick : resetFilters ,
203
+ } ;
204
+ return [ ...dynamicItems , ...fixedItems , clearFiltersItem ] ;
180
205
} , [ selectable , hasSelection , selectedZakenOnPage , selectionActions ] ) ;
181
206
182
207
return (
0 commit comments