(()=>{"use strict";class t{constructor({formSubmitHandler:t,formCleanError:e,checherValidation:s},r,i){this._formSubmitHandler=t,this._formCleanError=e,this._formElement=r,this._inputSelector=i,this._checker=s}_getInputValues(){return this._inputList=this._formElement.querySelectorAll(this._inputSelector),this._formValues={},this._inputList.forEach((t=>{this._formValues[t.name]=t.value})),this._formValues}cleanAll(){this._formElement.reset(),this._formCleanError()}setEventListeners(){this._formElement.addEventListener("submit",(t=>{t.preventDefault(),this._checker()&&this._formSubmitHandler(this._getInputValues())}))}}const e=new class{constructor({baseUrl:t,headers:e}){this._baseUrl=t,this._headers=e}_isResponseOk(t){return t.ok?t.json():Promise.reject(`Ошибка: ${t.status}`)}getProducts(){return fetch("https://api-cms.kupcov.com/data/products",{headers:this._headers}).then((t=>this._isResponseOk(t)))}getInitiatPartners(){return fetch("https://api.termoblok.ru/partners",{headers:this._headers}).then((t=>this._isResponseOk(t)))}sendSmallForm(t){return fetch(`${this._baseUrl}/forms/small-form`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((t=>this._isResponseOk(t)))}sendBigForm(t){return fetch(`${this._baseUrl}/forms/big-form`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((t=>this._isResponseOk(t)))}}({baseUrl:"https://api-cms.kupcov.com",headers:{Accept:"application/json","Content-Type":"application/json;charset=utf-8"}}),s=document.forms.quiz,r=new class{constructor(t,e){this._inputSelector=t.inputSelector,this._inputErrorClass=t.inputErrorClass,this._errorClass=t.errorClass,this._submitButtonSelector=t.submitButtonSelector,this._inactiveButtonClass=t.inactiveButtonClass,this._formElement=e,this._inputList=Array.from(this._formElement.querySelectorAll(this._inputSelector)),this._buttonElement=this._formElement.querySelector(this._submitButtonSelector)}_showInputError(t,e){const s=this._formElement.querySelector(`.${t.id}-error`);t.classList.add(this._inputErrorClass),s.textContent=e,s.classList.add(this._errorClass)}_hideInputError(t){const e=this._formElement.querySelector(`.${t.id}-error`);t.classList.remove(this._inputErrorClass),e.classList.remove(this._errorClass),e.textContent=""}_checkInputValidity(t){t.validity.valid?this._hideInputError(t):this._showInputError(t,t.validationMessage)}_hasInvalidInput(t){return t.some((t=>!t.validity.valid))}_toggleButtonState(t,e){this._hasInvalidInput(t)?(e.classList.add(this._inactiveButtonClass),e.setAttribute("disabled",!0)):(e.classList.remove(this._inactiveButtonClass),e.removeAttribute("disabled"))}_showErrors(t,e){t.forEach((s=>{this._checkInputValidity(s),this._toggleButtonState(t,e)}))}toggleButtonState(){this._toggleButtonState(this._inputList,this._buttonElement)}hasInvalidInput(){return this._hasInvalidInput(this._inputList)}disableSaveButton(){this._buttonElement.classList.add(this._inactiveButtonClass),this._buttonElement.setAttribute("disabled",!0)}cleanAllErrors(){this._inputList.forEach((t=>{this._hideInputError(t)}))}showErrors(){this._inputList.forEach((t=>{this._checkInputValidity(t),this.toggleButtonState(this._inputList,this._buttonElement)}))}showErrorsForStep(t){}_setEventListeners(){this._inputList.forEach((t=>{t.addEventListener("input",(()=>{this._checkInputValidity(t),this.toggleButtonState()}))}))}_setStepEventListeners(t){t.forEach((t=>{const e=t.inputs,s=t.button;console.log(`123 ${s}`),e.forEach((t=>{t.addEventListener("input",(()=>{this._checkInputValidity(t),this._toggleButtonState(e,s)}))}))}))}enableValidation(){this._formElement.addEventListener("submit",(t=>{t.preventDefault()})),this._setEventListeners()}checkStep(t){const e=this._sets[t].inputs,s=this._sets[t].button;return!this._hasInvalidInput(e)||(this._showErrors(e,s),this._toggleButtonState(e,s),!1)}enableStepValidation(){this._sets=[];const t=this._formElement.querySelector(".first-step"),e=t.querySelector(".first-step-button"),s=Array.from(t.querySelectorAll(this._inputSelector));this._sets.push({inputs:s,button:e});const r=this._formElement.querySelector(".second-step"),i=r.querySelector(".second-step-button"),n=Array.from(r.querySelectorAll(this._inputSelector));this._sets.push({inputs:n,button:i}),this._setStepEventListeners(this._sets)}}({inputSelector:".form__input",inputErrorClass:"form__input_type_error",errorClass:"form__input-error_visible",submitButtonSelector:".form__submit-button",inactiveButtonClass:"form__submit-button_disabled"},s);r.enableValidation(),new class extends t{constructor({formSubmitHandler:t,formCleanError:e,checherValidation:s},r,i,n,o,a){super({formSubmitHandler:t,formCleanError:e,checherValidation:s},r,i)}_getInputValues(){const t=super._getInputValues(),e=this._formElement.elements.rezervuartype.value;if(e){const s=Array.from(this._formElement.elements[`sizes-${e}`]).filter((t=>t.checked)).map((t=>t.value)),r=Array.from(this._formElement.elements[`staff-${e}`]).filter((t=>t.checked)).map((t=>t.value));return{...t,rezType:e,volumesArr:s,staffArr:r}}return t}setEventListeners(){this._formElement.addEventListener("submit",(t=>{t.preventDefault(),this._checker()&&this._formSubmitHandler(this._getInputValues())}))}}({formSubmitHandler:async t=>{console.log(t);try{const s=await e.sendBigForm(t);if(!s.message||"Норм"!==s.message)throw new Error("Вернулся какой то не такой объект");modal.close()}catch(t){console.log("Что то пошло не так",t)}},formCleanError:()=>{r.cleanAllErrors()},checherValidation:t=>!r.hasInvalidInput()||(r.showErrors(),!1)},s,".form__input").setEventListeners()})();