FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
sureforms
/
assets
/
js
/
minified
Edit File: form-submit.min.js
import{fieldValidation,initializeInlineFieldValidation,handleScrollAndFocusOnError,handleCaptchaValidation,srfmFields}from"./validation";import{handleFormPayment}from"./payment";import{applyFilters}from"@wordpress/hooks";import{__}from"@wordpress/i18n";let pendingRecaptchaForm=null,srfmFormInstanceCounter=(document.addEventListener("srfm_initialize_validation",e=>{var e=e?.detail?.fields;e&&Array.isArray(e)?(e=e.filter(e=>srfmFields().includes(e)),initializeInlineFieldValidation(e)):initializeInlineFieldValidation()}),0);function initializeFormHandlers(){initializeInlineFieldValidation();for(let v of Array.from(document.querySelectorAll(".srfm-form"))){v.hasAttribute("data-srfm-instance")||v.setAttribute("data-srfm-instance",String(++srfmFormInstanceCounter)),document.dispatchEvent(new CustomEvent("srfm_form_before_submission",{detail:{form:v}}));let{formId:r,submitType:s,successUrl:o,ajaxUrl:a,submitToken:i,loader:n,successContainer:m,successElement:c,recaptchaType:l,afterSubmission:u,captchaErrorElement:d,hCaptchaDiv:f,turnstileDiv:b,hasLoginBlock:p}=extractFormAttributesAndElements(v),h="v2-checkbox"===l||!!f||!!b;"v3-reCAPTCHA"!==l||v.hasAttribute("data-srfm-v3-click-handler")||(v.setAttribute("data-srfm-v3-click-handler","true"),v.addEventListener("click",function(e){e=e.target.closest("#srfm-submit-btn, .srfm-custom-button");e&&e.classList.contains("g-recaptcha")&&(pendingRecaptchaForm=v)},!0)),v.addEventListener("submit",async e=>{e.preventDefault();e=e.target;if("FORM"===e?.tagName){var t=(e?.closest(".srfm-form-container"))?.classList.contains("srfm-submit-button-hidden"),e=e?.querySelector("button.srfm-custom-button");if(t&&!e)return void console.warn("Form submission is disabled because the submit button is hidden.")}p&&!v.__loginSuccess?(t=new CustomEvent("srfm_login_request",{cancelable:!0,detail:{form:v}}),v.dispatchEvent(t)):applyFilters("srfm.handleCustomFormSubmission",!0,{form:v})&&(handleFormSubmission(v,r,a,i,n,o,m,c,s,u,h?l:void 0,h?f:void 0,h?b:void 0,h?d:void 0),v.__loginSuccess=!0)}),document.dispatchEvent(new CustomEvent("srfm_form_after_initialization",{detail:{form:v}}))}}function prepareAddressesData(e){e=e.querySelectorAll(".srfm-address-block");if(!e)return null;let r={};return e.forEach(e=>{var t=e.getAttribute("data-slug");t&&(e=e.querySelectorAll(".srfm-input-input, .srfm-dropdown-input"),e=Array.from(e).map(e=>e?.value?.trim()).filter(Boolean).join(", "),r[t]=e)}),0<Object.keys(r).length?r:null}async function submitFormData(e){var t=new FormData(e);let r=new FormData;var s,o,a=e.getAttribute("data-submit-token"),i=["srfm-email-confirm","srfm-password-confirm"];for([s,o]of t.entries())i.includes(s)||(""!==o&&((e.querySelector(`[name="${s}"]`)?.closest(".srfm-block-single"))?.classList.contains("hide-element")&&(o=""),o=applyFilters("srfm.filterFieldValue",o,{key:s,form:e})),applyFilters("srfm.shouldSkipField",!1,{key:s,value:o,form:e}))||r.append(s,o);t=prepareAddressesData(e);t&&r.append("srfm_addresses",JSON.stringify(t));let n=applyFilters("srfm.prepareAdditionalFormData",{},e);Object.keys(n).forEach(e=>{null!=n[e]&&r.append(e,JSON.stringify(n[e]))});try{return await wp.apiFetch({path:"sureforms/v1/submit-form",method:"POST",body:r,headers:{"X-WP-Submit-Token":a}})}catch(e){console.error(e)}}async function afterSubmit(e){var t=e.data.submission_id,e=e.data.after_submit_nonce;try{await wp.apiFetch({path:`/sureforms/v1/after-submission/${t}?after_submit_nonce=`+encodeURIComponent(e),method:"GET"})}catch(e){console.error(e)}}function showSuccessMessage(e,t,r,s,o,a,i){a=new CustomEvent("srfm_on_show_success_message",{cancelable:!0,detail:{form:s,element:t,message:r,submitType:a,container:e,loader:i}});document.dispatchEvent(a)&&(enableSubmitButton(s),"hide form"===o?(s.style.opacity=1,s.style.display="none",setTimeout(()=>{t.style.opacity=1},500)):"reset form"===o&&s.reset(),t.innerHTML=r,e.classList.add("srfm-active"),window?.srfm?.handleInstantFormWrapperHeight(),applyFilters("srfm.enableScrollOnSuccess",!0))&&s.parentElement.scrollIntoView({behavior:"smooth"})}function redirectToUrl(e){window.location.assign(e)}function dispatchErrorEvent(e){var{form:e,message:t="",position:r="footer",log_message:s=null}=e.detail||{};e&&(s&&console.warn(s),s=t||__("An error occurred while submitting your form. Please try again.","sureforms"),t=e.querySelector(".srfm-common-error-message."+("header"===r?"srfm-head-error":"srfm-footer-error")))&&(t.querySelector(".srfm-error-content").innerHTML=s,t.removeAttribute("hidden"),handleScrollAndFocusOnError({firstErrorInput:t,scrollElement:t}))}function showErrorMessage(e){var{form:e,message:t="",position:r="footer",log_message:s=null}=e,e=new CustomEvent("srfm_show_common_form_error",{detail:{form:e,message:t,position:r,log_message:s}});document.dispatchEvent(e)}function hideErrorMessage(e){e.querySelectorAll(".srfm-common-error-message").forEach(e=>{e.setAttribute("hidden","")})}function enableSubmitButton(e){var t=e.querySelector('#srfm-submit-btn, button[type="submit"], .srfm-custom-button'),t=(t&&(t.disabled=!1,t.style.pointerEvents=""),new CustomEvent("srfm_form_submission_stop",{cancelable:!0,detail:{form:e}}));document.dispatchEvent(t)}async function handleFormSubmission(t,r,e,s,o,a,i,n,m,c,l,u,d,f){try{o.classList.add("srfm-active");var b,p,h,v,g=new CustomEvent("srfm_form_submission_start",{cancelable:!0,detail:{form:t,loader:o,formId:r,submitType:m,successElement:n,successContainer:i}}),y=(document.dispatchEvent(g),t.querySelector('#srfm-submit-btn, button[type="submit"], .srfm-custom-button')),E=(y&&(y.disabled=!0,y.style.pointerEvents="none"),hideErrorMessage(t),await fieldValidation(r,e,s,t)),_=handleCaptchaValidation(l,u,d,f);E?.validateResult||!_?(o.classList.remove("srfm-active"),enableSubmitButton(t),E?.validateResult?handleScrollAndFocusOnError(E):_||handleScrollAndFocusOnError({firstErrorInput:f,scrollElement:f})):(b=new CustomEvent("srfm_on_trigger_form_submission",{cancelable:!0,detail:{form:t,loader:o,formId:r,submitType:m,successElement:n,successContainer:i}}),document.dispatchEvent(b)?(p=await handleFormPayment(t))?.valid?(h=await submitFormData(t))?.success?(emitFormSubmitSuccess({...h,formId:r}),v=m,m=h?.data?.submission_settings?.submission_mode||v,c=h?.data?.submission_settings?.after_submission||c,"same page"===m?(showSuccessMessage(i,n,h?.message??"",t,c,m),o.classList.remove("srfm-active"),enableSubmitButton(t)):["different page","custom url"].includes(m)?(h?.redirect_url&&redirectToUrl(h?.redirect_url),o.classList.remove("srfm-active"),enableSubmitButton(t)):showSuccessMessage(i,n,h?.message??"",t,c,m,o),h?.data?.after_submit&&afterSubmit(h)):(showErrorMessage({form:t,...h?.data||{}}),o.classList.remove("srfm-active"),enableSubmitButton(t)):(showErrorMessage({form:t,message:p?.message}),o.classList.remove("srfm-active"),enableSubmitButton(t)):(o.classList.remove("srfm-active"),enableSubmitButton(t)))}catch(e){g=new CustomEvent("srfm_on_trigger_form_submission_failure",{detail:{form:t,error:e,loader:o,formId:r,submitType:m,successElement:n,successContainer:i}});document.dispatchEvent(g),o.classList.remove("srfm-active"),enableSubmitButton(t),showErrorMessage({form:t})}}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("data-submit-token"),i=e.querySelector(".srfm-loader"),n=e.parentElement.querySelector(".srfm-single-form.srfm-success-box"),m=n?.querySelector(".srfm-success-box-description"),c=e.querySelector("#srfm-submit-btn"),l=e.getAttribute("after-submission"),u=e.querySelector(".g-recaptcha");return{formId:t,submitType:r,successUrl:s,ajaxUrl:o,submitToken:a,loader:i,successContainer:n,successElement:m,submitBtn:c,siteKey:u?.getAttribute("data-sitekey"),recaptchaType:u?.getAttribute("recaptcha-type"),afterSubmission:l,captchaErrorElement:e.querySelector("#captcha-error"),hCaptchaDiv:e.querySelector(".h-captcha"),turnstileDiv:e.querySelector(".cf-turnstile"),hasLoginBlock:e.querySelector(".srfm-login-block")}}function recaptchaCallback(e=""){if(e&&pendingRecaptchaForm){var e=pendingRecaptchaForm,{formId:t,submitType:r,ajaxUrl:s,submitToken:o,loader:a,successUrl:i,successContainer:n,successElement:m,recaptchaType:c,afterSubmission:l}=(pendingRecaptchaForm=null,extractFormAttributesAndElements(e));if("v3-reCAPTCHA"===c)return a.classList.add("srfm-active"),void handleFormSubmission(e,t,s,o,a,i,n,m,r,l)}Array.from(document.querySelectorAll(".srfm-form")).forEach(e=>{let{formId:t,submitType:r,successUrl:s,ajaxUrl:o,submitToken:a,loader:i,successContainer:n,successElement:m,submitBtn:c,siteKey:l,recaptchaType:u,afterSubmission:d}=extractFormAttributesAndElements(e),f=!1;"v2-invisible"===u&&(grecaptcha.render(c,{sitekey:l,callback:()=>{handleFormSubmission(e,t,o,a,i,s,n,m,r,d),f=!0},"error-callback":()=>{showErrorMessageOnRecaptchaError({containerSelector:'.g-recaptcha[recaptcha-type="v2-invisible"]:not(.captcha-error-added)',message:srfm_submit?.messages?.srfm_google_captcha_error_message})}}),c.addEventListener("click",()=>{i.classList.add("srfm-active"),f&&handleFormSubmission(e,t,o,a,i,s,n,m,r,d)}))})}function showErrorMessageOnRecaptchaError(e){let{containerSelector:t,message:r=""}=e;e=document.querySelectorAll(t);e&&e.forEach(e=>{var t=e.closest(".srfm-form");t&&(showErrorMessage({form:t,message:r}),e.classList.add("captcha-error-added"))})}function emitFormSubmitSuccess(e){e=new CustomEvent("srfm_form_submission_success",{detail:{formId:"srfm-form-"+e.formId}});document.dispatchEvent(e)}document.addEventListener("DOMContentLoaded",function(){initializeFormHandlers()}),document.addEventListener("srfm_show_common_form_error",dispatchErrorEvent),window.recaptchaCallback=recaptchaCallback,window.showErrorMessage=showErrorMessage,window.handleBricksPreviewFormSubmission=function(){var e;for(e of Array.from(document.querySelectorAll(".srfm-form")))e.addEventListener("submit",async function(e){e.preventDefault()})},window.addEventListener("elementor/popup/show",function(e){e?.detail?.instance?.$element?.[0]?.querySelector(".srfm-form-container")&&initializeFormHandlers()}),document.addEventListener("srfm_form_initialize",function(){initializeFormHandlers()});
Save
Back