From 56b1c111d712007415d2a541cf3634c5cf467d92 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Sat, 13 Dec 2025 21:10:59 +0000 Subject: [PATCH 1/2] let regex typedinput be expandable currently just uses Text editor - maybe one day add an actual regex test panel. --- .../src/js/ui/common/typedInput.js | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js index 9f3934552..d425469f6 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js @@ -73,7 +73,7 @@ if(match.post) { els.push($('').text(match.post)); } return els; } - + const msgAutoComplete = function(options) { return function(val) { var matches = []; @@ -230,7 +230,7 @@ contextKnownKeys[scope][store].set(keyPrefix + key, keyInfo) } else { contextKnownKeys[scope][store].set(searchKey + "[\""+key.replace(/"/,"\\\"")+"\"]", keyInfo) - } + } }) done() }) @@ -257,7 +257,7 @@ } const store = (contextStoreOptions.length === 1) ? contextStoreOptions[0].value : that.optionValue const searchKey = keyParts.join('.') - + getContextKeysFromRuntime(scope, store, searchKey, function() { if (contextKnownKeys[scope][store].has(key) || key.endsWith(']')) { getContextKeysFromRuntime(scope, store, key, function() { @@ -424,7 +424,22 @@ }) } }, - re: { value: "re", label: "regular expression", icon: "red/images/typedInput/re.svg" }, + re: { value: "re", label: "regular expression", icon: "red/images/typedInput/re.svg", + expand: function () { + var that = this; + var value = this.value(); + RED.editor.editText({ + value: value, + stateId: RED.editor.generateViewStateId("typedInput", that, "regex"), + focus: true, + complete: function (v) { + try { new RegExp(v); } + catch(err) { } + that.value(v); + } + }) + } + }, date: { value: "date", label: "timestamp", @@ -668,7 +683,7 @@ const row1Name = $('
').text(def.type) const row2Module = $('
').text(def.set.module) container.append(row1Name, row2Module) - + return { value: def.type, name: def.type, @@ -685,7 +700,7 @@ } }; - + // For a type with options, check value is a valid selection // If !opt.multiple, returns the valid option object // if opt.multiple, returns an array of valid option objects From 6f1f2442dae9b13ba5799d5ee0eb7c26fa2138d6 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Sat, 13 Dec 2025 21:49:17 +0000 Subject: [PATCH 2/2] Add title to regex editor in typedInput.js --- .../@node-red/editor-client/src/js/ui/common/typedInput.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js index d425469f6..e033bec99 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js @@ -430,6 +430,7 @@ var value = this.value(); RED.editor.editText({ value: value, + title: "Regex editor", stateId: RED.editor.generateViewStateId("typedInput", that, "regex"), focus: true, complete: function (v) {