-
Notifications
You must be signed in to change notification settings - Fork 1
/
accordion.js
30 lines (26 loc) · 947 Bytes
/
accordion.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
class PanelLink {
constructor(element) {
this.element = element;
this.data = this.element.dataset.tense;
this.itemElement = document.querySelector(`.panel[data-tense='${this.data}']`);
this.panelItem = new PanelItem(this.itemElement);
this.element.addEventListener('click', () => this.select())
}
select() {
const links = document.querySelectorAll('.panel-link');
Array.from(links).forEach(element => element.classList.remove('active-panel-link'));
this.element.classList.add('active-panel-link');
this.panelItem.select();
}
}
class PanelItem {
constructor(element) {
this.element = element;
}
select() {
const items = document.querySelectorAll('.panel');
Array.from(items).forEach(element => element.classList.remove('active-panel'));
this.element.classList.add('active-panel');
}
}
let links = document.querySelectorAll('.panel-link').forEach(link => new PanelLink(link));