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