Kenneth Bruen
2 years ago
2 changed files with 83 additions and 0 deletions
@ -0,0 +1,66 @@
|
||||
var selectedTab = 0 |
||||
|
||||
/** |
||||
* @param {number} idx |
||||
*/ |
||||
function selectTab(idx) { |
||||
var tabs = document.querySelectorAll('.tabs h3') |
||||
var tabViews = document.querySelectorAll('.tab-view') |
||||
if (tabs.length > 0) { |
||||
tabs.forEach(function (tab, tIdx) { |
||||
if (idx == tIdx) { |
||||
return |
||||
} |
||||
|
||||
tab.classList.remove('selected') |
||||
tabViews[tIdx].classList.add('hidden') |
||||
}) |
||||
tabs[idx].classList.add('selected') |
||||
tabViews[idx].classList.remove('hidden') |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param {number} offset |
||||
*/ |
||||
function tabNav(offset) { |
||||
var items = document.querySelectorAll('.tab-view') |
||||
|
||||
selectedTab += offset |
||||
if (selectedTab < 0) { |
||||
selectedTab += items.length |
||||
} |
||||
if (selectedTab >= items.length) { |
||||
selectedTab -= items.length |
||||
} |
||||
selectTab(selectedTab) |
||||
} |
||||
|
||||
function handleTabKeyDown(e) { |
||||
switch (e.key) { |
||||
case 'ArrowLeft': |
||||
e.preventDefault() |
||||
e.stopPropagation() |
||||
tabNav(-1) |
||||
break |
||||
case 'ArrowRight': |
||||
e.preventDefault() |
||||
e.stopPropagation() |
||||
tabNav(1) |
||||
break |
||||
} |
||||
} |
||||
|
||||
window.addEventListener('load', function (e) { |
||||
// Select first item
|
||||
selectTab(selectedTab) |
||||
// Add onclick
|
||||
document.querySelectorAll('.tabs h3').forEach(function (tab, tIdx) { |
||||
tab.addEventListener('click', function (e) { |
||||
selectedTab = tIdx |
||||
selectTab(selectedTab) |
||||
}) |
||||
}) |
||||
|
||||
document.body.addEventListener('keydown', handleTabKeyDown) |
||||
}) |
Loading…
Reference in new issue