From a4d0c0fcad4c672bbba59cf2ba9c26bcb0b691a4 Mon Sep 17 00:00:00 2001 From: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com> Date: Tue, 29 Jun 2021 11:47:28 +0300 Subject: [PATCH] :bug: Fix keyboard shortcut issues (#1934) * fix keyboard shortcut issues * remove duplicate check * remove duplicate check --- packages/editor-ui/src/modules/ui.ts | 3 --- packages/editor-ui/src/views/NodeView.vue | 29 ++++++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/editor-ui/src/modules/ui.ts b/packages/editor-ui/src/modules/ui.ts index 9fbe35fb3..a5681f4a8 100644 --- a/packages/editor-ui/src/modules/ui.ts +++ b/packages/editor-ui/src/modules/ui.ts @@ -31,9 +31,6 @@ const module: Module = { isModalActive: (state: IUiState) => { return (name: string) => state.modalStack.length > 0 && name === state.modalStack[0]; }, - anyModalsOpen: (state: IUiState) => { - return state.modalStack.length > 0; - }, sidebarMenuCollapsed: (state: IUiState): boolean => state.sidebarMenuCollapsed, }, mutations: { diff --git a/packages/editor-ui/src/views/NodeView.vue b/packages/editor-ui/src/views/NodeView.vue index 617aabcb4..7904b4eb0 100644 --- a/packages/editor-ui/src/views/NodeView.vue +++ b/packages/editor-ui/src/views/NodeView.vue @@ -514,15 +514,29 @@ export default mixins( // else which should ignore the default keybindings for (let index = 0; index < path.length; index++) { if (path[index].className && typeof path[index].className === 'string' && ( - path[index].className.includes('el-message-box') || - path[index].className.includes('el-select') || path[index].className.includes('ignore-key-press') )) { return; } } - const anyModalsOpen = this.$store.getters['ui/anyModalsOpen']; - if (anyModalsOpen) { + + // el-dialog or el-message-box element is open + if (window.document.body.classList.contains('el-popup-parent--hidden')) { + return; + } + + if (e.key === 'Escape') { + this.createNodeActive = false; + if (this.activeNode) { + this.$externalHooks().run('dataDisplay.nodeEditingFinished'); + this.$store.commit('setActiveNode', null); + } + + return; + } + + // node modal is open + if (this.activeNode) { return; } @@ -533,15 +547,12 @@ export default mixins( e.preventDefault(); this.callDebounced('deleteSelectedNodes', 500); - } else if (e.key === 'Escape') { - this.$externalHooks().run('dataDisplay.nodeEditingFinished'); - this.createNodeActive = false; - this.$store.commit('setActiveNode', null); + } else if (e.key === 'Tab') { this.createNodeActive = !this.createNodeActive && !this.isReadOnly; } else if (e.key === this.controlKeyCode) { this.ctrlKeyPressed = true; - } else if (e.key === 'F2') { + } else if (e.key === 'F2' && !this.isReadOnly) { const lastSelectedNode = this.lastSelectedNode; if (lastSelectedNode !== null) { this.callDebounced('renameNodePrompt', 1500, lastSelectedNode.name);