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 1b73430dc..9b3c8d731 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
@@ -341,8 +341,9 @@ RED.editor = (function() {
nodeValue = node[property]
}
- const buttonId = `${prefix}-lookup-${property}`
- const selectId = prefix + '-' + property
+ const addBtnId = `${prefix}-btn-${property}-add`;
+ const editBtnId = `${prefix}-btn-${property}-edit`;
+ const selectId = prefix + '-' + property;
const input = $(`#${selectId}`);
if (input.length === 0) {
return;
@@ -365,40 +366,68 @@ RED.editor = (function() {
select.css({
'flex-grow': 1
});
+
updateConfigNodeSelect(property, type, nodeValue, prefix, filter);
- const disableButton = function(disabled) {
- btn.prop( "disabled", !!disabled)
- btn.toggleClass("disabled", !!disabled)
- }
+
// create the edit button
- const btn = $('')
+ const editButton = $('')
.css({ "margin-left": "10px" })
.appendTo(outerWrap);
+ RED.popover.tooltip(editButton, RED._('editor.editConfig', { type }));
+
+ // create the add button
+ const addButton = $('')
+ .css({ "margin-left": "10px" })
+ .appendTo(outerWrap);
+ RED.popover.tooltip(addButton, RED._('editor.addNewConfig', { type }));
+
+ const disableButton = function(button, disabled) {
+ $(button).prop("disabled", !!disabled)
+ $(button).toggleClass("disabled", !!disabled)
+ };
+
// add the click handler
- btn.on("click", function (e) {
+ addButton.on("click", function (e) {
+ if (addButton.prop("disabled")) { return }
+ showEditConfigNodeDialog(property, type, "_ADD_", prefix, node);
+ e.preventDefault();
+ });
+ editButton.on("click", function (e) {
const selectedOpt = select.find(":selected")
if (selectedOpt.data('env')) { return } // don't show the dialog for env vars items (MVP. Future enhancement: lookup the env, if present, show the associated edit dialog)
- if (btn.prop("disabled")) { return }
+ if (editButton.prop("disabled")) { return }
showEditConfigNodeDialog(property, type, selectedOpt.val(), prefix, node);
e.preventDefault();
});
// dont permit the user to click the button if the selected option is an env var
select.on("change", function () {
- const selectedOpt = select.find(":selected")
+ const selectedOpt = select.find(":selected");
+ const optionsLength = select.find("option").length;
if (selectedOpt?.data('env')) {
- disableButton(true)
+ disableButton(addButton, true);
+ disableButton(editButton, true);
+ // disable the edit button if no options available
+ } else if (optionsLength === 1 && selectedOpt.val() === "_ADD_") {
+ disableButton(addButton, false);
+ disableButton(editButton, true);
+ } else if (selectedOpt.val() === "") {
+ disableButton(addButton, false);
+ disableButton(editButton, true);
} else {
- disableButton(false)
+ disableButton(addButton, false);
+ disableButton(editButton, false);
}
});
+
var label = "";
var configNode = RED.nodes.node(nodeValue);
if (configNode) {
label = RED.utils.getNodeLabel(configNode, configNode.id);
}
+
input.val(label);
}
@@ -892,7 +921,12 @@ RED.editor = (function() {
}
}
- select.append('');
+ if (!configNodes.length) {
+ select.append('');
+ } else {
+ select.append('');
+ }
+
window.setTimeout(function() { select.trigger("change");},50);
}
}