n8n-nodes-base
Version:
Base nodes of n8n
65 lines • 2.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderFormNode = void 0;
exports.getFormTriggerNode = getFormTriggerNode;
const n8n_workflow_1 = require("n8n-workflow");
const utils_1 = require("./utils");
const renderFormNode = async (context, res, trigger, fields, mode) => {
const options = context.getNodeParameter('options', {});
let title = options.formTitle;
if (!title) {
title = context.evaluateExpression(`{{ $('${trigger?.name}').params.formTitle }}`);
}
const description = (0, utils_1.handleNewlines)((0, utils_1.sanitizeHtml)(options.formDescription ?? ''));
let buttonLabel = options.buttonLabel;
if (!buttonLabel) {
buttonLabel =
context.evaluateExpression(`{{ $('${trigger?.name}').params.options?.buttonLabel }}`) || 'Submit';
}
const appendAttribution = context.evaluateExpression(`{{ $('${trigger?.name}').params.options?.appendAttribution === false ? false : true }}`);
(0, utils_1.renderForm)({
context,
res,
formTitle: title,
formDescription: description,
formFields: fields,
responseMode: 'responseNode',
mode,
redirectUrl: undefined,
appendAttribution,
buttonLabel,
customCss: options.customCss,
});
return {
noWebhookResponse: true,
};
};
exports.renderFormNode = renderFormNode;
/**
* Retrieves the active Form Trigger node from the workflow's parent nodes.
*
* This function searches through the parent nodes to find Form Trigger nodes,
* then determines which one has been executed.
*
* @returns The NodeTypeAndVersion object representing the active Form Trigger node
* @throws {NodeOperationError} When no Form Trigger node is found in parent nodes
* @throws {NodeOperationError} When Form Trigger node exists but was not executed
*/
function getFormTriggerNode(context) {
const parentNodes = context.getParentNodes(context.getNode().name);
const formTriggers = parentNodes.filter((node) => node.type === n8n_workflow_1.FORM_TRIGGER_NODE_TYPE);
if (!formTriggers.length) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Form Trigger node must be set before this node');
}
for (const trigger of formTriggers) {
try {
context.evaluateExpression(`{{ $('${trigger.name}').first() }}`);
}
catch (error) {
continue;
}
return trigger;
}
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Form Trigger node was not executed');
}
//# sourceMappingURL=formNodeUtils.js.map