From ddc267418a68ca39f1d6f3dfa258d5fcf492603c Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Tue, 8 Jun 2021 18:44:37 +0200 Subject: [PATCH] Fix filter with default value false is not working Closes #6269 --- .../admin/resource/list/queryReducer.spec.ts | 14 ++++++++++++++ .../reducer/admin/resource/list/queryReducer.ts | 15 ++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/ra-core/src/reducer/admin/resource/list/queryReducer.spec.ts b/packages/ra-core/src/reducer/admin/resource/list/queryReducer.spec.ts index 3e8d71d5240..09fa269a0ec 100644 --- a/packages/ra-core/src/reducer/admin/resource/list/queryReducer.spec.ts +++ b/packages/ra-core/src/reducer/admin/resource/list/queryReducer.spec.ts @@ -100,6 +100,20 @@ describe('Query Reducer', () => { }); }); + it('should work with false default value', () => { + const updatedState = queryReducer( + { filter: {}, displayedFilters: {} }, + { + type: 'SHOW_FILTER', + payload: { filterName: 'foo', defaultValue: false }, + } + ); + expect(updatedState.filter).toEqual({ foo: false }); + expect(updatedState.displayedFilters).toEqual({ + foo: true, + }); + }); + it('should work without default value', () => { const updatedState = queryReducer( { diff --git a/packages/ra-core/src/reducer/admin/resource/list/queryReducer.ts b/packages/ra-core/src/reducer/admin/resource/list/queryReducer.ts index 4660c00ec90..9892d00ecad 100644 --- a/packages/ra-core/src/reducer/admin/resource/list/queryReducer.ts +++ b/packages/ra-core/src/reducer/admin/resource/list/queryReducer.ts @@ -99,13 +99,14 @@ const queryReducer: Reducer = ( } return { ...previousState, - filter: action.payload.defaultValue - ? set( - previousState.filter, - action.payload.filterName, - action.payload.defaultValue - ) - : previousState.filter, + filter: + typeof action.payload.defaultValue !== 'undefined' + ? set( + previousState.filter, + action.payload.filterName, + action.payload.defaultValue + ) + : previousState.filter, // we don't use lodash.set() for displayed filters // to avoid problems with compound filter names (e.g. 'author.name') displayedFilters: {