2023-12-13 07:00:51 -08:00
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
import {
type INodeType ,
type INodeTypeBaseDescription ,
type INodeTypeDescription ,
type IWebhookFunctions ,
} from 'n8n-workflow' ;
import { formWebhook } from '../utils' ;
import {
formDescription ,
formFields ,
formRespondMode ,
formTitle ,
formTriggerPanel ,
respondWithOptions ,
webhookPath ,
} from '../common.descriptions' ;
const descriptionV2 : INodeTypeDescription = {
displayName : 'n8n Form Trigger' ,
name : 'formTrigger' ,
icon : 'file:form.svg' ,
group : [ 'trigger' ] ,
version : 2 ,
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 ,
properties : [
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' ,
placeholder : 'Add Option' ,
default : { } ,
displayOptions : {
hide : {
responseMode : [ 'responseNode' ] ,
} ,
} ,
options : [ respondWithOptions ] ,
} ,
] ,
} ;
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
}
}