diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
index 65b80105c..427f3ca95 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js
@@ -842,89 +842,99 @@ RED.editor = (function() {
function updateConfigNodeSelect(name,type,value,prefix,filter) {
// if prefix is null, there is no config select to update
if (prefix) {
- let inclSubflowEnvvars = false
- var select = $("#"+prefix+"-"+name);
- var node_def = RED.nodes.getType(type);
- select.children().remove();
-
- var activeWorkspace = RED.nodes.workspace(RED.workspaces.active());
- if (!activeWorkspace) {
- activeWorkspace = RED.nodes.subflow(RED.workspaces.active());
- inclSubflowEnvvars = true
- }
-
- var configNodes = [];
- if (typeof filter !== 'function') {
- filter = null;
- }
- RED.nodes.eachConfig(function(config) {
- if (config.type == type && (!config.z || config.z === activeWorkspace.id)) {
- if (!filter || filter.call(null,config)) {
- var label = RED.utils.getNodeLabel(config,config.id);
- config.__label__ = label+(config.d?" ["+RED._("workspace.disabled")+"]":"");
- configNodes.push(config);
- }
+ var button = $("#"+prefix+"-edit-"+name);
+ if (button.length) {
+ if (value) {
+ button.text(RED._("editor.configEdit"));
+ } else {
+ button.text(RED._("editor.configAdd"));
}
- });
-
- // as includeSubflowEnvvars is true, this is a subflow.
- // include any 'conf-types' env vars as a list of avaiable configs
- // in the config dropdown as `[env] node-name`
- if (inclSubflowEnvvars && activeWorkspace.env) {
- const parentEnv = activeWorkspace.env.filter(env => env.ui?.type === 'conf-types' && env.type === type)
- if (parentEnv && parentEnv.length > 0) {
- const locale = RED.i18n.lang()
- for (let i = 0; i < parentEnv.length; i++) {
- const tenv = parentEnv[i]
- const ui = tenv.ui || {}
- const labels = ui.label || {}
- const labelText = RED.editor.envVarList.lookupLabel(labels, labels["en-US"] || tenv.name, locale)
- const config = {
- env: tenv,
- id: '${' + parentEnv[0].name + '}',
- type: type,
- label: labelText,
- __label__: `[env] ${labelText}`
- }
- configNodes.push(config)
- }
- }
- }
-
- var configSortFn = defaultConfigNodeSort;
- if (typeof node_def.sort == "function") {
- configSortFn = node_def.sort;
- }
- try {
- configNodes.sort(configSortFn);
- } catch(err) {
- console.log("Definition error: "+node_def.type+".sort",err);
- }
-
- configNodes.forEach(function(cn) {
- const option = $('').text(RED.text.bidi.enforceTextDirectionWithUCC(cn.__label__)).appendTo(select);
- if (cn.env) {
- option.data('env', cn.env) // set a data attribute to indicate this is an env var (to inhibit the edit button)
- }
- delete cn.__label__;
- });
-
- var label = type;
- if (typeof node_def.paletteLabel !== "undefined") {
- try {
- label = RED.utils.sanitize((typeof node_def.paletteLabel === "function" ? node_def.paletteLabel.call(node_def) : node_def.paletteLabel)||type);
- } catch(err) {
- console.log("Definition error: "+type+".paletteLabel",err);
- }
- }
-
- if (!configNodes.length) {
- select.append('');
+ $("#"+prefix+"-"+name).val(value);
} else {
- select.append('');
- }
+ let inclSubflowEnvvars = false
+ var select = $("#"+prefix+"-"+name);
+ var node_def = RED.nodes.getType(type);
+ select.children().remove();
- window.setTimeout(function() { select.trigger("change");},50);
+ var activeWorkspace = RED.nodes.workspace(RED.workspaces.active());
+ if (!activeWorkspace) {
+ activeWorkspace = RED.nodes.subflow(RED.workspaces.active());
+ inclSubflowEnvvars = true
+ }
+
+ var configNodes = [];
+ if (typeof filter !== 'function') {
+ filter = null;
+ }
+ RED.nodes.eachConfig(function(config) {
+ if (config.type == type && (!config.z || config.z === activeWorkspace.id)) {
+ if (!filter || filter.call(null,config)) {
+ var label = RED.utils.getNodeLabel(config,config.id);
+ config.__label__ = label+(config.d?" ["+RED._("workspace.disabled")+"]":"");
+ configNodes.push(config);
+ }
+ }
+ });
+
+ // as includeSubflowEnvvars is true, this is a subflow.
+ // include any 'conf-types' env vars as a list of avaiable configs
+ // in the config dropdown as `[env] node-name`
+ if (inclSubflowEnvvars && activeWorkspace.env) {
+ const parentEnv = activeWorkspace.env.filter(env => env.ui?.type === 'conf-types' && env.type === type)
+ if (parentEnv && parentEnv.length > 0) {
+ const locale = RED.i18n.lang()
+ for (let i = 0; i < parentEnv.length; i++) {
+ const tenv = parentEnv[i]
+ const ui = tenv.ui || {}
+ const labels = ui.label || {}
+ const labelText = RED.editor.envVarList.lookupLabel(labels, labels["en-US"] || tenv.name, locale)
+ const config = {
+ env: tenv,
+ id: '${' + parentEnv[0].name + '}',
+ type: type,
+ label: labelText,
+ __label__: `[env] ${labelText}`
+ }
+ configNodes.push(config)
+ }
+ }
+ }
+
+ var configSortFn = defaultConfigNodeSort;
+ if (typeof node_def.sort == "function") {
+ configSortFn = node_def.sort;
+ }
+ try {
+ configNodes.sort(configSortFn);
+ } catch(err) {
+ console.log("Definition error: "+node_def.type+".sort",err);
+ }
+
+ configNodes.forEach(function(cn) {
+ const option = $('').text(RED.text.bidi.enforceTextDirectionWithUCC(cn.__label__)).appendTo(select);
+ if (cn.env) {
+ option.data('env', cn.env) // set a data attribute to indicate this is an env var (to inhibit the edit button)
+ }
+ delete cn.__label__;
+ });
+
+ var label = type;
+ if (typeof node_def.paletteLabel !== "undefined") {
+ try {
+ label = RED.utils.sanitize((typeof node_def.paletteLabel === "function" ? node_def.paletteLabel.call(node_def) : node_def.paletteLabel)||type);
+ } catch(err) {
+ console.log("Definition error: "+type+".paletteLabel",err);
+ }
+ }
+
+ if (!configNodes.length) {
+ select.append('');
+ } else {
+ select.append('');
+ }
+
+ window.setTimeout(function() { select.trigger("change");},50);
+ }
}
}