| 1 |
var submit_form=function(){"use strict";function e(e,t){const o=new URL(e?.ajaxURL),n=e?.entryId?"bitforms_update_form_entry":"bitforms_submit_form";return o.searchParams.append("action",n),e?.entryId&&(o.searchParams.append("_ajax_nonce",e.nonce||""),o.searchParams.append("entryID",e.entryId),o.searchParams.append("formID",e.formId),o.searchParams.append("entryToken",e.entryToken||"")),fetch(o,{method:"POST",body:t})}function t(e,t,n){e.then((e=>new Promise(((t,o)=>{e.json().then((n=>{if(e.status>=400){const e=new Error(n?.data||"Request failed");e.data=n,o(e)}else t(n)})).catch((()=>{const e=new Error("Invalid response");e.data={data:"Invalid server response. Check the browser console for more details."},o(e)}))})))).then((e=>{let a=null,r=null,s="",d=1e3;const c=window.bf_globals[t];if(void 0!==e&&e.success){const o=new CustomEvent("bf-form-submit-success",{detail:{formId:t,entryId:e.data?.entry_id,formData:n}});bfSelect(`#form-${t}`).dispatchEvent(o);const i=bfSelect(`#form-${t}`);bfReset(t),"object"==typeof e.data?(i&&e?.data?.hidden_fields?.map((e=>{setHiddenFld(e,i)})),a=e.data.redirectPage,e.data.cron&&(r=e.data.cron),e.data.cronNotOk&&(r=e.data.cronNotOk),e.data.new_nonce&&(s=e.data.new_nonce,c.nonce=s),setBFMsg({contentId:t,msgId:e.data.msg_id,msg:e.data.message,duration:e.data.msg_duration,show:!0,type:"success",error:!1}),d=Number(e.data.msg_duration||1e3)):setBFMsg({contentId:t,msg:e.data,type:"success",show:!0,error:!1}),localStorage.removeItem(`bitform-partial-form-${c.formId}`);const f=bfSelect('input[name="entryID"]',i);f&&f.remove(),delete c.entryId}else{const o=new CustomEvent("bf-form-submit-error",{detail:{formId:t,errors:e.data}});bfSelect(`#form-${t}`).dispatchEvent(o),bfValidationErrMsg(e,t)}if(function(e,t,o){const n=window.bf_globals[o];if(e)if("string"==typeof e){const t=new URL(e);t.protocol!==window.location.protocol&&(t.protocol=window.location.protocol),fetch(t)}else{const o=new URL(n.ajaxURL);o.searchParams.append("action","bitforms_trigger_workflow");const a={cronNotOk:e,token:t||n.nonce,id:n.appID};fetch(o,{method:"POST",body:JSON.stringify(a),headers:{"Content-Type":"application/json"}}).then((e=>e.json()))}}(r,s,t),a){const e=setTimeout((()=>{window.location=decodeURI(a),e&&clearTimeout(e)}),d)}o(t,!1)})).catch((e=>{if(e&&"object"==typeof e&&"data"in e){const o=e.data,n=new CustomEvent("bf-form-submit-error",{detail:{formId:t,errors:o?.data??o}});if(bfSelect(`#form-${t}`)?.dispatchEvent(n),"undefined"!=typeof bfValidationErrMsg)bfValidationErrMsg(o??{data:e.message},t);else{const n=o&&"string"==typeof o.data?o.data:e?.message||"Validation failed";setBFMsg({contentId:t,msg:n,show:!0,type:"error",error:!0})}}else{const o=e?.message?e.message:"Unknown Error";setBFMsg({contentId:t,msg:o,show:!0,type:"error",error:!0})}o(t,!1)}))}function o(e,t){const o=bfSelect('button[type="submit"]',bfSelect(`#form-${e}`));o&&(o.disabled=t);const n=bfSelect('button[type="submit"] span',bfSelect(`#form-${e}`));n&&n.classList.toggle("d-none")}return function(n=null){(n?[n]:Object.keys(window.bf_globals)).forEach((n=>{const a=bfSelect(`#form-${n}`);a&&(a.addEventListener("submit",(n=>{!function(n){n.preventDefault();const a=n.target.id.slice(n.target.id.indexOf("-")+1);if("undefined"!=typeof validateForm&&!validateForm({form:a})){const e=new CustomEvent("bf-form-validation-error",{detail:{formId:a,fieldId:"",error:""}});return void n.target.dispatchEvent(e)}o(a,!0);let r=new FormData(n.target);const s=window.bf_globals[a];"undefined"!=typeof advancedFileHandle&&(r=advancedFileHandle(s,r)),"undefined"!=typeof decisionFldHandle&&(r=decisionFldHandle(s,r)),"undefined"!=typeof hideChildFldHandle&&(r=hideChildFldHandle(s,r)),s.GCLID&&r.set("GCLID",s.GCLID);const d=[];Object.entries(s?.fields||{}).forEach((e=>{e[1]?.valid?.hide&&d.push(e[0])})),d.length&&r.append("hidden_fields",d),"v3"===s?.gRecaptchaVersion&&s?.gRecaptchaSiteKey?grecaptcha.ready((()=>{grecaptcha.execute(s.gRecaptchaSiteKey,{action:"submit"}).then((o=>{r.append("g-recaptcha-response",o),t(e(s,r),a,r)}))})):t(e(s,r),a,r)}(n)})),bfSelect('button[type="reset"]',a)?.addEventListener("click",(()=>bfReset(a.id.replace("form-",""),!0))))})),document.querySelectorAll(".msg-backdrop,.bf-msg-close").forEach((e=>{e.addEventListener("click",(t=>{t.target===e&&(t.stopPropagation(),bfSelect(`#${e.dataset.contentid} .msg-container-${e.dataset.msgid}`).classList.replace("active","deactive"))}))})),localStorage.setItem("bf-entry-id","")}}(); |