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:
Maxim Dolgolyov
2026-06-22 17:49:51 +03:00
parent 83f0ba9c04
commit c04a8c2178
2 changed files with 21 additions and 0 deletions
+18
View File
@@ -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,