-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathtabbar.js
More file actions
29 lines (27 loc) · 1.07 KB
/
tabbar.js
File metadata and controls
29 lines (27 loc) · 1.07 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
window.addEventListener("DOMContentLoaded", () => {
const tabBar = document.getElementById("tab-bar");
if (tabBar) setupTabBar(tabBar, document.getElementById("tab-content"));
});
function setupTabBar(el, contentEl) {
let selectedIdx = 0;
let anchor = window.location.hash.substring(1);
var tabs = {};
for (let idx = 0; idx < el.children.length; idx++) {
tabs[el.children[idx].innerText] = idx;
el.children[idx].addEventListener("click", (e) => {
e.preventDefault();
selectTabItem(el, contentEl, idx, false);
});
}
if (anchor in tabs) selectedIdx = tabs[anchor];
selectTabItem(el, contentEl, selectedIdx, true);
}
function selectTabItem(tabBar, content, selectedIdx, init) {
for (let idx = 0; idx < tabBar.children.length; idx++) {
tabBar.children[idx].classList.remove("active");
content.children[idx].classList.add("hidden");
}
tabBar.children[selectedIdx].classList.add("active");
content.children[selectedIdx].classList.remove("hidden");
if (!init) history.replaceState({}, '', '#' + tabBar.children[selectedIdx].innerText);
}