diff --git a/site/views/items-filter.js b/site/views/items-filter.js index 4189e49..6fe9149 100644 --- a/site/views/items-filter.js +++ b/site/views/items-filter.js @@ -23,7 +23,9 @@ class ItemsFilter extends View {
- + store.defaultChecked) ? "checked" : "" + }> ${STORE_KEYS.map( (store) => /*html*/ ` { + const handleChangeAll = () => { const checked = elements.allStores.checked; STORE_KEYS.forEach((store) => (elements[store].checked = checked)); this.fireChangeEvent(); - }); + }; + + const storeElements = STORE_KEYS.map((store) => elements[store]); + + storeElements.forEach((store) => + store.addEventListener("change", () => { + const allChecked = storeElements.every((store) => store.checked); + elements.allStores.removeEventListener("change", handleChangeAll); + elements.allStores.checked = allChecked; + elements.allStores.addEventListener("change", handleChangeAll); + }) + ); + + elements.allStores.addEventListener("change", handleChangeAll); elements.priceChangesToday.addEventListener("change", () => { if (elements.priceChangesToday.checked) elements.priceDirection.classList.remove("hidden");