PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.14.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.14.0
2.14.0 2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 81 releases
← All changes | assets/build/blocks/form-builder/view.js +7 -0 2.7.7 → 2.14.0 View file →
@@ -1,0 +1,7 @@
1 +(()=>{"use strict";const t={baseURL:window.ABlocksGlobal?.rest_url,async request(t,{method:e="GET",params:i={},data:s=null,headers:o={}}={}){let a=`${this.baseURL}${t}`;Object.keys(i).length&&(a+=`?${new URLSearchParams(i).toString()}`);const r={method:e,headers:{"X-WP-Nonce":window.ABlocksGlobal?.nonce,...o},credentials:"same-origin"};"GET"!==e&&s&&(s instanceof FormData?r.body=s:(r.headers["Content-Type"]="application/json",r.body=JSON.stringify(s)));const n=await fetch(a,r);if(!n.ok)throw new Error(`HTTP error: ${n.status}`);return{data:await n.json()}},get(t,e={},i={}){return this.request(t,{method:"GET",params:e,...i})},post(t,e={},i={}){return this.request(t,{method:"POST",data:e,...i})},delete(t,e={},i={}){return this.request(t,{method:"DELETE",data:e,...i})},put(t,e={},i={}){return this.request(t,{method:"PUT",data:e,...i})},patch(t,e={},i={}){return this.request(t,{method:"PATCH",data:e,...i})}},e=class{constructor(t){this.form=t?.querySelector("form.ablocks-form-builder"),
2 +this.formParent=this.form?.parentNode,this.submitButtonDiv=t?.querySelector(".ablocks-form-builder__submit-button"),this.submitButton=this.form.querySelector('button[type="submit"]'),this.submitButtonText=this.submitButton?.innerText,this.isSubmitting=!1,this.init()}init(){this.feedbackContainer=this.formParent.querySelector(".ablocks-block--form-builder__feedback-message"),this.feedbackContainer.style.display="none",this.form.addEventListener("submit",this.handleSubmit.bind(this))}async handleSubmit(e){if(e.preventDefault(),this.submitButton=this.form.querySelector('button[type="submit"]'),this.submitButtonText=this.submitButton?.innerText,this.submitButton&&!this.isSubmitting)if(this.isSubmitting=!0,this.submitButton.disabled=!0,this.validateFields())this.isSubmitting=!1,this.submitButton.disabled=!1;else try{this.setLoadingState(!0);const e=new FormData(this.form);this.collectCheckedOptionsText(e);const i=e.get("action").replace("ablocks/form_builder_","").replace("_handler","")
3 +;e.delete("security"),e.delete("action");const s=new FormData,o={};for(const[t,i]of e.entries())if(t.endsWith("[]")){const e=t.slice(0,-2),a=o[e]||0;s.append(`${e}[${a}]`,i),o[e]=a+1}else s.has(t)||s.append(t,i);const a=await t.post(window.ABlocksGlobal?.namespace+`form-builder/${i}`,s);this.handleResponse(a)}catch(t){t.response?this.handleResponse(t.response):this.showFeedbackMessage("An error occurred. Please try again.","error")}finally{this.setLoadingState(!1),this.isSubmitting=!1,this.submitButton.disabled=!1}}collectFieldLabels(t){this.form.querySelectorAll(".ablocks-form-builder__field").forEach(e=>{const i=e.querySelectorAll("input, textarea, select"),s=e.querySelector(".ablocks-form-builder__label");i.forEach(e=>{if(e&&e.name){let i="";const o=e.tagName.toLowerCase();i=s&&s.textContent.trim()?s.textContent.trim():e.placeholder?e.placeholder:e.name,t.append(`${e.name}_label`,i),t.append(`${e.name}_inputType`,o)}})})}validateFields(){let t=!1
4 +;return this.form.querySelectorAll(".ablocks-form-builder__field").forEach(e=>{const i="true"===e.getAttribute("data-required"),s=e.querySelector("input, textarea"),o=e.querySelector("select"),a=e.querySelector('input[type="checkbox"]'),r=e.querySelector('input[type="radio"]'),n=e.querySelectorAll(".ablocks-form-builder__radio-option"),l=e.querySelector('input[type="radio"]:checked');let c=!0;if(n?.length>=1){const t=parseInt(e?.getAttribute("data-minimum-value")),s=parseInt(e?.getAttribute("data-maximum-value")),o=Array.from(n).filter(t=>t.classList.contains("checked")).length;t>o&&i?(this.showFeedbackMessage(`At Least Select ${t} Value`,"error"),c=!1):s<o&&i?(c=!1,this.showFeedbackMessage(`Never Select More Than ${s} Value`,"error")):i&&o<1&&(this.showFeedbackMessage("Checkbox Field Are Required","error"),c=!1)}i&&(a&&0===n.length&&!a.checked||r&&!l||s&&""===s.value.trim()||o&&""===o.value)&&(c=!1),e.classList.toggle("error-msg",!c),c||(t=!0)}),t}collectCheckedOptionsText(t){
5 +this.form.querySelectorAll(".ablocks-form-builder__field").forEach(e=>{const i=e.querySelectorAll(".ablocks-form-builder__radio-option"),s=e.querySelectorAll('input[type="radio"]');if(i.length>0){const s=[];if(i.forEach(t=>{t.classList.contains("checked")&&s.push(t.innerText.trim())}),s.length>0){const i=e.querySelector('input[type="checkbox"]')?.name;i&&(t[i]=s.join(", "))}}if(s.length>0){const e=Array.from(s).find(t=>t.checked);if(e){const i=e.name,s=e.parentElement.innerText.trim();t[i]=s}}})}setLoadingState(t){this.submitButton&&(!this.originalButtonHeight&&this.submitButton&&(this.originalButtonHeight=this.submitButton.offsetHeight),t?(this.originalButtonWidth=this.submitButton.offsetWidth,this.submitButton.style.width=`${this.originalButtonWidth}px`,this.submitButton.disabled=!0,this.submitButton.innerText="",this.submitButton.classList.add("loading"),this.submitButton.style.height=`${this.originalButtonHeight}px`):(this.submitButton.disabled=!1,this.submitButton.style.width="",
6 +this.submitButton.innerText=this.submitButtonText,this.submitButton.classList.remove("loading"),this.submitButton.style.height=""))}handleResponse(t){const e=t?.data?.success,i=e?t?.data?.data?.confirmationNotice:t?.data?.data?.message,s=t?.data?.data?.afterFormSubmission,o=t?.data?.data?.confirmationType,a=e?"success":"error",r=i,n=t?.data?.data?.redirect_url,l=t?.data?.data?.link_target,c=t?.data?.data?.formType;("success"===o||l)&&this.showFeedbackMessage(r,a),e&&n&&"redirect"===o?l?(this.form.reset(),window.open(n,"_blank"),"hide"===s&&(this.form.style.display="none"),"login"!==c&&"registration"!==c||setTimeout(()=>{window.location.reload()},2e3)):"login"===c||"registration"===c?(this.showFeedbackMessage(r,a),setTimeout(()=>{window.location.href=n},2e3)):window.location.href=n:!0===e&&"reset"===s?(this.form.reset(),"login"===c||"registration"===c?setTimeout(()=>{window.location.reload()},2e3):setTimeout(()=>{this.feedbackContainer.style.display="none"
7 +},2e4)):!0===e&&"hide"===s&&(this.form.reset(),this.form.style.display="none",setTimeout(()=>{this.form.style.display="flex",this.feedbackContainer.style.display="none"},2e4))}showFeedbackMessage(t,e){this.feedbackContainer.style.display="block",this.feedbackContainer.innerHTML=`<p class="${e}-msg">${t}</p>`,this.feedbackContainer.className="ablocks-block--form-builder__feedback-message",this.feedbackContainer.classList.add("ablocks-block--form-builder__"+e)}};document.addEventListener("DOMContentLoaded",function(){!function(t,e,i="ablocksInitialized"){t&&("function"==typeof t.forEach?t:[t]).forEach(t=>{t&&t.dataset&&!t.dataset[i]&&(t.dataset[i]="1",e(t))})}(document.querySelectorAll(".ablocks-block--form-builder"),t=>{new e(t)},"ablocksFormBuilderInit")})})();