fix(n8n Form Node): Hidden field fix (#14219)

This commit is contained in:
Michael Kret
2025-03-28 17:41:26 +02:00
committed by GitHub
parent af777307b3
commit 9bd72eaa13
2 changed files with 118 additions and 34 deletions

View File

@@ -269,6 +269,48 @@ export const validateResponseModeConfiguration = (context: IWebhookFunctions) =>
}
};
export function addFormResponseDataToReturnItem(
returnItem: INodeExecutionData,
formFields: FormFieldsParameter,
bodyData: IDataObject,
) {
for (const [index, field] of formFields.entries()) {
const key = `field-${index}`;
const name = field.fieldLabel ?? field.fieldName;
let value = bodyData[key] ?? null;
if (value === null) {
returnItem.json[name] = null;
continue;
}
if (field.fieldType === 'html') {
if (field.elementName) {
returnItem.json[field.elementName] = value;
}
continue;
}
if (field.fieldType === 'number') {
value = Number(value);
}
if (field.fieldType === 'text') {
value = String(value).trim();
}
if (field.multiselect && typeof value === 'string') {
value = jsonParse(value);
}
if (field.fieldType === 'date' && value && field.formatDate !== '') {
value = DateTime.fromFormat(String(value), 'yyyy-mm-dd').toFormat(field.formatDate as string);
}
if (field.fieldType === 'file' && field.multipleFiles && !Array.isArray(value)) {
value = [value];
}
returnItem.json[name] = value;
}
}
export async function prepareFormReturnItem(
context: IWebhookFunctions,
formFields: FormFieldsParameter,
@@ -326,40 +368,7 @@ export async function prepareFormReturnItem(
}
}
for (const [index, field] of formFields.entries()) {
const key = `field-${index}`;
let value = bodyData[key] ?? null;
if (value === null) {
returnItem.json[field.fieldLabel] = null;
continue;
}
if (field.fieldType === 'html') {
if (field.elementName) {
returnItem.json[field.elementName] = value;
}
continue;
}
if (field.fieldType === 'number') {
value = Number(value);
}
if (field.fieldType === 'text') {
value = String(value).trim();
}
if (field.multiselect && typeof value === 'string') {
value = jsonParse(value);
}
if (field.fieldType === 'date' && value && field.formatDate !== '') {
value = DateTime.fromFormat(String(value), 'yyyy-mm-dd').toFormat(field.formatDate as string);
}
if (field.fieldType === 'file' && field.multipleFiles && !Array.isArray(value)) {
value = [value];
}
returnItem.json[field.fieldLabel] = value;
}
addFormResponseDataToReturnItem(returnItem, formFields, bodyData);
const timezone = useWorkflowTimezone ? context.getTimezone() : 'UTC';
returnItem.json.submittedAt = DateTime.now().setZone(timezone).toISO();