65 lines
2.6 KiB
JavaScript
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); |