From 891948251161268880bb32b60bc9e5d343a846e6 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 4 Apr 2024 23:31:31 -0700 Subject: [PATCH] Blur search field on escape if empty --- .../global-search/global-search.component.spec.ts | 8 ++++++++ .../app-frame/global-search/global-search.component.ts | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts index 0755d9900..7d5d628a4 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.spec.ts @@ -232,11 +232,19 @@ describe('GlobalSearchComponent', () => { component.searchInputKeyDown(new KeyboardEvent('keydown', { key: 'Enter' })) expect(primaryActionSpy).toHaveBeenCalled() + component.query = 'test' const resetSpy = jest.spyOn(GlobalSearchComponent.prototype as any, 'reset') component.searchInputKeyDown( new KeyboardEvent('keydown', { key: 'Escape' }) ) expect(resetSpy).toHaveBeenCalled() + + component.query = '' + const blurSpy = jest.spyOn(component.searchInput.nativeElement, 'blur') + component.searchInputKeyDown( + new KeyboardEvent('keydown', { key: 'Escape' }) + ) + expect(blurSpy).toHaveBeenCalled() }) it('should search on query debounce', fakeAsync(() => { diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts index 213243056..f05192b5b 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts @@ -265,7 +265,11 @@ export class GlobalSearchComponent implements OnInit { ) { this.primaryButtons.first.nativeElement.click() } else if (event.key === 'Escape' && !this.resultsDropdown.isOpen()) { - this.reset(true) + if (this.query?.length) { + this.reset(true) + } else { + this.searchInput.nativeElement.blur() + } } }