2 lines
19 KiB
JavaScript
2 lines
19 KiB
JavaScript
function t_form__conditionals_decodeHTMLEntities(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value}function t_form__conditionals_initFields(t,e){return t_form__conditionals_syncFields(t,{shouldPreventSubmit:!1,ignoredInputGroups:e}),t_form__conditionals_initFieldsListeners(t,e),t_form__conditionals_initSyncListeners(t),t_form__conditionals_notifyAboutInit(t),{addListeners:function n(o){t_form__conditionals_addFieldsListeners(t,o,e)},addStateChangeListeners:function e(n){t_form__conditionals_addConditionalStateListeners(t,n)}}}function t_form__conditionals_syncFields(t,e){var n=e||{},o=n.shouldPreventSubmit,i=void 0===o||o,r=n.ignoredInputGroups,a=void 0===r?[]:r,c=document.getElementById("rec"+t),u=c.querySelectorAll(".t-conditional[data-conditionals]");0===u.length&&(u=c.querySelectorAll(".t-input-group[data-conditionals]"));var l=Array.prototype.slice.call(u);a&&a.length&&(l=t_form__conditionals_filterOut(l,a)),l.forEach((function(e){var n=e.getAttribute("data-conditionals"),o=JSON.parse(n),r=o.action,a=o.conditions,c=o.conditionsCombination,u=a.map((function(e){return t_form__conditionals_calculateCondition(t,e)})).filter((function(t){return"invalid"!==t.status}));if(0!==u.length){var l=u.some((function(t){return"hidden"===t.status}));if("all"!==c&&1!==u.length||!l){var d="all"===c?u.every(t_form__conditionals_canApplyCondition):u.some(t_form__conditionals_canApplyCondition),_;if(i)t_form__conditionals_shouldPreventSubmit(e,d,r)&&t_form__conditionals_preventSubmit(e);return"hide"===r?d?t_form__hideField(e):t_form__showField(e):"show"===r?d?t_form__showField(e):t_form__hideField(e):void 0}t_form__hideField(e)}}))}function t_form__conditionals_shouldPreventSubmit(t,e,n){var o=t.getAttribute("data-hidden-by-condition");return"hide"===n?e&&!o:"show"===n?e&&o:void 0}function t_form__conditionals_handlePreventSubmit(t){t.target.classList.contains("t-submit")&&(t.preventDefault(),t.stopPropagation()),this.removeEventListener("click",t_form__conditionals_handlePreventSubmit),this.removeEventListener("focusout",t_form__conditionals_handlePreventSubmit)}function t_form__conditionals_preventSubmit(t){var e=t.closest("form");e&&(e.addEventListener("click",t_form__conditionals_handlePreventSubmit,{once:!0}),e.addEventListener("focusout",t_form__conditionals_handlePreventSubmit,{once:!0}))}function t_form__conditionals_initFieldsListeners(t,e){function n(){t_form__conditionals_syncFields(t,{ignoredInputGroups:e})}t_form__conditionals_addFieldsListeners(t,n,e)}function t_form__conditionals_addFieldsListeners(t,e,n){var o,i=document.getElementById("rec"+t).querySelector(".t-form__inputsbox"),r=Array.prototype.slice.call(i.querySelectorAll(".t-input-group"));n&&n.length&&(r=t_form__conditionals_filterOut(r,n)),r.forEach((function(t){t_form__conditionals_getCallbacks(t).listen(e)}))}function t_form__conditionals_addConditionalStateListeners(t,e){var n,o;document.getElementById("rec"+t).querySelectorAll(".t-conditional").forEach((function(t){t.addEventListener("conditional-state-change",(function(t){e(t)}))}))}function t_form__conditionals_calculateCondition(t,e){var n=e.fieldId,o,i=document.getElementById("rec"+t).querySelector('.t-input-group[data-input-lid="'+n+'"]'),r=t_form__conditionals_isConditionEmpty(e),a=e.disabled;if(!i||r||a)return{status:"invalid",value:null};var c=i.closest(".t-conditional"),u;return"true"===i.getAttribute("data-hidden-by-condition")||c&&"true"===c.getAttribute("data-hidden-by-condition")?{status:"hidden",value:null}:{status:"valid",value:t_form__conditionals_getCallbacks(i).verify(e)}}function t_form__showField(t){var e=t_form__getFieldType(t),n="true"===t.getAttribute("data-hidden-by-condition");t.ariaHidden=!1,t.removeAttribute("data-hidden-by-condition"),n&&t_form__conditionals_notifyAboutStateChange(t,{hidden:!1});var o=t.querySelector(".t-quiz__step__img-wrapper"),i,r;if(("ri"===e||o)&&window.t_lazyload_update&&window.t_lazyload_update(),"rg"===e){var a=t.querySelector(".t-range");a&&t_triggerEvent(a,"displayChanged")}"contact_method"!==e?t.querySelectorAll('.js-tilda-rule[data-tilda-req="1"]').forEach((function(t){t.removeAttribute("data-hidden-by-condition")})):t.querySelectorAll('.t-input[data-tilda-req="1"]').forEach((function(t){t.removeAttribute("data-hidden-by-condition")}))}function t_form__hideField(t){var e=t_form__getFieldType(t),n="true"===t.getAttribute("data-hidden-by-condition"),o,i;(t.ariaHidden=!0,t.setAttribute("data-hidden-by-condition","true"),n||t_form__conditionals_notifyAboutStateChange(t,{hidden:!0}),"contact_method"!==e)?t.querySelectorAll('.js-tilda-rule[data-tilda-req="1"]').forEach((function(t){t.setAttribute("data-hidden-by-condition","true")})):t.querySelectorAll('.t-input[data-tilda-req="1"]').forEach((function(t){t.setAttribute("data-hidden-by-condition","true")}))}function t_form__getFieldType(t){if(t.classList.contains("t-quiz__step__input")){var e=t.querySelector(".t-input-group");return e?e.getAttribute("data-field-type"):""}return t.getAttribute("data-field-type")}function t_form__conditionals_getCallbacks(t){var e=t.getAttribute("data-field-type"),n=t.getAttribute("data-input-lid"),o={rd:{verify:function e(n){var o=n.condition;return t_form__conditionals_verifyCheckboxOrRadio(t,o)},listen:function e(n){var o,i;("cb"===t.getAttribute("data-field-radcb")?t.querySelectorAll('input[type="checkbox"]'):t.querySelectorAll('input[type="radio"]')).forEach((function(t){t.addEventListener("change",n)}))}},sb:{verify:function e(n){var o=n.fieldId,i=n.condition,r=t.querySelector("#input_"+o),a=r.value.trim(),c=r.options[r.selectedIndex],u,l;return c&&c.hasAttribute("data-calc-value")&&(a=t_form__conditionals_prepareCalcValue(c).trim()),a.toString().replace(/\s+/g," ")===i.value.trim().toString().replace(/\s+/g," ")},listen:function e(n){var o;t.querySelector("select").addEventListener("change",n)}},ri:{verify:function e(n){var o=n.condition;return t_form__conditionals_verifyCheckboxOrRadio(t,o)},listen:function e(n){var o,i;("cb"===t.getAttribute("data-field-radcb")?t.querySelectorAll('input[type="checkbox"]'):t.querySelectorAll('input[type="radio"]')).forEach((function(t){t.addEventListener("change",n)}))}},qn:{verify:function e(n){var o=n.condition,i;return t_form__conditionals_compareNumbers(t.querySelector('input[type="number"]').value,o.value,o.comparisonType)},listen:function e(n){var o=t.querySelector('input[type="number"]'),i=t.querySelectorAll(".t-inputquantity__btn");t_form__conditionals_listenToEventOrEnterPress(o,"change",n),i.forEach((function(t){t&&t.addEventListener("click",n)}))}},rg:{verify:function e(n){var o=n.condition,i;return t_form__conditionals_compareNumbers(t.querySelector('input[type="range"]').value,o.value,o.comparisonType)},listen:function e(n){var o;t_form__conditionals_listenToEventOrEnterPress(t.querySelector('input[type="range"]'),"change",n)}},fr:{verify:function e(n){var o=n.condition,i;return t_form__conditionals_compareNumbers(t.querySelector("input.t-calc__hiddeninput").value,o.value,o.comparisonType)},listen:function e(n){var o=t.querySelector("input.t-calc__hiddeninput");o&&o.addEventListener("change",n)}},in:{verify:function e(n){var o=n.condition,i=t.querySelector('input[type="text"]'),r,a;return t_form__conditionals_compareStrings(t_form__conditionals_inputMatchesMask(i,["data-tilda-mask"])?i.value:"",o.value,o.comparisonType)},listen:function e(n){var o=t.querySelector('input[type="text"]');o&&(o.getAttribute("data-tilda-mask")?t_form__conditionals_listenToEventOrEnterPress(o,"blur",n):t_form__conditionals_listenToEventOrEnterPress(o,"change",n))}},ta:{verify:function e(n){var o=n.condition,i,r,a;return t_form__conditionals_compareStrings(t.querySelector("textarea").value.split("\n").map((function(t){return t.trim()})).filter(Boolean).join(" "),o.value,o.comparisonType)},listen:function e(n){var o=t.querySelector("textarea");o&&o.addEventListener("change",n)}},em:{verify:function e(n){var o=n.condition,i,r;return t_form__conditionals_compareStrings(t.querySelector('input[type="email"]').value,o.value,o.comparisonType)},listen:function e(n){var o;t_form__conditionals_listenToEventOrEnterPress(t.querySelector('input[type="email"]'),"change",n)}},ph:{verify:function e(n){var o=n.condition,i,r,a;return t_form__conditionals_compareStrings(t_form__conditionals_inputMatchesMask(t.querySelector('input[type="tel"]'),["data-phonemask-without-code","data-tilda-mask"])?t_form__conditionals_getCurrentPhone(t):"",o.value,o.comparisonType)},listen:function e(n){t_onFuncLoad("t_forms__fieldApi",(function(){t_forms__fieldApi(t).then((function(t){t.onChange(n)}))}))}},nm:{verify:function e(o){var i=o.condition,r,a;return t_form__conditionals_compareStrings(t.querySelector("#input_"+n).value,i.value,i.comparisonType)},listen:function e(o){var i;t_form__conditionals_listenToEventOrEnterPress(t.querySelector("#input_"+n),"change",o)}},ur:{verify:function e(o){var i=o.condition,r,a;return t_form__conditionals_compareStrings(t.querySelector("#input_"+n).value,i.value,i.comparisonType)},listen:function e(o){var i;t_form__conditionals_listenToEventOrEnterPress(t.querySelector("#input_"+n),"change",o)}},da:{verify:function e(o){var i=o.condition,r,a;return t_form__conditionals_compareDates(t_form__conditionals_prepareDateFromDatePicker(t.querySelector("#input_"+n)),i.value,i.comparisonType)},listen:function e(o){var i=t.querySelector("#input_"+n);i&&(t_form__conditionals_listenToEventOrEnterPress(i,"blur",o),i.addEventListener("change",(function(){o()})))}},tm:{verify:function e(o){var i=o.condition,r=t.querySelector("#input_"+n),a,c;return t_form__conditionals_compareTime(t_form__conditionals_inputMatchesMask(r,["data-tilda-mask"])?r.value:"",i.value,i.comparisonType)},listen:function e(o){var i=t.querySelector("#input_"+n);i&&t_form__conditionals_listenToEventOrEnterPress(i,"blur",o)}},cb:{verify:function e(n){var o=n.condition,i,r;return t_form__conditionals_compareCheckbox(t.querySelector('input[type="checkbox"]').checked,o.comparisonType)},listen:function e(n){var o=t.querySelector('input[type="checkbox"]');o&&o.addEventListener("change",n)}},uw:{verify:function e(n){var o=n.condition,i=t.querySelector(".t-upwidget-container__data"),r,a;return i?t_form__conditionals_compareFiles(i.querySelector('input[type="hidden"]'),o.comparisonType):"not_uploaded"===t_form__conditionals_prepareComparisonType(o.comparisonType).type},listen:function e(n){var o=document.querySelector(".t-records"),i;(o?o.getAttribute("data-tilda-mode"):null)||t_onFuncLoad("t_upwidget__init",(function(){setTimeout((function(){var e=t.querySelector(".t-upwidget-container");e&&(e.addEventListener("uwFileUploaded",n),e.addEventListener("uwFileRemoved",n))}),500)}))}},uc:{verify:function e(n){var o=n.condition,i;return t_form__conditionals_compareFiles(t.querySelector('input[role="uploadcare-uploader"]'),o.comparisonType)},listen:function t(e){var o=document.querySelector(".t-records"),i;(o?o.getAttribute("data-tilda-mode"):null)||t_onFuncLoad("uploadcare",(function(){var t=window.uploadcare,o;t&&t.Widget('[data-input-lid="'+n+'"] [role="uploadcare-uploader"]').onUploadComplete.add(e)}))}},rs:{verify:function e(n){var o=n.condition,i=t.querySelectorAll('input[type="radio"]'),r;return Array.from(i).filter((function(t){return t.checked})).some((function(t){return t_form__conditionals_compareNumbers(t.value,o.value,o.comparisonType)}))},listen:function e(n){var o;t.querySelectorAll('input[type="radio"]').forEach((function(t){t.addEventListener("change",n)}))}},dl:{verify:function e(n){var o=n.condition,i=t.querySelectorAll('input[type="radio"]'),r;return Array.from(i).filter((function(t){return t.checked})).some((function(t){return t.value===o.value}))},listen:function e(n){var o;t.querySelectorAll('input[type="radio"]').forEach((function(t){t.addEventListener("change",n)}))}},contact_method:{verify:function e(n){var o=n.condition;return t_form__conditionals_verifyCheckboxOrRadio(t,o)},listen:function e(n){var o;t.querySelectorAll('input[type="radio"]').forEach((function(t){t.addEventListener("change",n)}))}}};return e in o?o[e]:{verify:function t(){},listen:function t(){}}}function t_form__conditionals_compareNumbers(t,e,n){var o=t_form__conditionals_prepareComparisonType(n),i=o.group,r=o.type;if(-1!==i.indexOf("btwn")&&!Array.isArray(e))return console.warn("Condition value must of type [number, number] when comparison type is range. Condition value is:"+e),!1;if(!e)return console.warn("Please, set the condition value, otherwise the condition wont work. Condition value is:"+e),!1;if(""===t)return!1;var a=Number(t),c=Array.isArray(e)?e.map(Number):Number(e);switch(r){case"equals":return a===c;case"not_equals":return a!==c;case"greater":return a>c;case"less":return a<c;case"greater_equal":return a>=c;case"less_equal":return a<=c;case"fits":return c[0]<a&&a<c[1];case"fits_include_start":return c[0]<=a&&a<c[1];case"fits_include_end":return c[0]<a&&a<=c[1];case"fits_include_both":return c[0]<=a&&a<=c[1];default:throw new Error("Unknown comparison type when comparing two numbers:"+n)}}function t_form__conditionals_compareStrings(t,e,n){var o,i=t_form__conditionals_prepareComparisonType(n).type,r=t.trim().toLowerCase(),a=e.trim().toLowerCase();switch(i){case"equals":return r===a;case"not_equals":return Boolean(r)&&r!==a;case"includes":return-1!==r.indexOf(a);case"excludes":return Boolean(r)&&-1===r.indexOf(a);case"filled_in":return Boolean(r);case"not_filled_in":return!r;default:throw new Error("Unknown comparison type when comparing two strings:"+n)}}function t_form__conditionals_compareDates(t,e,n){var o=t_form__conditionals_prepareComparisonType(n),i=o.group,r=o.type;if(-1!==i.indexOf("btwn")&&!Array.isArray(e))return console.warn("Condition value must of type [string, string] when comparison type is range. Condition value is: "+e),!1;function a(t){return t?new Date(t).getTime():NaN}var c=a(t),u=Array.isArray(e)?e.map(a):a(e);switch(r){case"equals":return c===u;case"not_equals":return Boolean(c)&&c!==u;case"greater":return c>u;case"less":return c<u;case"fits":return u[0]<c&&c<u[1];default:throw new Error("Unknown comparison type when comparing dates: "+n)}}function t_form__conditionals_prepareDateFromDatePicker(t){var e=t_form__conditionals_getDateDivider(t),n=t.value.split(e),o=t.getAttribute("data-tilda-dateformat");if(""!=n){if("DD-MM-YYYY"===o)return n[2]+"-"+n[1]+"-"+n[0];if("MM-DD-YYYY"===o)return n[2]+"-"+n[0]+"-"+n[1];if("YYYY-MM-DD"===o)return n[0]+"-"+n[1]+"-"+n[2]}}function t_form__conditionals_getDateDivider(t){if(t){var e=t.getAttribute("data-tilda-datediv");return"dash"!==e&&e?"slash"===e?"/":"dot"===e?".":void 0:"-"}}function t_form__conditionals_compareTime(t,e,n){var o=t_form__conditionals_prepareComparisonType(n),i=o.group,r=o.type;if(-1!==i.indexOf("btwn")&&!Array.isArray(e))return console.warn("Condition value must of type [string, string] when comparison type is range. Condition value is: "+e),!1;switch(r){case"equals":return t===e;case"not_equals":return Boolean(t)&&t!==e;case"greater":return Boolean(t)&&t>e;case"less":return Boolean(t)&&t<e;case"fits":return e[0]<t&&t<e[1];default:throw new Error("Unknown comparison type when comparing time: "+n)}}function t_form__conditionals_compareCheckbox(t,e){var n;switch(t_form__conditionals_prepareComparisonType(e).type){case"filled_in":return Boolean(t);case"not_filled_in":return!t;default:throw new Error("Unknown comparison type when comparing checkbox: "+e)}}function t_form__conditionals_getCurrentPhone(t){var e=t.querySelector('input[type="tel"]');if(!e)return"";var n=e.getAttribute("data-phonemask-code"),o=e.value||"";return n?n+" "+o:o}function t_form__conditionals_maskToRegex(t,e){var n={a:"[A-Za-z]","а":"[А-Яа-яЁё]","*":"[A-Za-zА-Яа-яЁё0-9]"};"data-phonemask-without-code"===e?n[0]="[0-9]":n[9]="[0-9]";var o=t.replace(/([[\]{}()^$.+?|])/g,"\\$1");return new RegExp("^"+o.split("").map((function(t){return n[t]||t})).join("")+"$")}function t_form__conditionals_valueMatchesMask(t,e,n){return!!t&&t_form__conditionals_maskToRegex(e,n).test(t);var o}function t_form__conditionals_inputMatchesMask(t,e){if(!t)return!1;var n=e.filter((function(e){return t.hasAttribute(e)}));return 0===n.length||n.some((function(e){return t_form__conditionals_valueMatchesMask(t.value,t.getAttribute(e),e)}))}function t_form__conditionals_isConditionEmpty(t){var e=t.condition.value,n;return-1===t_form__conditionals_prepareComparisonType(t.condition.comparisonType).group.indexOf("st")&&!e}function t_form__conditionals_prepareComparisonType(t){var e=t.split("-"),n,o;return{group:e[0],type:e[1]}}function t_form__conditionals_compareFiles(t,e){var n=t_form__conditionals_prepareComparisonType(e).type;if("uploaded"===n)return Boolean(t&&t.value);if("not_uploaded"===n)return Boolean(!t||!t.value);throw new Error("Unknown comparison type when comparing files: "+e)}function t_form__conditionals_canApplyCondition(t){return"valid"===t.status&&Boolean(t.value)}function t_form__conditionals_filterOut(t,e){return t.filter((function(t){return!t.matches(e.join(","))}))}function t_form__conditionals_listenToEventOrEnterPress(t,e,n){if(t){var o=!1;t.addEventListener(e,(function(){o||n(),o=!1})),t.addEventListener("keydown",(function(t){"Enter"===t.key&&(n(),o=!0)}))}}function t_form__conditionals_prepareCalcValue(t){var e=t.value;if(!e)return e;var n=t.getAttribute("data-calc-value"),o=t.getAttribute("data-own-variant-title");return o?[o,n].join("="):[e,n].join("=")}function t_form__conditionals_verifyCheckboxOrRadio(t,e){var n,o="cb"===t.getAttribute("data-field-radcb")?t.querySelectorAll('input[type="checkbox"]'):t.querySelectorAll('input[type="radio"]'),i;return Array.from(o).filter((function(t){return t.checked})).some((function(t){var n=t_form__conditionals_decodeHTMLEntities(e.value.trim()),o,i,o;return t.hasAttribute("data-calc-value")?(o=t_form__conditionals_prepareCalcValue(t).trim())===n:(o=(o=e._meta&&"li_ownvariant"in e._meta?t.getAttribute("data-own-variant-title"):t.value)?o.trim():"")===n}))}function t_form__conditionals_notifyAboutInit(t){var e="conditional-form-init",n=document.getElementById("rec"+t),o=new CustomEvent(e);n.dispatchEvent(o)}function t_form__conditionals_initSyncListeners(t){var e=document.getElementById("rec"+t);e&&e.addEventListener("sync-conditionals",(function(e){var n=e.detail,o;t_form__conditionals_syncFields(t,void 0===n?{}:n)}))}function t_form__conditionals_notifyAboutStateChange(t,e){var n,o=new CustomEvent("conditional-state-change",{detail:e});t.dispatchEvent(o)}function t_form__conditionals__initStepForm(t){var e=t.ignoredSteps||[],n=t.ignoredInputGroups||[],o=t.recId,i=t.onConditionalFieldChange,r=Array.prototype.slice.call(t.steps),a=t.activeStepIndex,c=r[a],u,l,d,_,s=t_form__conditionals_initFields(o,n);function f(){return{nextStepIndex:d,prevStepIndex:_,activePossibleStepIndex:l,totalActiveStepsCount:u.length}}function p(t){c=r[a=t],l=u.indexOf(c),d=y(),_=h()}function m(){r.forEach((function(t){v(t)||(t_form__conditionals_isStepEmpty(t)?t.classList.add("t-form__hidden-by-condition"):t.classList.contains("t-form__hidden-by-condition")&&t.classList.remove("t-form__hidden-by-condition"))})),u=r.filter((function(t){return!t.classList.contains("t-form__hidden-by-condition")})),l=u.indexOf(c),d=y(),_=h()}function v(t){return!(!e||!e.length)&&t.matches(e.join(","))}function y(){var t=Math.min(l+1,r.length-1),e=u[t];return r.indexOf(e)}function h(){var t=Math.max(l-1,0),e=u[t];return r.indexOf(e)}return m(),s.addListeners((function(){m(),i(f())})),{getState:f,onStepChange:p}}function t_form__conditionals_isStepEmpty(t){var e=t.querySelectorAll('.t-conditional:not([data-hidden-by-condition="true"])'),n=t.querySelectorAll('.t-input-group:not([data-hidden-by-condition="true"]):not(.t-form__hidden)');return 0===e.length&&0===n.length}
|