From c37ea90206d3ac84dd4d94740909bc96f2307e2f Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 10 Mar 2021 17:50:46 +0000 Subject: [PATCH] Remember TypedInput selected sub option when switching types Fixes #2896 --- .../@node-red/editor-client/src/js/ui/common/typedInput.js | 6 +++--- .../node_modules/@node-red/editor-client/src/js/ui/utils.js | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js index 3ae721483..8a1fdb81c 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js @@ -14,8 +14,8 @@ * limitations under the License. **/ (function($) { - var contextParse = function(v) { - var parts = RED.utils.parseContextKey(v); + var contextParse = function(v,defaultStore) { + var parts = RED.utils.parseContextKey(v, defaultStore); return { option: parts.store, value: parts.key @@ -829,7 +829,7 @@ } else { var selectedOption = this.optionValue||opt.options[0]; if (opt.parse) { - var parts = opt.parse(this.input.val()); + var parts = opt.parse(this.input.val(),selectedOption); if (parts.option) { selectedOption = parts.option; if (!this.activeOptions.hasOwnProperty(selectedOption)) { diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js index fd84ea70d..f81c98748 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js @@ -1070,7 +1070,7 @@ RED.utils = (function() { return payload; } - function parseContextKey(key) { + function parseContextKey(key, defaultStore) { var parts = {}; var m = /^#:\((\S+?)\)::(.*)$/.exec(key); if (m) { @@ -1078,7 +1078,9 @@ RED.utils = (function() { parts.key = m[2]; } else { parts.key = key; - if (RED.settings.context) { + if (defaultStore) { + parts.store = defaultStore; + } else if (RED.settings.context) { parts.store = RED.settings.context.default; } }