OwlCyberSecurity - MANAGER
Edit File: validation.min.js
function srfmSprintfString(e,...t){let s=0;return e.replace(/%(\d+\$)?s/g,(e,r)=>{r=r?parseInt(r)-1:s++;return void 0!==t[r]?t[r]:e})}async function getUniqueValidationData(r,e,t,s){let o="action=validation_ajax_action&nonce="+encodeURIComponent(s)+"&id="+encodeURIComponent(e);Object.keys(r).forEach(e=>{o+="&"+encodeURIComponent(e)+"="+encodeURIComponent(r[e])});try{var i=await fetch(t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o});if(i.ok)return(await i.json()).data}catch(e){console.error(e)}}async function fieldValidation(e,r,t,s,o=!1){let l=!1,i=null,a=null,n={};const c=(e,r,t={})=>{i||(i=e,a=r,n=t)};let m=null;var f=document.querySelectorAll('input[data-unique="true"]');if(0!==f.length){var u={};for(const h of f){var d=h.name,b=h.value;u[d]=b}m=await getUniqueValidationData(u,e,r,t)}for(const E of o?[s]:Array.from(s.querySelectorAll(".srfm-block-single"))){let r=!1;if(Array.isArray(window.sureforms?.skipValidationCallbacks)&&window.sureforms.skipValidationCallbacks.forEach(e=>{"function"==typeof e&&(r=r||e(E))}),!r){var p=E.closest("form").getAttribute("form-id");if(p===e){const x=E.querySelector("input, textarea, select");var p=x.getAttribute("data-required"),v=x.getAttribute("data-unique");let r=x.getAttribute("name");var L,g,y,k=x.value;const _=E.querySelector(".srfm-error-message");if(r=r&&r.replace(/_/g," "),p&&"hidden"!==x.type&&("true"!==p||k?x&&x.closest(".srfm-block").classList.remove("srfm-error"):(x&&x.closest(".srfm-block").classList.add("srfm-error"),_&&(_.textContent=_.getAttribute("data-error-msg")),l=!0,c(x,x.closest(".srfm-block"))),x.addEventListener("input",()=>{x.closest(".srfm-block").classList.remove("srfm-error")})),"true"===v&&""!==k&&(m?.some(e=>"not unique"===e[r])?(x&&x.closest(".srfm-block").classList.add("srfm-error"),_.style.display="block",_.textContent=_.getAttribute("data-unique-msg"),l=!0,c(x,x.closest(".srfm-block"))):x&&(x.closest(".srfm-block").classList.remove("srfm-error"),_.style.display="none")),E.classList.contains("srfm-multi-choice-block")||E.classList.contains("srfm-checkbox-block")||E.classList.contains("srfm-gdpr-block")){var w=E.querySelectorAll("input"),v=w[0].getAttribute("data-required");let r=!1,t=null;for(let e=0;e<w.length;e++)if(t||"hidden"===w[e].type||(t=w[e]),w[e].checked){r=!0;break}"true"!==v||r?_&&E.classList.remove("srfm-error"):(_&&(_.textContent=E.querySelector(".srfm-error-message").getAttribute("data-error-msg"),E.classList.add("srfm-error")),l=!0,c(t,E)),w.forEach(e=>{e.addEventListener("input",()=>{E.classList.remove("srfm-error")})})}if(E.classList.contains("srfm-url-block")&&(v=E.querySelector("input"),E.classList.contains("srfm-url-error")&&(E.classList.add("srfm-error"),l=!0,c(v,E)),v.addEventListener("input",()=>{E.classList.remove("srfm-error")})),E.classList.contains("srfm-phone-block")&&(v=E.querySelectorAll("input")[1],E.classList.contains("srfm-phone-error")&&(E.classList.add("srfm-error"),l=!0,c(v,E)),E.querySelectorAll("input").forEach(e=>{e.addEventListener("input",()=>{E.classList.remove("srfm-error")})})),E.classList.contains("srfm-password-block-wrap")&&(v=E)&&(v=v.querySelector(".srfm-password-confirm-block"))&&(g=v.querySelector(".srfm-input-password-confirm").value,L=v.querySelector(".srfm-error-message"),!g&&L&&"true"===p?(L.textContent=L.getAttribute("data-error-msg"),v.classList.add("srfm-error"),c(g,v),l=!0):g!==k?(v.classList.add("srfm-error"),L.textContent=window?.srfm_submit?.messages?.confirm_password_same,c(g,v),l=!0):v.classList.remove("srfm-error")),E.classList.contains("srfm-email-block-wrap")){const C=E;if(C){const I=C.querySelector(".srfm-email-confirm-block");C.classList.contains("srfm-valid-email-error")&&(c(x,C),l=!0),I&&(L=I.querySelector(".srfm-input-email-confirm"),g=I.querySelector(".srfm-input-email-confirm").value,v=I.querySelector(".srfm-error-message"),!g&&v&&"true"===p?(v.textContent=v.getAttribute("data-error-msg"),I.classList.add("srfm-error"),c(L,I),l=!0):g!==k?(I.classList.add("srfm-error"),v.textContent=window?.srfm_submit?.messages?.confirm_email_same,c(L,I),l=!0):I.classList.remove("srfm-error"),L.addEventListener("input",()=>{I.classList.remove("srfm-error")})),C.querySelector(".srfm-input-email").addEventListener("input",()=>{C.classList.remove("srfm-error")})}}if(E.classList.contains("srfm-upload-block")&&("true"!==(y=(v=E.querySelector(".srfm-input-upload")).getAttribute("data-required"))||v.value?x&&x.closest(".srfm-block").classList.remove("srfm-error"):("true"===y&&_&&(_.textContent=_.getAttribute("data-error-msg")),x&&x.closest(".srfm-block").classList.add("srfm-error"),l=!0,c(v,E)),v.addEventListener("input",()=>{x&&x.closest(".srfm-block").classList.remove("srfm-error")})),E.classList.contains("srfm-number-block")&&(y=x.getAttribute("min"),v=x.getAttribute("max"),S=x.getAttribute("format-type"),k)&&(S="eu-style"===S?parseFloat(k.replace(/\./g,"").replace(",",".")):parseFloat(k.replace(/,/g,"")),y&&(""!==y&&Number(S)<Number(y)?(x.closest(".srfm-block").classList.add("srfm-error"),_&&(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.input_min_value,y))):x.closest(".srfm-block").classList.remove("srfm-error")),v)&&(""!==v&&Number(S)>Number(v)?(x.closest(".srfm-block").classList.add("srfm-error"),_&&(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.input_max_value,v))):x.closest(".srfm-block").classList.remove("srfm-error")),E.classList.contains("srfm-rating-block")&&("true"!==(k=E.querySelector(".srfm-input-rating")).getAttribute("data-required")||k.value?k.closest(".srfm-block").classList.remove("srfm-error"):(k.closest(".srfm-block").classList.add("srfm-error"),l=!0,c(E.querySelector(".srfm-icon"),E))),E.classList.contains("srfm-slider-block")){var S=E.getAttribute("data-required"),v=E.querySelector(".srfm-input-slider"),k=E.querySelector(".srfm-text-slider"),q=E.getAttribute("data-default");if("true"===S){let e=!1;(e=(!v||v.dataset.interacted||q&&"false"!==q)&&(!k||k.dataset.interacted||q&&"false"!==q)?e:!0)?(E.classList.add("srfm-error"),l=!0,c(v,E)):E.classList.remove("srfm-error")}}if(E.classList.contains("srfm-dropdown-block")){k=E.querySelectorAll(".srfm-input-dropdown-hidden");const V=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;k.forEach(e=>{const r=e.getAttribute("data-required");var t,s,o,i=e.getAttribute("name");"true"!==r||e.value?e.value?(o=e.getAttribute("data-min-selection"),t=e.getAttribute("data-max-selection"),(o||t)&&(s=e.value.split(","),o&&s.length<o?(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.dropdown_min_selections,o),e.closest(".srfm-block").classList.add("srfm-error"),l=!0):t&&s.length>t&&(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.dropdown_max_selections,t),e.closest(".srfm-block").classList.add("srfm-error"),l=!0))):e.closest(".srfm-block").classList.remove("srfm-error"):(_.textContent=_.getAttribute("data-error-msg"),e.closest(".srfm-block").classList.add("srfm-error"),l=!0),l&&(o=window?.srfm?.[i]||e,c(o,e.closest(".srfm-block"),{shouldDelayOnFocus:!0})),new V(()=>{e.value?e.closest(".srfm-block").classList.remove("srfm-error"):"true"===r&&e.closest(".srfm-block").classList.add("srfm-error")}).observe(e,{attributes:!0,attributeFilter:["value"]})})}if(E.classList.contains("srfm-multi-choice-block")){var A=E.querySelectorAll("input"),q=A[0].getAttribute("data-min-selection"),v=A[0].getAttribute("data-max-selection");let r=null,t=0,e=!1;for(let e=0;e<A.length;e++)r||"hidden"===A[e].type||(r=A[e]),A[e].checked&&t++;(q||v)&&0<t&&(!e&&0<q&&(p&&1<q||!p)&&t<q&&(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.min_selections,q),e=!0),!e&&0<v&&t>v&&(_.textContent=srfmSprintfString(window?.srfm_submit?.messages?.max_selections,v),e=!0),e?(E.classList.add("srfm-error"),c(r,E),l=!0):p||E.classList.remove("srfm-error"))}}}}return!!l&&{validateResult:l,firstErrorInput:i,scrollElement:a,...n}}function initializeInlineFieldValidation(){["srfm-input-block","srfm-email-block-wrap","srfm-url-block","srfm-phone-block","srfm-checkbox-block","srfm-gdpr-block","srfm-number-block","srfm-multi-choice-block","srfm-datepicker-block","srfm-upload-block","srfm-rating-block","srfm-textarea-block","srfm-dropdown-block","srfm-slider-block"].forEach(e=>addBlurListener(e,"."+e))}function addBlurListener(r,t){var e=Array.from(document.getElementsByClassName(r));if(e)for(const s of e){let e=s.querySelector("input")||s.querySelector("textarea")||s.querySelector("select");if("srfm-upload-block"===r&&(e=s.querySelector('input[type="file"]')),"srfm-rating-block"===r&&addRatingBlurListener(e,s,t),"srfm-multi-choice-block"===r&&addMultiChoiceBlurListener(e,s,t),"srfm-email-block-wrap"===r&&addEmailBlurListener(s,t),"srfm-slider-block"===r&&addSliderBlurListener(e,s,t),"srfm-dropdown-block"===r){const o=e.getAttribute("name");setTimeout(()=>{window?.srfm?.[o]?.on("blur",function(){fieldValidationInit(e,t)})},500)}e&&e.addEventListener("blur",async function(){fieldValidationInit(e,t)})}}function addRatingBlurListener(t,e,s){(t=e.querySelectorAll(".srfm-icon")).forEach((e,r)=>{r===t.length-1&&e.addEventListener("blur",async function(){fieldValidationInit(e,s)})})}function addMultiChoiceBlurListener(e,r,t){r.querySelectorAll(".srfm-input-multi-choice-single").forEach(e=>{e.addEventListener("blur",async function(){fieldValidationInit(e,t)})})}function addEmailBlurListener(e,r){var t=e.querySelectorAll("input");const l=e.closest(r);t.forEach(i=>{i.addEventListener("input",async function(){i.value=i.value.trim().toLowerCase();let e=!1;/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(i.value)&&(e=!0);var r=i.classList.contains("srfm-input-email-confirm")?l.querySelector(".srfm-email-confirm-block"):l.querySelector(".srfm-email-block"),t=r.querySelector(".srfm-error-message");if(i.value||(t.style.display="none",r.classList.remove("srfm-valid-email-error")),i.classList.contains("srfm-input-email-confirm")){var s=l.querySelector(".srfm-input-email"),o=l.querySelector(".srfm-email-confirm-block").querySelector(".srfm-error-message");if(s.value!==i.value)return o.style.display="block",o.textContent=window?.srfm_submit?.messages?.confirm_email_same,void l.classList.add("srfm-error");l.classList.remove("srfm-error"),o.textContent="",o.style.display="none"}e?(t.style.display="none",r.parentElement.classList.remove("srfm-valid-email-error")):(r.parentElement.classList.add("srfm-valid-email-error"),t.style.display="block",t.innerHTML=window?.srfm_submit?.messages?.valid_email)})})}function addSliderBlurListener(e,r,t){const s=r.querySelector(".srfm-input-slider");r=r.querySelector(".srfm-text-slider");if(s&&s.addEventListener("blur",async function(){fieldValidationInit(s,t)}),r){const o=r.querySelector(".srfm-slider-thumb");o&&o.addEventListener("blur",async function(){fieldValidationInit(o,t)})}}const fieldValidationInit=async(e,r)=>{e=e.closest(r),r=e.closest("form");await fieldValidation(r.getAttribute("form-id"),r.getAttribute("ajaxurl"),r.getAttribute("nonce"),e,!0)},handleScrollAndFocusOnError=e=>{var r,t,s;e?.firstErrorInput&&(e?.scrollElement&&(r=e.scrollElement.getBoundingClientRect().top,t=window.pageYOffset,s=window.innerHeight,window.scroll({top:r+t-s/2,behavior:"smooth"})),e?.shouldDelayOnFocus?setTimeout(()=>{e.firstErrorInput.focus({preventScroll:!0})},500):e.firstErrorInput.focus({preventScroll:!0}))};export{fieldValidation,initializeInlineFieldValidation,handleScrollAndFocusOnError};