From d60e48a0f5f5db2b1e0b869ace39e92be65e29e8 Mon Sep 17 00:00:00 2001 From: Steve-Mcl Date: Sun, 29 Jun 2025 11:37:52 +0100 Subject: [PATCH] Prevent esc of monaco widgets bubbling up to edit form scope closes #5200 --- .../src/js/ui/editors/code-editors/monaco.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/code-editors/monaco.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/code-editors/monaco.js index b35e60d50..310fe8f82 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/code-editors/monaco.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/code-editors/monaco.js @@ -1426,6 +1426,15 @@ RED.editor.codeEditor.monaco = (function() { ed.gotoLine(row, col); } ed.type = type; + + ed.onKeyDown((event) => { + if (event.keyCode === monaco.KeyCode.Escape) { + if (monacoWidgetsAreOpen(ed)) { + event.preventDefault(); + } + } + }) + return ed; } @@ -1435,6 +1444,16 @@ RED.editor.codeEditor.monaco = (function() { return true; } + function monacoWidgetsAreOpen(editor) { + /** @type {HTMLElement} */ + const editorDomNode = editor.getDomNode() + const suggestVisible = !!editorDomNode.querySelector('.monaco-editor .suggest-widget.visible'); + const parameterHintsVisible = !!editorDomNode.querySelector('.monaco-editor .parameter-hints-widget.visible'); + const findWidgetVisible = !!editorDomNode.querySelector('.monaco-editor .find-widget.visible'); + const renameInputVisible = !!editorDomNode.querySelector('.monaco-editor .rename-box'); + return suggestVisible || parameterHintsVisible || findWidgetVisible || renameInputVisible + } + return { /** * Editor type