-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpardot-form-handler-js.min.js
2 lines (2 loc) · 7.17 KB
/
pardot-form-handler-js.min.js
1
2
/*! pardotFormHandlerJS v.1.0.0 | (c) 2024 Mindaugas Paulauskas | https://github.com/MindaugasPaulauskas/pardotFormHandlerJS/LICENSE */
!function(e){function f(e,r,t){e.addEventListener(r,t)}function s(e,r,t){e.removeEventListener(r,t)}function m(e){return null!==e&&"object"==typeof e&&"FORM"===e.nodeName&&void 0!==e.elements}function d(){return!0}function g(e,r,o){return function(t){return e.callbacks[r]=2==o?function(e,r){return t(e,r)}:function(e){return t(e)},e}}function i(e,r,t){var o,n=this,s=(n.settings=JSON.parse(JSON.stringify(R)),n.settings);for(o in t)void 0!==s[o]&&(s[o]=t[o]);n[w]=!1,n.callbacks={};var i,a,l=this.callbacks;l[C]=d,l[F]=d,l[D]=d,l[M]=d,n[C]=g(n,C),n[F]=g(n,F),n[D]=g(n,D),n[M]=g(n,M),a=T(r),i=j(a),A[i]={id:i,formDom:!1,pardotForm:n,url:e=e+"?callback="+i+"&"+a,values:r,scriptDom:!1},n[w]=i,a=b.createElement("script"),b.body.appendChild(a),a.src=e,A[i].scriptDom=a,A[i].formDom=a,setTimeout(function(){l[C]({submit:A[i],result:!1})},1),s[E]&&setTimeout(function(){p(A[i])},s[E]),f(a,v,function(e){l[D](e.detail),n[w]=!1,l[M](e.detail)}),f(a,h,function(e){l[F](e.detail),n[w]=!1,l[M](e.detail)})}function a(n,e){var i=this,a=(i.form=n,i.settings=JSON.parse(JSON.stringify(q)),i.settings),l=(i.setSettings=function(e){for(var r in e)void 0!==a[r]&&(a[r]=e[r]);return i},i.setSettings(e),i[w]=!1,i.callbacks={},this.callbacks),u=(l[S]=d,l[C]=d,l[x]=d,l[F]=d,l[D]=d,l[M]=d,i[S]=g(i,S,2),i[C]=g(i,C),i[x]=g(i,x),i[F]=g(i,F),i[D]=g(i,D),i[M]=g(i,M),!(i.destroy=function(){return s(i.form,"submit",r),s(i.form,v,t),s(i.form,h,o),L(i[w],"form destroyed"),i})),r=(i.pause=function(){return u=!0,i},i.unpause=function(e){return!1!==u&&((u=!1)===e?(i.formValues=!1,O(i.form,a)):(void 0!==e&&!0!==e&&(i.formValues=e),c())),i},i.formValues=!1,function(e){var r,t,o,n,s=e.target;m(s)&&(e.preventDefault(),e=N(s),function(e){for(var r=e.querySelectorAll("."+k),t=0;t<r.length;t++)r[t].parentNode.removeChild(r[t])}(s),u=!1,r=l[S](e,s),!1!==i[w]&&(t=i[w],t=B(t))&&(A[t].pardotForm.callbacks[x]({submit:A[t],result:!1}),L(t,"canceled")),!1===r?(i.formValues=!1,u=!1):(t=s,!0===(s=a)[P]&&((o=b.createElement("div")).className=y,(n=o.style).position="absolute",n.top="0",n.bottom="0",n.left="0",n.right="0",n.background=s[I],o.innerHTML=s[z],t.appendChild(o)),i.formValues=e=void 0!==r&&!0!==r?r:e,!0!==u&&c()))}),c=function(){var e,r,t,o=i.formValues;!1!==o&&(i.formValues=!1,r=i.form.getAttribute("action"),!1!==a[U]&&(r=a[U]),e=j((t=i.form,T(N(t)))),t=T(o),A[e]={id:e,formDom:n,pardotForm:i,url:r=r+"?callback="+e+"&"+t,values:o,scriptDom:!1},i[w]=e,t=b.createElement("script"),b.body.appendChild(t),t.src=r,A[e].scriptDom=t,l[C]({submit:A[e],result:!1}),a[E])&&setTimeout(function(){p(A[e])},a[E])},t=(f(n,"submit",r),function(e){V(n,e.detail),O(n),l[D](e.detail),i[w]=!1,l[M](e.detail)}),o=(f(n,v,t),function(e){V(n,e.detail),O(n),l[F](e.detail),i[w]=!1,l[M](e.detail)});f(n,h,o)}function p(e){var r;(e=B(e))&&(r={submit:A[e],result:{errors:!0}},"string"==typeof A[e].pardotForm.settings[n]&&(r.result.errorMessage=A[e].pardotForm.settings[n]),V(A[e].formDom,r),O(A[e].formDom),A[e].pardotForm.callbacks[D](r),A[e].pardotForm.callbacks[M](r),L(e,"timed out"))}var r,b=document,t="pardotFormHandlerJS",v=t+".Error",h=t+".Success",o="pardot-form-handler-js--",l=o+"jsonp-callback",y=o+"overlay",k=o+"message",J=k+"-container",o=o+"loader-spin",S="onBeforeSubmit",C="onSubmit",x="onCancel",F="onSuccess",D="onError",M="onComplete",U="actionUrl",u="successMessage",c="defaultErrorMessage",E="timeout",n="timeoutMessage",H="resetFormAfterSuccess",P="showLoadingOverlay",I="loadingOverlayBgColor",z="loadingOverlayInnerHtml",G="showFormMessaging",K="messageErrorBgColor",Q="messageErrorTxtColor",W="messageSuccessBgColor",X="messageSuccessTxtColor",Y="messagePadding",Z="messageMargin",$="messageBorderRadius",w="currentCallbackId",_=function(e){for(var r=0,t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return r},N=function(e){function r(e,r,t){switch(typeof e[r]){case"undefined":e[r]=t;break;case"string":e[r]=[e[r]],e[r].push(t);break;case"object":e[r].push(t)}return e}var t,o,n,s={};if(!m(e))return!1;for(t=0;t<e.elements.length;t++)if((n=e.elements[t]).name&&!n.disabled)switch(n.type){case"submit":case"button":case"reset":case"file":break;case"select-multiple":for(o=0;o<e.elements[t].options.length;o++)n.options[o].selected&&(s=r(s,n.name,n.options[o].value));break;case"checkbox":case"radio":if(!n.checked)break;default:s=r(s,n.name,n.value)}return s},T=function(e){function r(e){return encodeURIComponent(e)}var t,o,n=[];for(t in e)if("string"==typeof e[t])n[n.length]=r(t)+"="+r(e[t]);else if("object"==typeof e[t])for(o=0;o<e[t].length;o++)n[n.length]=r(t)+"="+r(e[t][o]);return n.join("&").replace(/%20/g,"+")},ee=function(e){for(var r="";r.length<e;)r=(Math.random().toString(36)+r).substr(2,e);return r},j=function(e){var r=[l,(new Date).getTime().toString(36),ee(8),(_(e)>>>0).toString(36)].join("-");return r=void 0!==A[r]?j(e):r},O=function(e){for(var r=e.querySelectorAll("."+y),t=0;t<r.length;t++)r[t].parentNode.removeChild(r[t])},V=function(e,r){var t=r.submit.pardotForm.settings,o=!1,n=!1,s="#555",i="#fff",a=k,l=!1;!0===t[G]&&(!0===r.result.errors||"true"===r.result.errors?(o=!0,a+=" errors",s=t[K],i=t[Q]):(a+=" success",s=t[W],i=t[X],n=t[u]),"string"==typeof r.result.errorMessage?n=(n="~~~"===(n=r.result.errorMessage).substr(n.length-3)?n.substr(0,n.length-3):n).replaceAll("~~~","<br>"):!0===o&&(n=t[c]),n&&((l=b.createElement("div")).className=a,(a=l.style).background=s,a.padding=t[Y],a.borderRadius=t[$],a.margin=t[Z],a.color=i,l.innerHTML=n,(s=null===(s=e.querySelector("."+J))?e:s).insertBefore(l,s.firstChild)),!1===o)&&!0===t[H]&&r.submit.formDom.reset()},A=[],L=function(e,r){var t,e=B(e);e&&((t=A[e].scriptDom).parentNode.removeChild(t),A[e]=r)},B=function(e){return void 0!==(e="string"==typeof e?A[e]:e)&&"string"==typeof e.id&&e.id},re={ajax:function(e,r,t){return new i(e,r,t)},callback:function(e){var r=h;if(void 0!==e){void 0===e.errors||!0!==e.errors&&"true"!==e.errors||(r=v,e.errors=!0);var t,o,n,s=!1;if("string"==typeof e.callback)s=e.callback;else{if(void 0===(t=b.currentScript))return;t=t.getAttribute("src"),t=new URL(t),s=new URLSearchParams(t.search).get("callback")}s&&A[s]&&(t=A[s].formDom)&&(o=A[s].pardotForm.settings,n=A[s],!0===e.errors&&void 0===e.errorMessage&&(e.errorMessage=o[c]),void 0!==e.errors&&!1!==e.errors||(e.errors=!1,e[u]=o[u]),t.dispatchEvent(new CustomEvent(r,{bubbles:!0,detail:{submit:n,result:e}})),L(s,r))}},getFormValues:function(e){return N(e)},setupForm:function(e,r){if(m(e))return new a(e,r)}},R={actionUrl:!1},q=(R[u]="Success! Thank you for your submission.",R[c]="Submission failed! Please enter the required information correctly.",R[E]=5e3,R[n]="Oops! The request has timed out. Please try again later.",{});for(r in q[H]=!0,q[P]=!0,q[I]="rgba(0,0,0,.1)",q[z]="<style>@keyframes "+o+"{100%{transform:rotate(360deg);}}</style><div style='position:absolute;top:50%;left:50%;width:50px;height:50px;box-sizing:border-box;margin:-25px 0 0 -25px;border:#fff 4px solid;border-radius:25px;animation:"+o+" 3s linear infinite;border-color:#555 transparent transparent;'></div>",q[G]=!0,q[K]="#d12",q[Q]="#fff",q[W]="#184",q[X]="#fff",q[Y]="4px",q[Z]="0 0 4px",q[$]="4px",R)q[r]=R[r];"object"==typeof e&&void 0===e[t]&&(e[t]=re)}(this);