fix(sidebar): прятать пустые группы (заголовок без видимых пунктов)
Когда все пункты группы сайдбара скрыты (фичи отключены / teacher-only у ученика), оставался висеть пустой заголовок-аккордеон (напр. «Практика и игры»). Добавлена hideEmptySidebarGroups(): по .sb-group проверяет computed-display пунктов .sb-link в теле и прячет группу, если ни одного видимого. Зовётся синхронно из sidebar.js после сборки (по кэш-CSS — без мигания) и в конце hideDisabledFeatures (по свежим данным; re-show при включении). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -887,6 +887,22 @@ try {
|
||||
if (_cachedFeats) _applyFeatureCss(_cachedFeats);
|
||||
} catch { /* нет кэша / приватный режим — просто ждём async */ }
|
||||
|
||||
/* Прячет группы сайдбара (.sb-group), у которых не осталось ни одного видимого пункта,
|
||||
чтобы не висел пустой заголовок-аккордеон (напр. «Практика и игры», когда все
|
||||
модули отключены). Зовётся после построения сайдбара и после hideDisabledFeatures. */
|
||||
function hideEmptySidebarGroups() {
|
||||
document.querySelectorAll('.sb-group').forEach(g => {
|
||||
const body = g.querySelector('.sb-group-body');
|
||||
if (!body) return;
|
||||
let anyVisible = false;
|
||||
body.querySelectorAll('.sb-link').forEach(it => {
|
||||
const cs = getComputedStyle(it);
|
||||
if (cs.display !== 'none' && cs.visibility !== 'hidden') anyVisible = true;
|
||||
});
|
||||
g.style.display = anyVisible ? '' : 'none';
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Show board sidebar link only for teachers/admins and students in a class.
|
||||
* Call after LS.initPage(). Uses features cache (_no_class flag).
|
||||
@@ -925,6 +941,7 @@ async function hideDisabledFeatures() {
|
||||
document.querySelector('[onclick*="tab-account"]')?.click();
|
||||
}
|
||||
}
|
||||
hideEmptySidebarGroups(); // после обновления видимости пунктов — спрятать пустые группы
|
||||
|
||||
// Exam-prep track links (/exam-prep/<key>): показываем только включённые
|
||||
// (exam_tracks.enabled) и доступные пользователю треки. /api/exam-prep/tracks
|
||||
@@ -1129,6 +1146,7 @@ window.LS = {
|
||||
loadFeatures,
|
||||
clearFeaturesCache,
|
||||
hideDisabledFeatures,
|
||||
hideEmptySidebarGroups,
|
||||
showBoardIfAllowed,
|
||||
biochemGetElements, biochemGetMolecules, biochemGetMolecule, biochemValidate, biochemAnalyze,
|
||||
biochemGetReactions, biochemGetChallenges, biochemSolveChallenge,
|
||||
|
||||
Reference in New Issue
Block a user