public/assets/js/playlist.js (37 lines of code) (raw):
const playlistItemToggles = document.querySelectorAll(".playlist-toggles a");
const playlistItems = document.querySelectorAll(".playlist-item");
if (playlistItemToggles.length > 0) {
// Look at URL to see which item in the playlist has the
// anchor we want to display.
const thisAnchor = window.location.hash
? window.location.hash
: playlistItemToggles[0].href;
playlistItemToggles.forEach(function (el) {
el.addEventListener("click", function (e) {
e.preventDefault();
history.replaceState({}, "", el.href);
resetPlaylistItemToggles();
// noinspection DuplicatedCode
el.classList.add("is-active");
playlistItems.forEach((playlistItem) => {
playlistItem.style.display = "none";
if (el.href.endsWith(playlistItem.id)) {
// Toggle the currently-displayed resource on left
playlistItem.style.display = "";
}
});
document.body.scrollTop = 0;
});
if (el.href.endsWith(thisAnchor)) {
// el.click();
// noinspection DuplicatedCode
el.classList.add("is-active");
playlistItems.forEach((playlistItem) => {
playlistItem.style.display = "none";
if (el.href.endsWith(playlistItem.id)) {
// Toggle the currently-displayed resource on left
playlistItem.style.display = "";
}
});
document.body.scrollTop = 0;
}
});
}
function resetPlaylistItemToggles() {
playlistItemToggles.forEach(function (el) {
el.classList.remove("is-active");
});
}