Ajout du mode maintenance avec modèle, vues, URL, contexte, et intégration des templates. Ajout de nouvelles fonctionnalités côté client, comme le basculement de thème et les interactions de navigation mobile.
This commit is contained in:
parent
acd9f42cea
commit
536f4e303f
12 changed files with 227 additions and 27 deletions
|
|
@ -12,4 +12,86 @@ function show(id) {
|
|||
htmlChange.id = `show-${id}`;
|
||||
let buttonChange = document.getElementById(id);
|
||||
buttonChange.onclick = function() { hide(id); };
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction pour supprimer le message d'alerte après 5 secondes
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
let messages = document.querySelector('.flash_messages')
|
||||
if (messages) {
|
||||
setTimeout(function() {
|
||||
messages.style.opacity = 0;
|
||||
setTimeout(function() {
|
||||
messages.style.display = 'none';
|
||||
}, 1000);
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
// Theme toggle setup
|
||||
var toggle = document.getElementById('themeToggle');
|
||||
var themeLink = document.getElementById('theme-css');
|
||||
function applyTheme(theme) {
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
if (theme === 'light') {
|
||||
if (themeLink) themeLink.href = themeLink.href.replace('colors_dark.css', 'colors_light.css');
|
||||
} else {
|
||||
if (themeLink) themeLink.href = themeLink.href.replace('colors_light.css', 'colors_dark.css');
|
||||
}
|
||||
var icon = toggle && toggle.querySelector('i');
|
||||
if (icon) {
|
||||
icon.classList.remove('fa-sun','fa-moon');
|
||||
icon.classList.add(theme === 'light' ? 'fa-moon' : 'fa-sun');
|
||||
}
|
||||
if (toggle) {
|
||||
toggle.setAttribute('aria-pressed', theme === 'dark' ? 'true' : 'false');
|
||||
toggle.setAttribute('aria-label', theme === 'light' ? 'Activer le thème sombre' : 'Activer le thème clair');
|
||||
toggle.title = toggle.getAttribute('aria-label');
|
||||
}
|
||||
}
|
||||
try {
|
||||
var current = document.documentElement.getAttribute('data-theme') || 'dark';
|
||||
applyTheme(current);
|
||||
if (toggle) {
|
||||
toggle.addEventListener('click', function() {
|
||||
var next = (document.documentElement.getAttribute('data-theme') === 'light') ? 'dark' : 'light';
|
||||
localStorage.setItem('pdz-theme', next);
|
||||
applyTheme(next);
|
||||
});
|
||||
}
|
||||
} catch(e) {}
|
||||
|
||||
// Mobile nav toggle
|
||||
try {
|
||||
var navToggle = document.getElementById('navToggle');
|
||||
var primaryNav = document.getElementById('primaryNav');
|
||||
if (navToggle && primaryNav) {
|
||||
function setExpanded(expanded) {
|
||||
navToggle.setAttribute('aria-expanded', expanded ? 'true' : 'false');
|
||||
navToggle.setAttribute('aria-label', expanded ? 'Fermer le menu' : 'Ouvrir le menu');
|
||||
var icon = navToggle.querySelector('i');
|
||||
if (icon) {
|
||||
icon.classList.remove('fa-bars','fa-xmark');
|
||||
icon.classList.add(expanded ? 'fa-xmark' : 'fa-bars');
|
||||
}
|
||||
primaryNav.classList.toggle('is-open', expanded);
|
||||
}
|
||||
|
||||
navToggle.addEventListener('click', function() {
|
||||
var expanded = navToggle.getAttribute('aria-expanded') === 'true';
|
||||
setExpanded(!expanded);
|
||||
});
|
||||
|
||||
// Close menu when a link is clicked (on small screens)
|
||||
primaryNav.addEventListener('click', function(e) {
|
||||
var target = e.target;
|
||||
if (target.tagName === 'A' || target.closest('a')) {
|
||||
setExpanded(false);
|
||||
}
|
||||
});
|
||||
|
||||
// Close on Escape
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape') setExpanded(false);
|
||||
});
|
||||
}
|
||||
} catch(e) {}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue