PluginProbe
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz / 2.8.0
SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz v2.8.0
2.12.8 2.12.7 2.12.6 2.12.5 2.12.4 2.12.3 2.12.2 2.12.1 2.12.0 2.11.1 2.11.0 2.10.1 2.10.0 2.9.1 2.9.0 2.8.2 2.8.1 2.7.0 2.7.1 2.8.0 trunk 0.0.10 0.0.11 0.0.12 0.0.13 All 98 releases
sureforms / assets / js / minified / form-submit.min.js

form-submit.min.js in SureForms – Contact Form Builder, AI Forms, Payment Form, Survey & Quiz 2.8.0, at assets/js/minified/form-submit.min.js

1 lines 10.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 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()});