35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
(function () {
|
|
// ── Section collapse (visible by default) ────────────────────────────────
|
|
document.querySelectorAll('section:not(.page-header)').forEach(function (sec, idx) {
|
|
var grid = sec.querySelector('.grid');
|
|
if (!grid) return;
|
|
var h2 = sec.querySelector('h2');
|
|
if (!h2) return;
|
|
|
|
var key = 'dash_sec_' + idx;
|
|
var isOpen = (sessionStorage.getItem(key) !== 'closed');
|
|
|
|
grid.classList.toggle('dash-grid-hidden', !isOpen);
|
|
|
|
var btn = document.createElement('button');
|
|
btn.className = 'sec-toggle-btn';
|
|
btn.title = 'Espandi / Comprimi';
|
|
btn.innerHTML = (
|
|
'<svg class="sec-toggle-arrow' + (isOpen ? ' open' : '') + '"'
|
|
+ ' viewBox="0 0 24 24" fill="none" stroke="currentColor"'
|
|
+ ' stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">'
|
|
+ '<polyline points="6 9 12 15 18 9"/></svg>'
|
|
);
|
|
h2.appendChild(btn);
|
|
|
|
btn.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var hidden = grid.classList.toggle('dash-grid-hidden');
|
|
var arrow = btn.querySelector('.sec-toggle-arrow');
|
|
if (arrow) arrow.classList.toggle('open', !hidden);
|
|
try { sessionStorage.setItem(key, hidden ? 'closed' : 'open'); } catch(e2) {}
|
|
});
|
|
});
|
|
})();
|