Your listener id (must be unique)
Your listener function
JMap.Event.Form.on.beforeSubmit(
  "custom-form-before-submit",
  params => {
   const {
     layerId,
     formId,
     isAttributeForm,
     isExternalForm,
     isSubForm,
     isCreation,
     getFormData,
     setFormData,
     getGeometry,
     setGeometry
   } = params
   console.info(`Form id=${formId} will be submit`)
   if (isAttributeForm && isCreation) {
     const geometry = getGeometry()
     const attributeByValue = getFormData()
     ... do your stuffs here
     // you can change the geometry and/or the data with setGeometry and setFormData
     // this methods don't throws if the parameters are incorrect, but form submition will fail
   } else {
     // in this case, not an attribute form creation, get and set geometry methods are undefined,
     // because we don't need them in this context.
     // But get and set FormData methods are always defined, in all cases
   }
   // You can return a Promise here and and NG will wait for
   // that promise to resolve before submitting the form
  }
)
JMap.Event.Form.on.beforeSubmit
This event is triggered each time a form (or subform) is submitted, just before the data are submitted server side.