@@ -229,14 +229,13 @@ export const filterFactory = _ => (filterType) => {
229229 return filterFn ;
230230} ;
231231
232- export const filters = ( data , columns , _ ) => ( currFilters ) => {
232+ export const filters = ( data , columns , _ ) => ( currFilters , clearFilters = { } ) => {
233233 const factory = filterFactory ( _ ) ;
234+ const filterState = { ...clearFilters , ...currFilters } ;
234235 let result = data ;
235236 let filterFn ;
236- Object . keys ( currFilters ) . forEach ( ( dataField ) => {
237+ Object . keys ( filterState ) . forEach ( ( dataField ) => {
237238 let currentResult ;
238- const filterObj = currFilters [ dataField ] ;
239- filterFn = factory ( filterObj . filterType ) ;
240239 let filterValue ;
241240 let customFilter ;
242241 for ( let i = 0 ; i < columns . length ; i += 1 ) {
@@ -248,13 +247,23 @@ export const filters = (data, columns, _) => (currFilters) => {
248247 break ;
249248 }
250249 }
251- if ( customFilter ) {
252- currentResult = customFilter ( filterObj . filterVal , result ) ;
253- }
254- if ( typeof currentResult === 'undefined' ) {
255- result = filterFn ( result , dataField , filterObj , filterValue ) ;
250+
251+ if ( clearFilters [ dataField ] && customFilter ) {
252+ currentResult = customFilter ( clearFilters [ dataField ] . filterVal , result ) ;
253+ if ( typeof currentResult !== 'undefined' ) {
254+ result = currentResult ;
255+ }
256256 } else {
257- result = currentResult ;
257+ const filterObj = filterState [ dataField ] ;
258+ filterFn = factory ( filterObj . filterType ) ;
259+ if ( customFilter ) {
260+ currentResult = customFilter ( filterObj . filterVal , result ) ;
261+ }
262+ if ( typeof currentResult === 'undefined' ) {
263+ result = filterFn ( result , dataField , filterObj , filterValue ) ;
264+ } else {
265+ result = currentResult ;
266+ }
258267 }
259268 } ) ;
260269 return result ;
0 commit comments