diff --git a/client/components/App.vue b/client/components/App.vue index cd378127..3133101f 100644 --- a/client/components/App.vue +++ b/client/components/App.vue @@ -44,6 +44,7 @@ export default { this.prepareOpenStates(); }, mounted() { + Mousetrap.bind("esc", this.escapeKey); Mousetrap.bind("alt+u", this.toggleUserList); Mousetrap.bind("alt+s", this.toggleSidebar); @@ -64,6 +65,7 @@ export default { this.dayChangeTimeout = setTimeout(emitDayChange, this.msUntilNextDay()); }, beforeDestroy() { + Mousetrap.unbind("esc", this.escapeKey); Mousetrap.unbind("alt+u", this.toggleUserList); Mousetrap.unbind("alt+s", this.toggleSidebar); @@ -71,6 +73,9 @@ export default { clearTimeout(this.dayChangeTimeout); }, methods: { + escapeKey() { + this.$root.$emit("escapekey"); + }, toggleSidebar(e) { // Do not handle this keybind in the chat input because // it can be used to type letters with umlauts diff --git a/client/components/ChatInput.vue b/client/components/ChatInput.vue index 481575e1..63732206 100644 --- a/client/components/ChatInput.vue +++ b/client/components/ChatInput.vue @@ -101,6 +101,8 @@ export default { }, }, mounted() { + this.$root.$on("escapekey", this.blurInput); + if (this.$store.state.settings.autocomplete) { autocompletionRef = autocompletion(this.$refs.input); } @@ -161,6 +163,8 @@ export default { } }, destroyed() { + this.$root.$off("escapekey", this.blurInput); + if (autocompletionRef) { autocompletionRef.destroy(); autocompletionRef = null; @@ -255,6 +259,9 @@ export default { openFileUpload() { this.$refs.uploadInput.click(); }, + blurInput() { + this.$refs.input.blur(); + }, }, }; diff --git a/client/components/ContextMenu.vue b/client/components/ContextMenu.vue index 75b484f2..f060bb0d 100644 --- a/client/components/ContextMenu.vue +++ b/client/components/ContextMenu.vue @@ -38,7 +38,6 @@