| 1 |
import{fieldValidation,initializeInlineFieldValidation,handleScrollAndFocusOnError}from"./validation";async function submitFormData(e){var t,r,s=srfm_submit.site_url,e=new FormData(e),o=new FormData;for([t,r]of e.entries())t.includes("srfm-email-confirm")||t.includes("srfm-password-confirm")||o.append(t,r);return fetch(s+"/wp-json/sureforms/v1/submit-form",{method:"POST",headers:{"X-WP-Nonce":srfm_submit.nonce},body:o}).then(e=>{if(e.ok)return e.json()}).catch(e=>{console.log(e)})}async function afterSubmit(e){var t=window.srfm_submit.site_url,e=e.data.submission_id;try{var r=await fetch(t+"/wp-json/sureforms/v1/after-submission/"+e,{headers:{"X-WP-Nonce":window.srfm_submit.nonce}});if(!r.ok)throw new Error("HTTP error! Status: "+r.status)}catch(e){console.error(e)}}function showSuccessMessage(e,t,r,s,o){"hide form"===o?(s.style.opacity=1,s.style.display="none",setTimeout(()=>{t.style.opacity=1},500)):s.reset(),t.innerHTML=r,e.classList.add("srfm-active"),window?.srfm?.handleInstantFormWrapperHeight(),s.parentElement.scrollIntoView({behavior:"smooth"})}function redirectToUrl(e){window.location.assign(e)}function showErrorMessage(e){e.removeAttribute("hidden"),console.error("Network Error")}async function handleFormSubmission(e,t,r,s,o,a,n,i,c,l,m){try{o.classList.add("srfm-active");var u,d=await fieldValidation(t,r,s,e);d?.validateResult?(o.classList.remove("srfm-active"),handleScrollAndFocusOnError(d)):(u=await submitFormData(e))?.success?"same page"===l?(showSuccessMessage(n,i,u?.message??"",e,m),o.classList.remove("srfm-active"),u?.data?.after_submit&&afterSubmit(u)):(redirectToUrl(a),o.classList.remove("srfm-active")):(o.classList.remove("srfm-active"),showErrorMessage(c),o.classList.remove("srfm-active"))}catch(e){o.classList.remove("srfm-active"),showErrorMessage(c)}}function extractFormAttributesAndElements(e){var t=e.getAttribute("form-id"),r=e.getAttribute("message-type"),s=e.getAttribute("success-url"),o=e.getAttribute("ajaxurl"),a=e.getAttribute("nonce"),n=e.querySelector(".srfm-loader"),i=e.parentElement.querySelector(".srfm-single-form.srfm-success-box"),c=i?.querySelector(".srfm-success-box-description"),l=e.querySelector(".srfm-error-message"),m=e.querySelector("#srfm-submit-btn"),u=e.getAttribute("after-submission"),d=e.querySelector(".g-recaptcha");return{formId:t,submitType:r,successUrl:s,ajaxUrl:o,nonce:a,loader:n,successContainer:i,successElement:c,errorElement:l,submitBtn:m,siteKey:d?.getAttribute("data-sitekey"),recaptchaType:d?.getAttribute("recaptcha-type"),afterSubmission:u,captchaErrorElement:e.querySelector("#captcha-error"),hCaptchaDiv:e.querySelector(".h-captcha"),turnstileDiv:e.querySelector(".cf-turnstile")}}function onloadCallback(){Array.from(document.querySelectorAll(".srfm-form")).forEach(e=>{const{formId:t,submitType:r,successUrl:s,ajaxUrl:o,nonce:a,loader:n,successContainer:i,successElement:c,errorElement:l,submitBtn:m,siteKey:u,recaptchaType:d,afterSubmission:f}=extractFormAttributesAndElements(e);let b=!1;"v2-invisible"===d&&(grecaptcha.render(m,{sitekey:u,callback:()=>{handleFormSubmission(e,t,o,a,n,s,i,c,l,r,f),b=!0}}),m.addEventListener("click",()=>{n.classList.add("srfm-active"),b&&handleFormSubmission(e,t,o,a,n,s,i,c,l,r,f)}))})}document.addEventListener("DOMContentLoaded",function(){initializeInlineFieldValidation();for(const r of Array.from(document.querySelectorAll(".srfm-form"))){const{formId:s,submitType:o,successUrl:a,ajaxUrl:n,nonce:i,loader:c,successContainer:l,successElement:m,errorElement:u,submitBtn:e,siteKey:t,recaptchaType:d,afterSubmission:f,captchaErrorElement:b,hCaptchaDiv:h,turnstileDiv:p}=extractFormAttributesAndElements(r);"v3-reCAPTCHA"===d?e.addEventListener("click",e=>{e.preventDefault(),grecaptcha.ready(function(){grecaptcha.execute(t,{action:"submit"}).then(async function(e){e&&handleFormSubmission(r,s,n,i,c,a,l,m,u,o,f)})})}):"v2-checkbox"===d||h||p?r.addEventListener("submit",e=>{e.preventDefault();let t;"v2-checkbox"===d?t=grecaptcha.getResponse():h?t=hcaptcha.getResponse():p&&(t=turnstile.getResponse()),0===t.length?b.style.display="block":(b.style.display="none",handleFormSubmission(r,s,n,i,c,a,l,m,u,o,f))}):r.addEventListener("submit",async function(e){e.preventDefault(),handleFormSubmission(r,s,n,i,c,a,l,m,u,o,f)})}}),window.onloadCallback=onloadCallback,window.handleBricksPreviewFormSubmission=function(){for(const e of Array.from(document.querySelectorAll(".srfm-form")))e.addEventListener("submit",async function(e){e.preventDefault()})}; |