Skip to content

Commit 30ece05

Browse files
classabbyampthe-maldridge
authored andcommitted
assets/js/tabbar.js: allow tab to be selected on load
1 parent 11a7ad8 commit 30ece05

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

assets/js/tabbar.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,25 @@ window.addEventListener("DOMContentLoaded", () => {
55

66
function setupTabBar(el, contentEl) {
77
let selectedIdx = 0;
8-
selectTabItem(el, contentEl, selectedIdx);
8+
let anchor = window.location.hash.substring(1);
9+
var tabs = {};
910
for (let idx = 0; idx < el.children.length; idx++) {
11+
tabs[el.children[idx].innerText] = idx;
1012
el.children[idx].addEventListener("click", (e) => {
1113
e.preventDefault();
12-
selectTabItem(el, contentEl, idx);
14+
selectTabItem(el, contentEl, idx, false);
1315
});
1416
}
17+
if (anchor in tabs) selectedIdx = tabs[anchor];
18+
selectTabItem(el, contentEl, selectedIdx, true);
1519
}
1620

17-
function selectTabItem(tabBar, content, selectedIdx) {
21+
function selectTabItem(tabBar, content, selectedIdx, init) {
1822
for (let idx = 0; idx < tabBar.children.length; idx++) {
1923
tabBar.children[idx].classList.remove("active");
2024
content.children[idx].classList.add("hidden");
2125
}
2226
tabBar.children[selectedIdx].classList.add("active");
2327
content.children[selectedIdx].classList.remove("hidden");
28+
if (!init) history.replaceState({}, '', '#' + tabBar.children[selectedIdx].innerText);
2429
}

0 commit comments

Comments
 (0)