diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json index 8018b745f..d2f43613d 100644 --- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json @@ -447,6 +447,7 @@ } }, "editor": { + "button": "Button", "configEdit": "Edit", "configAdd": "Add", "configUpdate": "Update", @@ -470,6 +471,8 @@ "searchIcons": "Search icons", "useDefault": "use default", "description": "Description", + "disabled": "Disabled", + "enabled": "Enabled", "show": "Show", "hide": "Hide", "locale": "Select UI Language", diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 4a114560b..c32ad45ab 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -1426,6 +1426,9 @@ RED.nodes = (function() { node.l = n.l; } } + if (n._def.button && n.hasOwnProperty("b") && n.b) { + node.b = true; + } } if (n.info) { node.info = n.info; @@ -2432,6 +2435,9 @@ RED.nodes = (function() { if (n.hasOwnProperty('g')) { node.g = n.g; } + if (n.hasOwnProperty('b')) { + node.b = n.b; + } if (options.markChanged) { node.changed = true } diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/panes/appearance.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/panes/appearance.js index 2d225a277..532cbc9ee 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/panes/appearance.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/panes/appearance.js @@ -130,6 +130,20 @@ node.l = true; } } + + if (node._def.button) { + if ($("#node-input-enable-button").prop("checked")) { + if (node.hasOwnProperty("b") && node.b) { + editState.changes.b = node.b; + editState.changed = true; + delete node.b; + } + } else if (!node.b) { + editState.changes.b = node.b; + editState.changed = true; + node.b = true; + } + } } }; }); @@ -195,6 +209,21 @@ .text(RED._("subflow.subflowInstances", {count:node.instances.length})).show(); } + if (node._def.button) { + $('
'+ + ''+ + ''+ + ''+ + '
').appendTo(dialogForm); + + $("#node-input-enable-button").toggleButton({ + enabledLabel: RED._("editor.enabled"), + disabledLabel: RED._("editor.disabled") + }); + + $("#node-input-enable-button").prop("checked", !node.b).trigger("change"); + } + $('
'+ ''+ ''+ diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index d79aacc7b..32ed83052 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -5079,7 +5079,7 @@ RED.view = (function() { function isButtonEnabled(d) { var buttonEnabled = true; var ws = RED.nodes.workspace(RED.workspaces.active()); - if (ws && !ws.disabled && !d.d && !ws.locked) { + if (ws && !ws.disabled && !d.d && !d.b && !ws.locked) { if (d._def.button.hasOwnProperty('enabled')) { if (typeof d._def.button.enabled === "function") { buttonEnabled = d._def.button.enabled.call(d); @@ -5102,7 +5102,7 @@ RED.view = (function() { } var activeWorkspace = RED.workspaces.active(); var ws = RED.nodes.workspace(activeWorkspace); - if (ws && !ws.disabled && !d.d && !ws.locked) { + if (ws && !ws.disabled && !d.d && !d.b && !ws.locked) { if (d._def.button.toggle) { d[d._def.button.toggle] = !d[d._def.button.toggle]; d.dirty = true;