rym_horizon/app.js

46 lines
1.5 KiB
JavaScript

/**
* RYM Horizon - Core Navigation Script
* @description Gestionnaire d'onglets découplé conforme aux standards W3C
*/
document.addEventListener('DOMContentLoaded', () => {
// Sélecteurs d'éléments de navigation
const navLinks = document.querySelectorAll('.sidebar .nav-link');
const tabContents = document.querySelectorAll('.tab-content');
/**
* Bascule l'affichage vers l'onglet ciblé
* @param {string} targetTabId - L'identifiant de la section à afficher
*/
const switchTab = (targetTabId) => {
// 1. Masquer tous les contenus actifs
tabContents.forEach(content => content.classList.remove('active'));
// 2. Afficher le contenu demandé
const activeTarget = document.getElementById(targetTabId);
if (activeTarget) {
activeTarget.classList.add('active');
}
};
// Attribution dynamique des écouteurs d'événements
navLinks.forEach(link => {
link.addEventListener('click', (event) => {
event.preventDefault();
// Récupération de l'ID cible via le dataset
const targetTab = link.getAttribute('data-tab');
if (targetTab) {
// Gestion de l'état graphique de la navigation
navLinks.forEach(item => item.classList.remove('active'));
link.classList.add('active');
// Exécution de la bascule logique
switchTab(targetTab);
}
});
});
});