Eyecandy on admin page and fix of functionality on that page
Build LinkLog Development Image / development-image (push) Successful in 11s
Build LinkLog Development Image / development-image (push) Successful in 11s
This commit is contained in:
@@ -12,7 +12,7 @@ const smtpForm = document.querySelector('#smtp-form');
|
||||
const smtpTestButton = document.querySelector('#smtp-test-button');
|
||||
const smtpStatus = document.querySelector('#smtp-status');
|
||||
const themesForm = document.querySelector('#themes-form');
|
||||
const themeOptions = document.querySelector('#theme-options');
|
||||
const themeOptions = document.querySelector('#admin-theme-options');
|
||||
const themeStatus = document.querySelector('#theme-status');
|
||||
let smtpNextAllowedAt = null;
|
||||
let smtpTimerHandle = null;
|
||||
@@ -259,9 +259,51 @@ async function loadUsers() {
|
||||
renderUsers(await response.json());
|
||||
}
|
||||
|
||||
function initPanelToggles() {
|
||||
const panels = document.querySelectorAll('#admin-controls .settings-panel');
|
||||
panels.forEach((panel) => {
|
||||
panel.classList.add('minimized');
|
||||
const h2 = panel.querySelector('h2');
|
||||
if (!h2) return;
|
||||
let btn = h2.querySelector('.panel-toggle-btn');
|
||||
if (!btn) {
|
||||
const titleText = h2.textContent.trim();
|
||||
h2.replaceChildren();
|
||||
btn = document.createElement('button');
|
||||
btn.type = 'button';
|
||||
btn.className = 'panel-toggle-btn';
|
||||
btn.setAttribute('aria-expanded', 'false');
|
||||
const textSpan = document.createElement('span');
|
||||
textSpan.textContent = titleText;
|
||||
const iconSpan = document.createElement('span');
|
||||
iconSpan.className = 'panel-toggle-icon';
|
||||
iconSpan.setAttribute('aria-hidden', 'true');
|
||||
iconSpan.textContent = '▼';
|
||||
btn.append(textSpan, iconSpan);
|
||||
h2.appendChild(btn);
|
||||
} else {
|
||||
btn.setAttribute('aria-expanded', 'false');
|
||||
}
|
||||
|
||||
if (h2.dataset.initialized) return;
|
||||
h2.dataset.initialized = 'true';
|
||||
|
||||
h2.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
const isMinimized = panel.classList.toggle('minimized');
|
||||
if (btn) {
|
||||
btn.setAttribute('aria-expanded', String(!isMinimized));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function showAdminState(isAdmin) {
|
||||
adminControls.classList.toggle('hidden', !isAdmin);
|
||||
adminAuthNotice.classList.toggle('hidden', isAdmin);
|
||||
if (isAdmin) {
|
||||
initPanelToggles();
|
||||
}
|
||||
}
|
||||
|
||||
function showSignedOutState() {
|
||||
@@ -446,4 +488,7 @@ loadAdminState().catch((error) => {
|
||||
smtpForm.reset();
|
||||
themesForm.reset();
|
||||
});
|
||||
|
||||
document.addEventListener('DOMContentLoaded', initPanelToggles);
|
||||
initPanelToggles();
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user