-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
71 lines (61 loc) · 1.99 KB
/
main.js
File metadata and controls
71 lines (61 loc) · 1.99 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class Filter {
constructor(container, target = null, filters = []) {
this.appContainer = document.getElementById(container);
this.target = target;
this.filterValues = filters;
this.Store = window.localStorage;
}
inizialize() {
const filter = document.createElement("select");
filter.className = "filter__select";
this.filterValues.forEach((element) => {
const option = document.createElement("option");
option.value = element.reference;
option.text = element.label;
if (element.action === "show") {
option.setAttribute("selected", true);
}
filter.appendChild(option);
});
this.appContainer.appendChild(filter);
}
buildSelect() {
const currentFilterContainer = document.getElementById("filtersBlock");
const newFilterContainer = document
.querySelector(".cat-filters")
.cloneNode(true);
newFilterJs = document.createElement("div");
newFilterJs.id = "filter-js";
newFilterContainer.querySelector("div > ul > li").innerHTML =
newFilterJs.outerHTML;
currentFilterContainer.appendChild(newFilterContainer);
}
_filterByReference(reference) {
const target = document.querySelectorAll(this.target);
target.forEach((element) => {
if (element.outerText.toLowerCase().includes(reference)) {
element.classList.add("hidden");
} else {
element.classList.remove("hidden");
}
});
}
handlerfilter() {
this.appContainer.addEventListener("change", (e) => {
this._filterByReference(e.target.value);
this.Store.setItem("filterJs", e.target.value);
});
}
retoreSelected() {
const storeSelected = this.Store.getItem("filterJs");
const filter = document.querySelector(".filter__select");
if (storeSelected) {
this._filterByReference(storeSelected);
for (const option of filter.options) {
if (option.value === storeSelected) {
option.setAttribute("selected", true);
}
}
}
}
}