Retour de Bruno sur la 0.15.0 (disposition pas conviviale, trop de place, mobile inchangé): la barre horizontale disparaît. Barre latérale groupée (Principal/Rituels/Pilotage/Outils), repliable en rail d'icônes mémorisé sur desktop, tiroir hors-canvas sur mobile; topbar de 52px (fil d'Ariane + actions).
46 lines
1.7 KiB
JavaScript
46 lines
1.7 KiB
JavaScript
/**
|
|
* Kanbante — sidebar behaviour (issue #16, 0.16.0 layout).
|
|
* Desktop: collapse to an icon rail (persisted in localStorage).
|
|
* Mobile: the same sidebar becomes an off-canvas drawer, toggled
|
|
* by the topbar burger, closed by backdrop / Escape / navigation.
|
|
*/
|
|
(function () {
|
|
var burger = document.getElementById('nav-burger');
|
|
var backdrop = document.getElementById('side-backdrop');
|
|
var collapseBtn = document.getElementById('side-collapse');
|
|
|
|
function closeDrawer() {
|
|
document.body.classList.remove('sidebar-open');
|
|
if (backdrop) backdrop.hidden = true;
|
|
if (burger) {
|
|
burger.setAttribute('aria-expanded', 'false');
|
|
burger.textContent = '☰';
|
|
}
|
|
}
|
|
|
|
if (burger) {
|
|
burger.addEventListener('click', function () {
|
|
var open = document.body.classList.toggle('sidebar-open');
|
|
burger.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
burger.textContent = open ? '✕' : '☰';
|
|
if (backdrop) backdrop.hidden = !open;
|
|
});
|
|
}
|
|
if (backdrop) backdrop.addEventListener('click', closeDrawer);
|
|
document.addEventListener('keydown', function (e) {
|
|
if (e.key === 'Escape') closeDrawer();
|
|
});
|
|
window.addEventListener('resize', function () {
|
|
if (window.innerWidth > 900) closeDrawer();
|
|
});
|
|
|
|
if (collapseBtn) {
|
|
collapseBtn.addEventListener('click', function () {
|
|
var collapsed = document.body.classList.toggle('sidebar-collapsed');
|
|
try {
|
|
localStorage.setItem('kanbante-sidebar', collapsed ? 'collapsed' : 'open');
|
|
} catch (e) { /* private mode: state lasts for the page only */ }
|
|
});
|
|
}
|
|
})();
|