-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfrontendforms.min.js
More file actions
1 lines (1 loc) · 14.3 KB
/
frontendforms.min.js
File metadata and controls
1 lines (1 loc) · 14.3 KB
1
function groupIbanInFour(){let e=document.querySelectorAll('[data-checkiban="true"]');if(e.length>0)for(let t=0;t<e.length;t++)e[t].addEventListener("input",(function(e){e.target.value=e.target.value.replace(/[^\da-zA-Z]/g,"").replace(/(.{4})/g,"$1 ").trim()}))}function submitCounter(){let e=document.querySelectorAll("[data-submittime]");if(e.length>0)for(let t=0;t<e.length;t++){let a=e[t].dataset.submittime,l=document.getElementById(a+"-allwrapper"),n=document.getElementById(a+"-ff-time-alert");jumpTo(l,a+"-ff-time-alert");let i=document.getElementById(a+"-timecounter");if(i){let e=parseInt(document.getElementById(a+"-minTime").getAttribute("data-time")),t=document.getElementById(a+"-minTime").getAttribute("data-unit");t=t.split(";");let l=setInterval((function(){if(e<=0){clearInterval(l),i.remove();let e=setInterval((function(){n.style.opacity||(n.style.opacity=1),n.style.opacity>0?n.style.opacity-=.1:(clearInterval(e),n.remove())}),200)}let a=t[0];e<=1&&(a=t[1]),i.innerText=e+" "+a,e-=1}),1e3)}}}function checkMultiCheckboxesRequired(){const e=document.getElementsByTagName("form");if(e&&e.length)for(let t=0;t<e.length;t++)if(!e[t].noValidate){const a=e[t].querySelectorAll("[data-multicheckbox]");if(a.length){const e=Object.groupBy(a,(e=>e.name));if(Object.keys(e).length)for(let[t,a]of Object.entries(e)){let e=!1;for(let t=0;t<a.length;t++)a[t].checked&&(e=!0);for(let l=0;l<a.length;l++)e&&(a[l].required=!1),a[l].addEventListener("change",(function(){let e=document.getElementsByName(t);if(a[l].required)for(let t=0;t<e.length;t++)e[t].removeAttribute("required");else for(let t=0;t<e.length;t++)e[t].required=!0}))}}}}function handleFileUploads(){const e=new DataTransfer;let t=document.querySelectorAll(".fileupload");if(t.length>0)for(let a=0;a<t.length;a++)t[a].addEventListener("change",(function(){let l=t[a],n=l.hasAttribute("multiple"),i=l.dataset.framework,r=l.id,s=document.getElementById(r+"-files"),d=parseInt(t[a].dataset.filesize),o=0,u=0;l.dataset.maxfilesize&&(o=l.dataset.maxfilesize),l.dataset.maxtotalfilesize&&(u=l.dataset.maxtotalfilesize);let c=!0,f="",m="",p="",g=document.getElementById(r+"-allowedFileSize");if(!g){let e=r;e=e.replace("-fileupload",""),g=document.getElementById(e+"-allowedFileSize")}let h=document.getElementById(r+"-allowedTotalFileSize");for(let t=0;t<this.files.length;t++){let a=this.files[t],r=formatBytes(a.size,2);d+=a.size,n||(s&&(s.innerHTML=""),d=a.size);let u=document.createElement("div");switch(u.className="file-block",0!==o&&a.size>o&&(c=!1),i){case"uikit3":c||(f=" uk-badge-danger",m=" ff-invalid-fs",p="uk-text-danger"),invalidTotalFileSizeNotesClass=" uk-text-danger";let e="<span class='uk-light uk-badge uk-padding-small uk-margin-xsmall-top"+f+"'>";e+="<span class='file-delete uk-margin-xsmall-right'><span data-uk-icon='icon: close'></span></span>",e+="<span class='file-name'>"+a.name+"</span>",e+="<span class='ff-file-size "+m+"'>("+r+")</span></span>",u.innerHTML=e,!g||c||g.hasAttribute("class")?n||g&&g.removeAttribute("class"):g.className+=p,c=!0,f="",m="",p="";break;case"bootstrap5":c?f=" bg-primary":(f=" bg-danger",m=" ff-invalid-fs",p="text-danger"),invalidTotalFileSizeNotesClass=" text-danger";let t="<span class='badge mt-2 p-2"+f+"'>";t+="<span class='file-delete me-1'><span class='ff-close'></span></span>",t+="<span class='file-name'>"+a.name+"</span>",t+="<span class='ff-file-size "+m+"'>("+r+")</span></span>",u.innerHTML=t,!g||c||g.hasAttribute("class")?n||g.removeAttribute("class"):g.className+=p,c=!0,f="",m="";break;default:c||(f=" text-danger",m=" ff-invalid-fs",p="text-danger"),invalidTotalFileSizeNotesClass=" text-danger";let l="<span class='ff-file-item"+f+"'>";l+="<span class='file-delete'><span class='ff-close'></span></span>",l+="<span class='ff-file-name'>"+a.name+"</span>",l+="<span class='ff-file-size "+m+"'>("+r+")</span></span>",u.innerHTML=l,!g||c||g.hasAttribute("class")?n||g&&g.removeAttribute("class"):g.className+=p,f="",m="",c=!0}s&&s.appendChild(u),u.querySelector(".file-delete").addEventListener("click",(t=>deleteFileBlock(t,u,e,l))),e.items.add(a)}let y=document.getElementById(r+"-total");0!==u&&d>u&&(h.className+=invalidTotalFileSizeNotesClass,y&&(y.className+=invalidTotalFileSizeNotesClass)),t[a].dataset.filesize=String(d),y&&(y.innerHTML=formatBytes(d)),this.files=e.files}))}function deleteFileBlock(e,t,a,l){let n=l.dataset.filesize,i=t.querySelector(".ff-file-name").textContent,r=document.getElementById(l.id+"-allowedFileSize"),s=document.getElementById(l.id+"-allowedTotalFileSize"),d=document.getElementById(l.id+"-total"),o=0;t.remove();let u=[];for(let e=0;e<a.items.length;e++){if(i===a.items[e].getAsFile().name){let t=a.items[e].getAsFile().size;a.items.remove(e),o=n-t,l.dataset.filesize=String(o),d&&(d.innerHTML=formatBytes(o));break}u.push(a.items[e].getAsFile().size)}u.every((e=>e<=l.dataset.maxfilesize))&&(d&&d.removeAttribute("class"),r&&r.removeAttribute("class")),Number.isInteger(o)&&l.dataset.maxtotalfilesize&&o<=l.dataset.maxtotalfilesize&&s&&s.removeAttribute("class"),document.querySelector(".fileupload").files=a.files}function initializeConditionalFields(){let e=document.getElementsByTagName("form");if(e.length>0)for(let t=0;t<e.length;t++){e[t];let a=e[t].id;if(a&&("undefined"!=typeof mfConditionalFields&&mfConditionalFields("#"+a,{rules:"inline",dynamic:!0,debug:!0}),e[t].getAttribute("data-valid"))){jumpTo(document.getElementById(a+"-allwrapper"),a+"-alert")}}}function editLinks(){let e=document.getElementsByClassName("ff-edit-link");if(e&&e.length>0)for(let t=0;t<e.length;t++)e[t].addEventListener("click",(function(a){a.preventDefault();let l=e[t].dataset.element,n=document.getElementById(l);if(n)if(e[t].textContent===e[t].dataset.edit)n.classList.remove("ff-final-list-hidden"),e[t].textContent=e[t].dataset.close;else{n.classList.add("ff-final-list-hidden"),e[t].textContent=e[t].dataset.edit;let a=n.getElementsByClassName("inputwrap")[0],l=a.children[0].value;if(void 0===l){let e=[],t=a.getElementsByTagName("input");if(t.length>0)for(let a=0;a<t.length;a++){let l=t[a];l.checked&&e.push(l.value)}l=e.length>0?e.toString():""}e[t].parentElement.previousSibling.innerHTML=l}}))}function prevLinks(){let e=document.getElementsByClassName("ff-prev-button");if(e&&e.length>0)for(let t=0;t<e.length;t++)e[t].addEventListener("click",(function(a){a.preventDefault(),window.location.href=e[t].dataset.prev}))}function formatBytes(e,t=2){if(!+e)return"0 B";const a=t<0?0:t,l=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,l)).toFixed(a))+" "+["B","KB","MB","GB","TB","PB","EB","ZB","YB"][l]}function reloadCaptcha(e,t){t.preventDefault();let a=document.getElementById(e);if(a){let e=a.src;e=removeURLParameter(e,"time"),a.src=e+"&time="+Date.now()}}function removeURLParameter(e,t){let a=e.split("?");if(a.length>=2){let l=encodeURIComponent(t)+"=",n=a[1].split(/[&;]/g);for(let e=n.length;e-- >0;)-1!==n[e].lastIndexOf(l,0)&&n.splice(e,1);return e=a[0]+"?"+n.join("&")}return e}window.addEventListener("DOMContentLoaded",(function(){submitCounter(),ajaxSubmit(),maxCharsCounterReverse(),handleFileUploads(),editLinks(),prevLinks(),initializeConditionalFields(),checkMultiCheckboxesRequired(),groupIbanInFour();let e=document.getElementsByTagName("button");for(let t=0;t<e.length;t++)"submit"===e[t].type&&e[t].addEventListener("click",(function(e){openHiddenWrapper(e),openHiddenWrapper(e)}));let t=document.querySelectorAll("[data-ffsuccess]");if(t.length>0)for(let e=0;e<t.length;e++)if(0===e){let a=t[e].id,l=t[e].dataset.formid;jumpTo(document.getElementById(l+"-allwrapper"),a)}})),document.addEventListener("click",(function(e){if(e.target.classList.contains("pwtoggle")){let t=e.target.dataset.toggle,a=this.getElementById(t);"password"===a.type?a.type="text":a.type="password"}}));let numInputs=document.querySelectorAll("input,select");for(let e=0;e<numInputs.length;e++)numInputs[e].addEventListener("input",changeHTML5AttributeValue,!1),numInputs[e].addEventListener("change",calculateTimeRange,!1);function requiredIfEqualHTML5Validation(e,t){let a;switch(t.type){case"checkbox":a=requiredIfEqualCheckbox(e,t);break;case"select-one":case"select-multiple":a=requiredIfEqualSelect(e,t);break;default:a=requiredIfEqualDefault(e,t)}return a}function requiredIfEqualCheckbox(e,t){let a,l,n="",i=e.dataset.ff_equal;if(i&&i.includes("|")&&(i=i.split("|")),t.checked&&("on"!==t.value?n=t.value:i=n="ff-equal-checked"),Array.isArray(i)){let n=e.dataset.ff_operator,r=[],s=document.getElementsByName(t.name);if("AND"===n){for(i=i.map(String),a=0;a<s.length;a++)s[a].checked&&r.push(s[a].value);return i.every((e=>r.includes(e)))?"required":""}for(i=i.map(String),a=0;a<s.length;a++)s[a].checked&&r.push(s[a].value);return l=r.filter((e=>-1!==i.indexOf(e))),l.length>0?"required":""}{let e=document.getElementsByName(t.name);if(e.length>1){let t=[];for(a=0;a<e.length;a++)e[a].checked&&t.push(e[a].value);return l=t.filter((e=>-1!==i.indexOf(e))),l.length>0?"required":""}return"ff-equal-checked"===n||n==i?"required":""}}function requiredIfEqualSelect(e,t){let a,l,n=e.dataset.ff_equal;if(n.includes("|")&&(n=n.split("|")),Array.isArray(n)){let i=e.dataset.ff_operator;i||(i="AND");let r=[],s=document.querySelector("[name='"+t.name+"']").options;if("AND"===i){for(n=n.map(String),a=0;a<s.length;a++)s[a].selected&&r.push(s[a].value);return n.every((e=>r.includes(e)))?"required":""}for(n=n.map(String),a=0;a<s.length;a++)s[a].selected&&r.push(s[a].value);return l=r.filter((e=>-1!==n.indexOf(e))),l.length>0?"required":""}return t.value==n?"required":""}function requiredIfEqualDefault(e,t){let a=e.dataset.ff_equal;return a.includes("|")&&(a=a.split("|")),Array.isArray(a)?a.includes(t.value)?"required":"":t.value==a?"required":""}function changeHTML5AttributeValue(){let e=this.name.replace(this.form.id+"-",""),t=e.replace(/[[]]/g,"");if(e){let e=document.querySelectorAll("[data-ff_field="+t+"]");if(e.length>0)for(let t=0;t<e.length;t++){let a=document.getElementById(e[t].id);if(a){let e=a.dataset.ff_attribute;"ff-required"===e&&(e="required");let t=this.value,l=a.dataset.ff_validator,n=document.querySelector("label[for='"+a.name+"']"),i=n.innerHTML;e&&t&&(l&&("dateBeforeField"===l&&(t=calculateBeforeAfterValue(-1,t),t=t.toISOString().split("T")[0]),"dateAfterField"===l&&(t=calculateBeforeAfterValue(1,t),t=t.toISOString().split("T")[0]),"requiredIfEmpty"===l&&(t="required"),"requiredIfEqual"===l&&(t=requiredIfEqualHTML5Validation(a,this))),"required"==t&&(n.innerHTML=i+asterisk,n.classList.add("required")),a.setAttribute(e,t)),e&&!t&&("requiredIfEmpty"!==l&&"requiredIfEqual"!==l||(a.removeAttribute(e),i=i.replace(asterisk,""),n.innerHTML=i,n.classList.remove("required")))}}}}function calculateBeforeAfterValue(e,t){let a=new Date(t);return a.setDate(a.getDate()+e),a}function calculateTimeRange(){this.id.replace(this.form.id+"-","");let e=document.querySelectorAll("[data-ff_validator]");if(e.length>0)for(let t=0;t<e.length;t++){let a=document.getElementById(e[t].id);if(a&&("dateWithinDaysRange"===a.dataset.ff_validator||"dateOutsideOfDaysRange"===a.dataset.ff_validator)){let e=a.dataset.ff_attribute,t=this.value,l=a.dataset.ff_days;if("min"===e){if(e&&t){let e=calculateNewDate(t,l,"+");e=new Date(e).toISOString().slice(0,10),"dateOutsideOfDaysRange"===a.dataset.ff_validator?l>0?a.setAttribute("min",e):l<0?a.setAttribute("max",e):a.removeAttribute("max"):l>0?(a.setAttribute("min",t),a.setAttribute("max",e)):(a.setAttribute("max",t),a.setAttribute("min",e))}}else a.removeAttribute("max")}}}function calculateNewDate(e,t,a){let l=new Date(e);return"+"===a?l.setDate(l.getDate()+parseInt(t)):l.setDate(l.getDate()-parseInt(t)),l}function jumpTo(e,t){if("false"===e.dataset.preventjumptoform){let e=location.href;location.href="#"+t,history.replaceState(null,null,e)}}function ajaxSubmit(e=null){if(e){subAjax(document.getElementById(e))}else{let e=document.querySelectorAll("[data-submitajax]");if(e.length){let t=0;for(;t<e.length;t++)subAjax(e[t])}}}function subAjax(e){"string"==typeof e&&(e=document.getElementById(e)),e&&e.addEventListener("submit",(function(t){t.preventDefault();let a=e.dataset.submitajax,l=e.getAttribute("action"),n=document.getElementById(a+"-form-submission");n&&(n.style.display=null);l.split(/#(.*)/)[1];let i=new XMLHttpRequest;i.upload.addEventListener("progress",(function(e){if(e.lengthComputable){let t=Math.round(e.loaded/e.total*100);t-=1;let l=document.getElementById(a+"-progressbar");l&&(l.dataset.percent=String(t),l.style.width=t+"%")}})),i.onload=function(){let e=this.responseText;let l=(new DOMParser).parseFromString(e,"text/html").getElementById(a+"-ajax-wrapper"),n=l.innerHTML;if(4===i.readyState&&200===i.status){let e=a+"-ajax_redirect",i=d.get(e);if("1"===l.dataset.validated){let e="";if(i){let t=i.split("#");if(t.length>1){i=t[0],e="#"+t[1]}window.location=i+e}else{document.getElementById(a+"-ajax-wrapper").innerHTML=n,jumpTo(document.getElementById(a+"-allwrapper"),a+"-ajax-wrapper")}}else{document.getElementById(a+"-ajax-wrapper").innerHTML=n,jumpTo(document.getElementById(a+"-allwrapper"),a+"-ajax-wrapper"),reloadCaptcha(a+"-captcha-image",t),ajaxSubmit(),submitCounter(),handleFileUploads(),editLinks(),prevLinks(),initializeConditionalFields(),checkMultiCheckboxesRequired(),groupIbanInFour(),"undefined"!=typeof stars&&null!==stars&&stars.rebuild(),"function"==typeof listenToSliderCaptchaCheckboxes&&listenToSliderCaptchaCheckboxes()}}};let r=e.method;r=r.toUpperCase();["POST","GET"].includes(r)||(r="POST");let s,d=new FormData(e);"GET"===r&&(s=new URLSearchParams(d),l=l+"?"+String(s)),i.open(r,l),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.send(d)}))}function maxCharsCounterReverse(){const e=document.querySelector("textarea");e&&e.addEventListener("input",(e=>{const t=e.currentTarget,a=t.getAttribute("maxlength");if(a){const e=t.value.length,l=document.getElementById(t.id+"-char_count");l&&(e===a?l.innerHTML=l.dataset.maxreached:l.children[0].innerHTML=String(a-e))}}))}function openHiddenWrapper(e){let t=e.target.form;if(!t.hasAttribute("novalidate")&&t.hasAttribute("data-step")&&"last"===t.dataset.step){let e=t.id;for(let a=0;a<t.elements.length;a++){let l=t.elements[a];if(("INPUT"===l.nodeName||"TEXTAREA"===l.nodeName||"SELECT"===l.nodeName)&&(void 0!==l.willValidate&&("INPUT"===l.nodeName&&l.type!==l.getAttribute("type")&&l.setCustomValidity(LegacyValidation(l)?"":"error"),l.checkValidity()),!l.validity.valid)){let t=l.id,a=t.replace(e+"-",""),n=document.getElementById(a+"-hidden-wrapper");if(n){n.classList.remove("ff-final-list-hidden");let e=document.getElementById(t+"-edit"),a=e.dataset.close;e.innerHTML=a}break}}}}