RetroDECK-Website/scripts/features.js

51 lines
1.9 KiB
JavaScript
Raw Normal View History

const featureTitles = document.getElementsByClassName('feature-list-item');
const featureDetails = document.getElementsByClassName('feature-detail-container');
const featureList = document.getElementById('feature-list');
let currentFeature = 0;
2024-04-23 16:16:44 +00:00
for (let i = 0; i < featureTitles.length; i++) {
featureTitles[i].addEventListener('click', function () {
2024-04-24 13:53:04 +00:00
if (i != currentFeature) {
updateActiveFeature(i);
}
2024-04-23 16:16:44 +00:00
}, false)
2024-04-24 13:53:04 +00:00
// We need to remove the gradient so that linearBackground is hidden
2024-04-23 17:14:44 +00:00
if (featureTitles[i].id != 'active-feature-item') {
2024-04-24 14:52:30 +00:00
featureTitles[i].className = 'col feature-list-item rounded-3 m-0';
2024-04-23 17:14:44 +00:00
}
2024-04-23 16:16:44 +00:00
}
function updateActiveFeature(i) {
const lastCurrentFeature = currentFeature;
currentFeature = i;
// console.log(`${lastCurrentFeature} -> ${currentFeature}`);
2024-04-23 16:16:44 +00:00
// New current feature
featureTitles[currentFeature].className += ' gradient-spin my-gradient';
featureTitles[currentFeature].id = 'active-feature-item';
featureDetails[currentFeature].id = 'active-feature-detail'
// Reset previous current feature
featureTitles[lastCurrentFeature].removeAttribute('id');
2024-04-24 14:52:30 +00:00
featureTitles[lastCurrentFeature].className = 'col feature-list-item rounded-3 m-0';
featureTitles[lastCurrentFeature].style = '';
featureDetails[lastCurrentFeature].removeAttribute('id');
// Update scroll position
const offsetPadding = 20;
if (lastCurrentFeature < currentFeature) {
featureList.scrollLeft = featureTitles[currentFeature].offsetLeft - offsetPadding;
} else {
featureList.scrollLeft = featureTitles[currentFeature].offsetLeft - featureTitles[currentFeature].offsetWidth/2 - offsetPadding;
}
2024-06-18 17:17:39 +00:00
}
const widthOutput = document.querySelector("#width");
window.addEventListener('resize', function() {
const featureListElem = document.getElementById('feature-list');
if (widthOutput < 768) {
featureListElem.classList += "text-nowrap";
}
})