refactor: replace sidebar user footer with topbar dropdown menu
This commit is contained in:
@@ -200,3 +200,31 @@ function toggleServerList(e) {
|
||||
sub.style.maxHeight = sub.scrollHeight + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
function toggleUserMenu(e) {
|
||||
e.stopPropagation();
|
||||
const menu = document.getElementById('userMenu');
|
||||
if (!menu) return;
|
||||
const isOpen = menu.classList.contains('open');
|
||||
document.querySelectorAll('.dropdown-menu.open').forEach(function(m) {
|
||||
if (m !== menu) m.classList.remove('open');
|
||||
});
|
||||
if (!isOpen) {
|
||||
menu.classList.add('open');
|
||||
setTimeout(function() {
|
||||
document.addEventListener('click', closeUserMenu);
|
||||
}, 0);
|
||||
} else {
|
||||
menu.classList.remove('open');
|
||||
}
|
||||
}
|
||||
|
||||
function closeUserMenu(e) {
|
||||
const menu = document.getElementById('userMenu');
|
||||
if (!menu) return;
|
||||
const wrapper = menu.closest('.topbar-user-dropdown');
|
||||
if (wrapper && !wrapper.contains(e.target)) {
|
||||
menu.classList.remove('open');
|
||||
document.removeEventListener('click', closeUserMenu);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user