/* * Comportements communs du back-office (aucune dépendance). * Chaque bloc s'active par un attribut data-* : sans JavaScript, les formulaires fonctionnent quand même. */ (() => { 'use strict'; // --- Navigation en bandeau (petits écrans) : l'entrée active reste visible --------------------- const current = document.querySelector('.nav .nav-link.active'); if (current && current.parentElement.scrollWidth > current.parentElement.clientWidth) { current.parentElement.scrollLeft = current.offsetLeft - 16; } // --- Notifications : fermeture manuelle, et automatique après quelques secondes ---------------- const dismiss = (toast) => { toast.classList.add('is-leaving'); setTimeout(() => toast.remove(), 220); }; document.querySelectorAll('[data-toast]').forEach((toast) => { let timer = setTimeout(() => dismiss(toast), 9000); toast.addEventListener('mouseenter', () => clearTimeout(timer)); toast.addEventListener('mouseleave', () => { timer = setTimeout(() => dismiss(toast), 4000); }); toast.querySelector('[data-dismiss]')?.addEventListener('click', () => { clearTimeout(timer); dismiss(toast); }); }); // --- Confirmation :