diff --git a/src/popup/vault/current-tab.component.html b/src/popup/vault/current-tab.component.html
index 0d4181f5cb..5400c82cc0 100644
--- a/src/popup/vault/current-tab.component.html
+++ b/src/popup/vault/current-tab.component.html
@@ -7,7 +7,7 @@
+ [(ngModel)]="searchText" (input)="searchVault()" autocomplete="off" (keydown)="closeOnEsc($event)">
diff --git a/src/popup/vault/current-tab.component.ts b/src/popup/vault/current-tab.component.ts
index 1baa178f4d..b6ed52d7c6 100644
--- a/src/popup/vault/current-tab.component.ts
+++ b/src/popup/vault/current-tab.component.ts
@@ -231,4 +231,11 @@ export class CurrentTabComponent implements OnInit, OnDestroy {
this.loginCiphers = this.loginCiphers.sort((a, b) => this.cipherService.sortCiphersByLastUsedThenName(a, b));
this.loaded = true;
}
+
+ closeOnEsc(e: KeyboardEvent) {
+ // If input not empty, use browser default behavior of clearing input instead
+ if (e.key === 'Escape' && (this.searchText == null || this.searchText === '')) {
+ BrowserApi.closePopup(window);
+ }
+ }
}
diff --git a/src/popup/vault/groupings.component.html b/src/popup/vault/groupings.component.html
index de2f37fbcb..0aa0563202 100644
--- a/src/popup/vault/groupings.component.html
+++ b/src/popup/vault/groupings.component.html
@@ -4,7 +4,7 @@
+ [(ngModel)]="searchText" (input)="search(200)" autocomplete="off" appAutofocus (keydown)="closeOnEsc($event)">
diff --git a/src/popup/vault/groupings.component.ts b/src/popup/vault/groupings.component.ts
index 5c6c2bc79a..9d6f6f1da0 100644
--- a/src/popup/vault/groupings.component.ts
+++ b/src/popup/vault/groupings.component.ts
@@ -357,4 +357,11 @@ export class GroupingsComponent extends BaseGroupingsComponent implements OnInit
return true;
}
+
+ closeOnEsc(e: KeyboardEvent) {
+ // If input not empty, use browser default behavior of clearing input instead
+ if (e.key === 'Escape' && (this.searchText == null || this.searchText === '')) {
+ BrowserApi.closePopup(window);
+ }
+ }
}