Files
rm-KSALDIS-DT/www-ksaldis-dt/js/app.js
T

74 lines
2.3 KiB
JavaScript

/* =====================================================
Curso de Vóley — Material de Estudio
JavaScript principal
===================================================== */
(function () {
"use strict";
// ── Sidebar toggle (móvil) ──
const hamburger = document.getElementById("hamburger");
const sidebar = document.getElementById("sidebar");
const overlay = document.getElementById("sidebar-overlay");
if (hamburger && sidebar && overlay) {
hamburger.addEventListener("click", () => {
sidebar.classList.toggle("open");
overlay.classList.toggle("open");
});
overlay.addEventListener("click", () => {
sidebar.classList.remove("open");
overlay.classList.remove("open");
});
// Cerrar sidebar al hacer clic en un enlace (móvil)
sidebar.querySelectorAll("a").forEach((link) => {
link.addEventListener("click", () => {
if (window.innerWidth <= 900) {
sidebar.classList.remove("open");
overlay.classList.remove("open");
}
});
});
}
// ── Navegación activa por scroll ──
const sections = document.querySelectorAll(".seccion-titulo");
const navLinks = document.querySelectorAll(".sidebar-nav a[data-section]");
if (sections.length && navLinks.length) {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
navLinks.forEach((link) => link.classList.remove("active"));
const id = entry.target.id;
const activeLink = document.querySelector(
'.sidebar-nav a[data-section="' + id + '"]',
);
if (activeLink) {
activeLink.classList.add("active");
activeLink.scrollIntoView({
block: "nearest",
behavior: "smooth",
});
}
}
});
},
{ rootMargin: "-10% 0px -80% 0px" },
);
sections.forEach((section) => observer.observe(section));
}
// ── Colapsar/expandir videos y PDFs ──
document.addEventListener("click", function (e) {
const header = e.target.closest(".video-viewer-header, .pdf-viewer-header");
if (header) {
header.parentElement.classList.toggle("collapsed");
}
});
})();