From 6c7643a4c34e3cde3834b04030ccd19d0feed216 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Thu, 30 Jan 2020 20:35:22 +0530 Subject: [PATCH] :sparkles: Press Escape to close modal, Enter to return. Fixes #539 --- components/collections/addCollection.vue | 1 + components/collections/addFolder.vue | 1 + components/collections/index.vue | 12 ++++++++++++ layouts/default.vue | 12 ++++++++++++ pages/index.vue | 4 ++++ 5 files changed, 30 insertions(+) diff --git a/components/collections/addCollection.vue b/components/collections/addCollection.vue index 39b7a7675..0fa8bad33 100644 --- a/components/collections/addCollection.vue +++ b/components/collections/addCollection.vue @@ -21,6 +21,7 @@ type="text" v-model="name" :placeholder="$t('my_new_collection')" + @keyup.enter="addNewCollection" /> diff --git a/components/collections/addFolder.vue b/components/collections/addFolder.vue index 1188ad495..e4b9a853c 100644 --- a/components/collections/addFolder.vue +++ b/components/collections/addFolder.vue @@ -21,6 +21,7 @@ type="text" v-model="name" :placeholder="$t('my_new_folder')" + @keyup.enter="addNewFolder" /> diff --git a/components/collections/index.vue b/components/collections/index.vue index e3ec32698..4d7b51072 100644 --- a/components/collections/index.vue +++ b/components/collections/index.vue @@ -142,6 +142,15 @@ export default { return this.$store.state.postwoman.collections; } }, + async mounted() { + this._keyListener = function(e) { + if (e.key === "Escape") { + e.preventDefault(); + this.showModalAdd = this.showModalEdit = this.showModalImportExport = this.showModalAddFolder = this.showModalEditFolder = this.showModalEditRequest = false; + } + }; + document.addEventListener("keydown", this._keyListener.bind(this)); + }, methods: { displayModalAdd(shouldDisplay) { this.showModalAdd = shouldDisplay; @@ -216,6 +225,9 @@ export default { } } } + }, + beforeDestroy() { + document.removeEventListener("keydown", this._keyListener); } }; diff --git a/layouts/default.vue b/layouts/default.vue index fe51cccd1..0e44bca59 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -801,6 +801,14 @@ export default { }); }, 15000); } + + this._keyListener = function(e) { + if (e.key === "Escape") { + e.preventDefault(); + this.showExtensions = this.showShortcuts = this.showSupport = false; + } + }; + document.addEventListener("keydown", this._keyListener.bind(this)); })(); window.addEventListener("scroll", event => { @@ -841,6 +849,10 @@ export default { availableLocales() { return this.$i18n.locales.filter(i => i.code !== this.$i18n.locale); } + }, + + beforeDestroy() { + document.removeEventListener("keydown", this._keyListener); } }; diff --git a/pages/index.vue b/pages/index.vue index d0095e695..f3a5e56ae 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -2856,6 +2856,10 @@ export default { } else if (e.key === "j" && (e.ctrlKey || e.metaKey)) { e.preventDefault(); this.$refs.clearAll.click(); + } else if (e.key === "Escape") { + e.preventDefault(); + this.showModal = this.showTokenList = this.showTokenRequestList = this.showRequestModal = false; + this.isHidden = true; } }; document.addEventListener("keydown", this._keyListener.bind(this));