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: {