-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmenu-item-filter.js
39 lines (39 loc) · 1.18 KB
/
menu-item-filter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class MenuItemFiltration {
constructor(itemContainer) {
this.itemContainer = itemContainer;
this.menuItems = itemContainer.querySelectorAll(".menu-item");
this.filters = itemContainer.querySelectorAll(".menu-item-filter");
this.init();
}
init() {
this.attachEventHanlder();
}
filtration(filter) {
const menuCategory = filter.dataset.menu_item_category;
this.filters.forEach((filterBtn) => {
filterBtn.classList.remove("active-filter");
});
filter.classList.add("active-filter");
this.menuItems.forEach((menuItem) => {
const menuItemName = menuItem.dataset.menu_item_name;
if (menuItemName === menuCategory || menuCategory === "all") {
menuItem.classList.remove("hide-menu-item");
} else {
menuItem.classList.add("hide-menu-item");
}
});
}
attachEventHanlder() {
this.filters.forEach((filter) => {
filter.addEventListener("click", () => {
this.filtration(filter);
});
});
}
}
window.addEventListener("load", () => {
const menuItemContainer = document.querySelectorAll(".menu-item-container");
menuItemContainer.forEach((item) => {
new MenuItemFiltration(item);
});
});