feat: добавить кнопку Options для скрытия всех настроек
- Добавлена кнопка Options (шестеренка) в заголовок сайдбара - Кнопка полностью скрывает/показывает все секции настроек - Сохранение состояния скрытия в localStorage - Визуальная индикация активного состояния кнопки - Максимальное освобождение места для списка контейнеров - Улучшенный дизайн заголовка с группировкой кнопок - Интуитивные подсказки для кнопок Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -53,6 +53,12 @@ a{color:var(--link)}
|
|||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.header-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 8px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar-header h1 {
|
.sidebar-header h1 {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -66,6 +72,7 @@ a{color:var(--link)}
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.options-btn,
|
||||||
.minimize-all-btn {
|
.minimize-all-btn {
|
||||||
background: var(--chip);
|
background: var(--chip);
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
@@ -79,12 +86,20 @@ a{color:var(--link)}
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.options-btn:hover,
|
||||||
.minimize-all-btn:hover {
|
.minimize-all-btn:hover {
|
||||||
background: var(--tab-active);
|
background: var(--tab-active);
|
||||||
color: var(--fg);
|
color: var(--fg);
|
||||||
border-color: var(--accent);
|
border-color: var(--accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.options-btn.active {
|
||||||
|
background: var(--accent);
|
||||||
|
color: #0b0d12;
|
||||||
|
border-color: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
|
.options-btn i,
|
||||||
.minimize-all-btn i {
|
.minimize-all-btn i {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
@@ -194,6 +209,11 @@ a{color:var(--link)}
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Скрытие всех секций при активной кнопке Options */
|
||||||
|
.sidebar-controls.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.control-group label {
|
.control-group label {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
@@ -563,10 +583,15 @@ footer{position:fixed;right:10px;bottom:10px;opacity:.6;font-size:11px}
|
|||||||
<div class="sidebar-header">
|
<div class="sidebar-header">
|
||||||
<div class="header-top">
|
<div class="header-top">
|
||||||
<h1><i class="fas fa-terminal"></i> LogBoard+</h1>
|
<h1><i class="fas fa-terminal"></i> LogBoard+</h1>
|
||||||
|
<div class="header-buttons">
|
||||||
|
<button class="options-btn" id="optionsBtn" title="Показать/скрыть настройки">
|
||||||
|
<i class="fas fa-cog"></i>
|
||||||
|
</button>
|
||||||
<button class="minimize-all-btn" id="minimizeAllBtn" title="Свернуть все секции">
|
<button class="minimize-all-btn" id="minimizeAllBtn" title="Свернуть все секции">
|
||||||
<i class="fas fa-compress-alt"></i>
|
<i class="fas fa-compress-alt"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<p class="subtitle">Modern Log Viewer</p>
|
<p class="subtitle">Modern Log Viewer</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -781,6 +806,7 @@ const els = {
|
|||||||
logContent: document.getElementById('logContent'),
|
logContent: document.getElementById('logContent'),
|
||||||
mobileToggle: document.getElementById('mobileToggle'),
|
mobileToggle: document.getElementById('mobileToggle'),
|
||||||
minimizeAllBtn: document.getElementById('minimizeAllBtn'),
|
minimizeAllBtn: document.getElementById('minimizeAllBtn'),
|
||||||
|
optionsBtn: document.getElementById('optionsBtn'),
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----- Theme toggle -----
|
// ----- Theme toggle -----
|
||||||
@@ -1463,6 +1489,36 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Обработчик для кнопки Options
|
||||||
|
if (els.optionsBtn) {
|
||||||
|
els.optionsBtn.addEventListener('click', () => {
|
||||||
|
const sidebarControls = document.querySelector('.sidebar-controls');
|
||||||
|
const isHidden = sidebarControls.classList.contains('hidden');
|
||||||
|
|
||||||
|
if (isHidden) {
|
||||||
|
// Показываем настройки
|
||||||
|
sidebarControls.classList.remove('hidden');
|
||||||
|
els.optionsBtn.classList.remove('active');
|
||||||
|
els.optionsBtn.title = 'Скрыть настройки';
|
||||||
|
localStorage.setItem('lb_options_hidden', 'false');
|
||||||
|
} else {
|
||||||
|
// Скрываем настройки
|
||||||
|
sidebarControls.classList.add('hidden');
|
||||||
|
els.optionsBtn.classList.add('active');
|
||||||
|
els.optionsBtn.title = 'Показать настройки';
|
||||||
|
localStorage.setItem('lb_options_hidden', 'true');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Восстанавливаем состояние кнопки Options
|
||||||
|
const optionsHidden = localStorage.getItem('lb_options_hidden') === 'true';
|
||||||
|
if (optionsHidden) {
|
||||||
|
document.querySelector('.sidebar-controls').classList.add('hidden');
|
||||||
|
els.optionsBtn.classList.add('active');
|
||||||
|
els.optionsBtn.title = 'Показать настройки';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Обработчик для кнопки минимизации всех секций
|
// Обработчик для кнопки минимизации всех секций
|
||||||
if (els.minimizeAllBtn) {
|
if (els.minimizeAllBtn) {
|
||||||
els.minimizeAllBtn.addEventListener('click', () => {
|
els.minimizeAllBtn.addEventListener('click', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user