diff --git a/libs/barista-components/filter-field/src/filter-field.spec.ts b/libs/barista-components/filter-field/src/filter-field.spec.ts index e332cf930f..9fda5852fd 100644 --- a/libs/barista-components/filter-field/src/filter-field.spec.ts +++ b/libs/barista-components/filter-field/src/filter-field.spec.ts @@ -252,6 +252,20 @@ describe('DtFilterField', () => { }); }); + describe('focus loss', () => { + it('should clear the current input value', fakeAsync(() => { + const input = fixture.debugElement.query(By.css('.dt-filter-field-input')) + .nativeElement; + + filterField.focus(); + typeIntoFilterElement('foo'); + input.blur(); + tick(); + + expect(input.value).toBe(''); + })); + }); + describe('disabled', () => { it('should disable the input if filter field is disabled', () => { // when diff --git a/libs/barista-components/filter-field/src/filter-field.ts b/libs/barista-components/filter-field/src/filter-field.ts index 6c7162d7c6..3908df3d88 100644 --- a/libs/barista-components/filter-field/src/filter-field.ts +++ b/libs/barista-components/filter-field/src/filter-field.ts @@ -530,6 +530,10 @@ export class DtFilterField // Assign the currently open filter field when it is focused. if (this._isFocused) { currentlyOpenFilterField = this; + } else { + // Clear pending input values on focus loss to communicate that the input + // wasn't applied as a filter + this._writeInputValue(''); } });