diff --git a/packages/node_modules/@node-red/editor-client/src/sass/colors.scss b/packages/node_modules/@node-red/editor-client/src/sass/colors.scss index b583028cd..d8b4fb175 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/colors.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/colors.scss @@ -212,6 +212,7 @@ $node-icon-background-color-opacity: 0.05; $node-icon-border-color: #000; $node-icon-border-color-opacity: 0.1; +$node-config-background: #f3f3f3; $node-link-port-background: #eee; diff --git a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss index f3ffcc7d8..5c8d0ba94 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss @@ -58,7 +58,7 @@ ul.red-ui-sidebar-node-config-list { .red-ui-palette-icon-container { font-size: 12px; line-height: 30px; - background-color: $secondary-background-selected; + background-color: $node-icon-background-color; border-top-right-radius: 4px; border-bottom-right-radius: 4px; a { @@ -67,10 +67,10 @@ ul.red-ui-sidebar-node-config-list { bottom: 0; left: 0; right: 0; - color: $secondary-text-color; + color: $node-port-label-color; &:hover { text-decoration: none; - background: $secondary-background-hover; + background: $node-port-background-hover; } } } @@ -78,7 +78,7 @@ ul.red-ui-sidebar-node-config-list { .red-ui-palette-node-config { width: 160px; height: 30px; - background: $primary-background; + background: $node-config-background; color: $primary-text-color; cursor: pointer; } diff --git a/packages/node_modules/@node-red/editor-client/src/sass/ui/common/typedInput.scss b/packages/node_modules/@node-red/editor-client/src/sass/ui/common/typedInput.scss index f9ffdf7b2..da53e1e2d 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/ui/common/typedInput.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/ui/common/typedInput.scss @@ -16,7 +16,7 @@ .red-ui-typedInput-container { border: 1px solid $form-input-border-color; - border-radius: 4px; + border-radius: 5px; height: 34px; line-height: 14px; display: inline-flex; diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.html b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.html index 10acf4857..03ef4b2e3 100644 --- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.html +++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.html @@ -512,6 +512,7 @@ willRetain: {value:false}, willPayload: {value:""}, willMsg: { value: {}}, + userProps: { value: ""}, sessionExpiry: {value:0} }, credentials: { @@ -641,6 +642,7 @@ default: !this.userProps ? 'none':'json', types: [typedInputNoneOpt, 'json'] }); + $("#node-config-input-userProps").typedInput('value',this.userProps); if (typeof this.keepalive === 'undefined') { this.keepalive = 15; $("#node-config-input-keepalive").val(this.keepalive); @@ -750,6 +752,14 @@ } if (v5) { + this.userProps = ""; + const userPropsType = $("#node-config-input-userProps").typedInput("type"); + if(userPropsType == "json") { + const userProps = $("#node-config-input-userProps").val(); + if (userProps && typeof userProps === "string") { + this.userProps = userProps.trim(); + } + } this.birthMsg = saveV5Message("birth"); this.closeMsg = saveV5Message("close"); this.willMsg = saveV5Message("will"); diff --git a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js index 1c0a7c7d9..f8689ef9a 100644 --- a/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js +++ b/packages/node_modules/@node-red/nodes/core/network/10-mqtt.js @@ -477,8 +477,12 @@ module.exports = function(RED) { setIfHasProperty(opts, node, "topicAliasMaximum", init); setIfHasProperty(opts, node, "maximumPacketSize", init); setIfHasProperty(opts, node, "receiveMaximum", init); - setIfHasProperty(opts, node, "userProperties", init);//https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901116 - setIfHasProperty(opts, node, "userPropertiesType", init); + //https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901116 + if (hasProperty(opts, "userProperties")) { + node.userProperties = opts.userProperties; + } else if (hasProperty(opts, "userProps")) { + node.userProperties = opts.userProps; + } function createLWT(topic, payload, qos, retain, v5opts, v5SubPropName) { let message = undefined; @@ -812,6 +816,7 @@ module.exports = function(RED) { } } }; + node.disconnect = function (callback) { const _callback = function () { if(node.connected || node.connecting) { @@ -994,7 +999,7 @@ module.exports = function(RED) { node.client.removeAllListeners(); } done(); - }, true); + }); }); } diff --git a/packages/node_modules/node-red/red.js b/packages/node_modules/node-red/red.js index 4132e2db6..4763fd5a1 100755 --- a/packages/node_modules/node-red/red.js +++ b/packages/node_modules/node-red/red.js @@ -112,6 +112,10 @@ if (parsedArgs.settings) { // Consider compatibility for older versions settingsFile = path.join(process.env.HOMEPATH,".node-red","settings.js"); } else { + if (!parsedArgs.userDir && !(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH)) { + console.log("Could not find user directory. Ensure $HOME is set for the current user, or use --userDir option") + process.exit(1) + } var userDir = parsedArgs.userDir || path.join(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH,".node-red"); var userSettingsFile = path.join(userDir,"settings.js"); if (fs.existsSync(userSettingsFile)) {