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 6f83457a4..fd107e3de 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 @@ -445,6 +445,7 @@ } }, "editor": { + "button": "Button", "configEdit": "Edit", "configAdd": "Add", "configUpdate": "Update", @@ -468,6 +469,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 131d40d18..55007649c 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 @@ -1377,6 +1377,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; @@ -2337,6 +2340,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 d6dd5112d..7915a626a 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 e7820f83a..9b5510275 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 @@ -4126,7 +4126,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); @@ -4149,7 +4149,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;