(function () { let extendFormBtn = document.getElementById('extendFormBtn'); let hideExtendedFormLink = document.getElementById('hideExtendedFormLink'); let extendedForm = document.getElementById('extendedForm'); let shopFiltersCheckboxes = Array.from(document.querySelectorAll('.shop-filter')); let allShopCheckbox = document.getElementById('allShopCheckbox'); let allShopsHiddenInput = document.getElementById('s-param'); let shopHiddenInputs = Array.from(document.querySelectorAll('.shop__filter__hidden__param')); let extendedFormBtnIcon = document.getElementById("extendedFormBtnIcon") let publisherInput = document.getElementById("publisherTextField"); let submitBtn = document.getElementById("searchSubmitBtn") const updateSubmitBtnState = function () { let isAnyShopSelected = allShopCheckbox.checked; if (!isAnyShopSelected) { shopFiltersCheckboxes.forEach(chk => { if (chk.checked) isAnyShopSelected = true; }) } if (isAnyShopSelected) { if (submitBtn.classList.contains('book-search-form__submit-button--disabled')) submitBtn.classList.remove('book-search-form__submit-button--disabled') } else { if (!submitBtn.classList.contains('book-search-form__submit-button--disabled')) submitBtn.classList.add('book-search-form__submit-button--disabled') } } const logAllHidden = function () { console.log('----------------------------------------------------------------------------------------------') console.log(allShopsHiddenInput.name + " : " + allShopsHiddenInput.value + " " + allShopsHiddenInput.disabled) shopHiddenInputs.forEach(hiddenInput => { console.log(hiddenInput.name + " : " + hiddenInput.value + " " + hiddenInput.disabled) }) } const setAllHiddenInputs = function (boolean_status, disabled_boolean, int_val) { shopFiltersCheckboxes.forEach(chk => { chk.checked = boolean_status; }) shopHiddenInputs.forEach(hiddenInput => { hiddenInput.disabled = disabled_boolean; }) allShopsHiddenInput.value = int_val; } const changeAllShopCheckBoxState = function (evt) { if (allShopCheckbox.checked) setAllHiddenInputs(true, true, 1) else setAllHiddenInputs(false, true, 0) updateSubmitBtnState(); // logAllHidden() } const changeSingleFilter = function (evt) { let currentState = allShopCheckbox.checked; // состояние чек-бокса "Все магазины" let state = true; // переменная для хранения нового состояния "Все магазины", если хотя бы один выключен переводим в false let currentHiddenInput = document.getElementById(evt.target.dataset.qparam); shopFiltersCheckboxes.forEach(chk => { if (!chk.checked) { state = false; } }) allShopCheckbox.checked = state; // если ли было some стало all if (!currentState && state) { allShopsHiddenInput.value = 1; shopHiddenInputs.forEach(Si => { Si.disabled = true; }) // если было all стало some } else if (currentState && !state) { allShopsHiddenInput.value = 0; shopHiddenInputs.forEach(hiddenInput => { hiddenInput.disabled = false; hiddenInput.value = 1; }) currentHiddenInput.disabled = true; } if (evt.target.checked) { currentHiddenInput.value = 1; currentHiddenInput.disabled = false; } else { currentHiddenInput.value = 0; currentHiddenInput.disabled = true; } // Обновить статус кнопки submit updateSubmitBtnState(); // logAllHidden(); } if (allShopCheckbox) allShopCheckbox.addEventListener('click', changeAllShopCheckBoxState); shopFiltersCheckboxes.forEach(chk => { chk.addEventListener('change', changeSingleFilter) }) // Кнопка расширения меню const showExtendForm = function (evt) { extendedForm.classList.remove("book-search-form__extended-hide") extendFormBtn.classList.add("book-search-form__expanded-button--active") extendFormBtn.removeEventListener('click', showExtendForm); extendFormBtn.addEventListener('click', hideExtendForm); extendedFormBtnIcon.classList.add("hidden"); }; const hideExtendForm = function (evt) { extendedForm.classList.add("book-search-form__extended-hide") extendFormBtn.classList.remove("book-search-form__expanded-button--active") extendFormBtn.removeEventListener('click', hideExtendForm); extendFormBtn.addEventListener('click', showExtendForm); if (!allShopCheckbox.checked || publisherInput.value) extendedFormBtnIcon.classList.remove("hidden"); }; if (extendFormBtn) extendFormBtn.addEventListener('click', showExtendForm); if (hideExtendedFormLink) hideExtendedFormLink.addEventListener('click', hideExtendForm); }());