Easy_solution/assets/js/template.js

65 lines
2.6 KiB
JavaScript

// Utilisation des fonctions de cookies globales définies dans app.js
// Fonction d'initialisation du template
function initTemplate() {
// Appliquer l'état du menu depuis le cookie
applyMenuState();
// Initialiser le bouton de minimisation du menu
initMinimizeButton();
}
// Fonction pour appliquer l'état du menu depuis le cookie
function applyMenuState() {
var body = document.querySelector('body');
var menuState = getCookie('sidebar_state');
// Si le cookie existe, appliquer l'état enregistré
if (menuState === 'collapsed') {
if (!body.classList.contains('sidebar-icon-only')) {
body.classList.add('sidebar-icon-only');
}
} else if (menuState === 'expanded') {
if (body.classList.contains('sidebar-icon-only')) {
body.classList.remove('sidebar-icon-only');
}
}
}
// Fonction pour initialiser le bouton de minimisation du menu
function initMinimizeButton() {
// Supprimer l'ancien gestionnaire d'événements s'il existe
document.querySelectorAll('[data-toggle="minimize"]').forEach(function(button) {
// Créer une copie du bouton pour supprimer tous les écouteurs d'événements
var newButton = button.cloneNode(true);
button.parentNode.replaceChild(newButton, button);
// Ajouter le nouvel écouteur d'événements
newButton.addEventListener("click", function() {
var body = document.querySelector('body');
if ((body.classList.contains('sidebar-toggle-display')) || (body.classList.contains('sidebar-absolute'))) {
body.classList.toggle('sidebar-hidden');
// Enregistrer l'état dans un cookie
var newState = body.classList.contains('sidebar-hidden') ? 'collapsed' : 'expanded';
setCookie('sidebar_state', newState, 365); // Valable 1 an
} else {
body.classList.toggle('sidebar-icon-only');
// Enregistrer l'état dans un cookie
var newState = body.classList.contains('sidebar-icon-only') ? 'collapsed' : 'expanded';
setCookie('sidebar_state', newState, 365); // Valable 1 an
}
});
});
}
// Exécuter l'initialisation au chargement de la page
document.addEventListener('DOMContentLoaded', initTemplate);
// Support pour différents systèmes de navigation
if (typeof Turbo !== 'undefined') {
document.addEventListener('turbo:load', initTemplate);
document.addEventListener('turbo:render', initTemplate);
}
// Support pour les applications SPA qui utilisent l'historique de navigation
window.addEventListener('popstate', initTemplate);