2023-12-13 07:00:51 -08:00
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
2024-07-29 05:58:03 -07:00
import type {
INodeProperties ,
INodeType ,
INodeTypeBaseDescription ,
INodeTypeDescription ,
IWebhookFunctions ,
2023-12-13 07:00:51 -08:00
} from 'n8n-workflow' ;
import { formWebhook } from '../utils' ;
import {
formDescription ,
formFields ,
formRespondMode ,
formTitle ,
formTriggerPanel ,
respondWithOptions ,
webhookPath ,
} from '../common.descriptions' ;
2024-07-29 05:58:03 -07:00
import { FORM_TRIGGER_AUTHENTICATION_PROPERTY } from '../interfaces' ;
const useWorkflowTimezone : INodeProperties = {
displayName : 'Use Workflow Timezone' ,
name : 'useWorkflowTimezone' ,
type : 'boolean' ,
default : false ,
description : "Whether to use the workflow timezone set in node's settings rather than UTC" ,
} ;
2023-12-13 07:00:51 -08:00
const descriptionV2 : INodeTypeDescription = {
displayName : 'n8n Form Trigger' ,
name : 'formTrigger' ,
icon : 'file:form.svg' ,
group : [ 'trigger' ] ,
2024-07-29 05:58:03 -07:00
version : [ 2 , 2.1 ] ,
2023-12-13 07:00:51 -08:00
description : 'Runs the flow when an n8n generated webform is submitted' ,
defaults : {
name : 'n8n Form Trigger' ,
} ,
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
inputs : [ ] ,
outputs : [ 'main' ] ,
webhooks : [
{
name : 'setup' ,
httpMethod : 'GET' ,
responseMode : 'onReceived' ,
isFullPath : true ,
path : '={{$parameter["path"]}}' ,
ndvHideUrl : true ,
isForm : true ,
} ,
{
name : 'default' ,
httpMethod : 'POST' ,
responseMode : '={{$parameter["responseMode"]}}' ,
responseData : '={{$parameter["responseMode"] === "lastNode" ? "noData" : undefined}}' ,
isFullPath : true ,
path : '={{$parameter["path"]}}' ,
ndvHideMethod : true ,
isForm : true ,
} ,
] ,
eventTriggerDescription : 'Waiting for you to submit the form' ,
activationMessage : 'You can now make calls to your production Form URL.' ,
triggerPanel : formTriggerPanel ,
2024-07-29 05:58:03 -07:00
credentials : [
{
// eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed
name : 'httpBasicAuth' ,
required : true ,
displayOptions : {
show : {
[ FORM_TRIGGER_AUTHENTICATION_PROPERTY ] : [ 'basicAuth' ] ,
} ,
} ,
} ,
] ,
2023-12-13 07:00:51 -08:00
properties : [
2024-07-29 05:58:03 -07:00
{
displayName : 'Authentication' ,
name : FORM_TRIGGER_AUTHENTICATION_PROPERTY ,
type : 'options' ,
options : [
{
name : 'Basic Auth' ,
value : 'basicAuth' ,
} ,
{
name : 'None' ,
value : 'none' ,
} ,
] ,
default : 'none' ,
} ,
2023-12-13 07:00:51 -08:00
webhookPath ,
formTitle ,
formDescription ,
formFields ,
formRespondMode ,
{
displayName :
"In the 'Respond to Webhook' node, select 'Respond With JSON' and set the <strong>formSubmittedText</strong> key to display a custom response in the form, or the <strong>redirectURL</strong> key to redirect users to a URL" ,
name : 'formNotice' ,
type : 'notice' ,
displayOptions : {
show : { responseMode : [ 'responseNode' ] } ,
} ,
default : '' ,
} ,
{
displayName : 'Options' ,
name : 'options' ,
type : 'collection' ,
2024-07-29 05:27:23 -07:00
placeholder : 'Add option' ,
2023-12-13 07:00:51 -08:00
default : { } ,
2024-04-19 01:26:19 -07:00
options : [
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
displayName : 'Append n8n Attribution' ,
name : 'appendAttribution' ,
type : 'boolean' ,
default : true ,
description :
'Whether to include the link “Form automated with n8n” at the bottom of the form' ,
} ,
2024-05-03 02:02:46 -07:00
{
. . . respondWithOptions ,
displayOptions : {
hide : {
'/responseMode' : [ 'responseNode' ] ,
} ,
} ,
} ,
2024-07-29 05:58:03 -07:00
{
displayName : 'Ignore Bots' ,
name : 'ignoreBots' ,
type : 'boolean' ,
default : false ,
description : 'Whether to ignore requests from bots like link previewers and web crawlers' ,
} ,
{
. . . useWorkflowTimezone ,
default : false ,
displayOptions : {
show : {
'@version' : [ 2 ] ,
} ,
} ,
} ,
{
. . . useWorkflowTimezone ,
default : true ,
displayOptions : {
show : {
'@version' : [ { _cnd : { gt : 2 } } ] ,
} ,
} ,
} ,
2024-04-19 01:26:19 -07:00
] ,
2023-12-13 07:00:51 -08:00
} ,
] ,
} ;
export class FormTriggerV2 implements INodeType {
description : INodeTypeDescription ;
constructor ( baseDescription : INodeTypeBaseDescription ) {
this . description = {
. . . baseDescription ,
. . . descriptionV2 ,
} ;
}
async webhook ( this : IWebhookFunctions ) {
2024-01-17 07:08:50 -08:00
return await formWebhook ( this ) ;
2023-12-13 07:00:51 -08:00
}
}