From 19a8fa09a8cf90d63af41abeb767418a7c7eac11 Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Thu, 27 Jun 2024 09:16:03 +0200 Subject: [PATCH 1/2] Fix node validation if property is not required --- .../editor-client/src/js/ui/editor.js | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) 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 fa262d0c5..cf17a8fda 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 @@ -148,12 +148,23 @@ RED.editor = (function() { ((typeof definition[property].label) == "string")) { label = definition[property].label; } - if ("required" in definition[property] && definition[property].required) { - valid = value !== ""; - if (!valid && label) { - return RED._("validator.errors.missing-required-prop", { - prop: label - }); + if ("required" in definition[property]) { + if (definition[property].required) { + valid = value !== ""; + if (!valid && label) { + return RED._("validator.errors.missing-required-prop", { + prop: label + }); + } + } else { + if (value === "") { + return true; + } + } + + } else { + if (value === "") { + return true; } } if (valid && "validate" in definition[property]) { From 2464d9ad95cde7458ed10cec606f899d2103f5b6 Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:15:51 +0200 Subject: [PATCH 2/2] Check `required` prop for each case instead of top level --- .../editor-client/src/js/ui/editor.js | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) 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 cf17a8fda..30c329c41 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 @@ -148,26 +148,21 @@ RED.editor = (function() { ((typeof definition[property].label) == "string")) { label = definition[property].label; } - if ("required" in definition[property]) { - if (definition[property].required) { - valid = value !== ""; - if (!valid && label) { - return RED._("validator.errors.missing-required-prop", { - prop: label - }); - } - } else { + if ("required" in definition[property] && definition[property].required) { + valid = value !== ""; + if (!valid && label) { + return RED._("validator.errors.missing-required-prop", { + prop: label + }); + } + } + if (valid && "validate" in definition[property]) { + if (definition[property].hasOwnProperty("required") && + definition[property].required === false) { if (value === "") { return true; } } - - } else { - if (value === "") { - return true; - } - } - if (valid && "validate" in definition[property]) { try { var opt = {}; if (label) { @@ -194,6 +189,11 @@ RED.editor = (function() { }); } } else if (valid) { + if (definition[property].hasOwnProperty("required") && definition[property].required === false) { + if (value === "") { + return true; + } + } // If the validator is not provided in node property => Check if the input has a validator if ("category" in node._def) { const isConfig = node._def.category === "config";