Skip to content

Commit 91b5e4f

Browse files
authored
Implement sidebar toggle in cert.html
Added sidebar toggle functionality with accessibility support.
1 parent 4903c62 commit 91b5e4f

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

web/cert.html

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,65 @@ <h2 id="modalName"></h2>
6565
</div>
6666

6767
<script src="certManager.js"></script>
68+
<script>
69+
// sidebar-toggle (minimal) — add to certManager.js end
70+
(function(){
71+
const body = document.body;
72+
const hamburger = document.querySelector('.hamburger');
73+
if(!hamburger) return;
74+
// create overlay node if missing
75+
let overlay = document.querySelector('.sidebar-overlay');
76+
if(!overlay){
77+
overlay = document.createElement('div');
78+
overlay.className = 'sidebar-overlay';
79+
document.body.appendChild(overlay);
80+
}
81+
82+
function openSidebar(){
83+
body.classList.add('sidebar-open');
84+
hamburger.setAttribute('aria-expanded','true');
85+
// focus first item for keyboard users
86+
const first = document.querySelector('.sidebar .sidebar-item');
87+
if(first) first.focus();
88+
}
89+
function closeSidebar(){
90+
body.classList.remove('sidebar-open');
91+
hamburger.setAttribute('aria-expanded','false');
92+
hamburger.focus();
93+
}
94+
function toggleSidebar(){
95+
if(body.classList.contains('sidebar-open')) closeSidebar();
96+
else openSidebar();
97+
}
98+
99+
hamburger.addEventListener('click', (e) => {
100+
e.stopPropagation();
101+
toggleSidebar();
102+
});
103+
104+
overlay.addEventListener('click', closeSidebar);
105+
document.addEventListener('keydown', (e) => {
106+
if(e.key === 'Escape' && body.classList.contains('sidebar-open')) closeSidebar();
107+
});
108+
109+
// auto-close on menu item click for small screens
110+
document.addEventListener('click', (e) => {
111+
const item = e.target.closest('.sidebar-item');
112+
if(!item) return;
113+
if(window.innerWidth <= 860){
114+
setTimeout(closeSidebar, 160);
115+
}
116+
});
117+
118+
// keep state sane when resizing/rotating
119+
window.addEventListener('resize', () => {
120+
if(window.innerWidth > 860) {
121+
body.classList.remove('sidebar-open');
122+
hamburger.setAttribute('aria-expanded','false');
123+
}
124+
});
125+
})();
126+
127+
</script>
68128
</body>
69129
</html>

0 commit comments

Comments
 (0)