fix(core): Fix resolve RL values in expressions (#4173)

* update interface

* update expression resolving

* 🔥 remove ExtractValue functions

* add flags

* update resolving

* update expr

* fix for list mode

* clean up

* Fix up

* update guard

* fix bug with switching

* update to handle expr referencing

* fix legacy expression

* fix when switching

* update spacing

Co-authored-by: Valya Bullions <valya@n8n.io>
This commit is contained in:
Mutasem Aldmour
2022-09-22 19:04:26 +02:00
committed by GitHub
parent d01f7d4d93
commit 469c391fee
12 changed files with 85 additions and 361 deletions

View File

@@ -2,7 +2,7 @@
<div @keydown.stop :class="parameterInputClasses">
<expression-edit
:dialogVisible="expressionEditDialogVisible"
:value="isResourceLocatorParameter ? (value ? value.value : '') : value"
:value="isResourceLocatorParameter && typeof value !== 'string' ? (value ? value.value : '') : value"
:parameter="parameter"
:path="path"
:eventSource="eventSource || 'ndv'"
@@ -295,6 +295,7 @@ import {
INodeParameters,
INodePropertyOptions,
Workflow,
NodeParameterValueType,
} from 'n8n-workflow';
import CodeEdit from '@/components/CodeEdit.vue';
@@ -819,7 +820,7 @@ export default mixins(
return this.parameter.typeOptions[argumentName];
},
expressionUpdated (value: string) {
const val = this.isResourceLocatorParameter ? { value, mode: this.value.mode } : value;
const val: NodeParameterValueType = this.isResourceLocatorParameter ? { __rl: true, value, mode: this.value.mode } : value;
this.valueChanged(val);
},
openExpressionEdit() {
@@ -937,9 +938,9 @@ export default mixins(
} else if (command === 'addExpression') {
if (this.isResourceLocatorParameter) {
if (isResourceLocatorValue(this.value)) {
this.valueChanged({ value: `=${this.value.value}`, mode: this.value.mode });
this.valueChanged({ __rl: true, value: `=${this.value.value}`, mode: this.value.mode });
} else {
this.valueChanged({ value: `=${this.value}`, mode: '' });
this.valueChanged({ __rl: true, value: `=${this.value}`, mode: '' });
}
}
else if (this.parameter.type === 'number' || this.parameter.type === 'boolean') {
@@ -962,7 +963,7 @@ export default mixins(
}
if (this.isResourceLocatorParameter) {
this.valueChanged({ value, mode: this.value.mode });
this.valueChanged({ __rl: true, value, mode: this.value.mode });
} else {
this.valueChanged(typeof value !== 'undefined' ? value : null);
}