fix(dashboard): hero «Лаборатория дня» виден при выключенной лабе

Hero-карточка #hc-lab имела href="/lab", но loadLabOfDay меняет его на
/lab?sim=<id> → CSS [href="/lab"] больше не матчит, карточка оставалась видной.
Прячем по стабильному id: #hc-lab/#hc-pet/#hc-read добавлены в FEATURE_WIDGETS
(lab/pet/textbooks). .hero-row переведён на grid auto-fit (minmax 240) — сетка сама
подстраивается под видимые карточки без дыры; syncHeroRow прячет весь ряд, если
карточек не осталось (мобайл-медиазапрос не трогаем — без инлайн-колонок).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-23 10:37:41 +03:00
parent 399a222b65
commit 1aa95a6776
2 changed files with 19 additions and 2 deletions
+13 -1
View File
@@ -81,7 +81,7 @@
}
.ab-btn:hover { background: rgba(255,255,255,0.25); }
/* ── Hero cards row (Reading · Lab of day · Pet) ── */
.hero-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.hero-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
.hero-card {
position: relative; border-radius: 18px; padding: 18px 20px;
display: flex; flex-direction: column; min-height: 196px;
@@ -3683,6 +3683,17 @@
col.style.display = any ? '' : 'none';
}
/* Hero-ряд (чтение/лаборатория/питомец): карточки скрываются по фиче (через CSS).
Подгоняем число колонок под видимые карточки и прячем весь ряд, если пусто. */
function syncHeroRow() {
const row = document.getElementById('hero-row');
if (!row) return;
const vis = [...row.querySelectorAll('.hero-card')]
.filter(c => getComputedStyle(c).display !== 'none');
row.style.display = vis.length ? '' : 'none';
// ширину колонок под число карточек делает CSS (auto-fit), мобайл не трогаем.
}
/* ══ WIDGET: Last results (compact, 5 items) ══════════════════════ */
function loadLastResultsWidget(rows) {
const w = document.getElementById('w-last-results');
@@ -4300,6 +4311,7 @@
loadLabOfDay();
loadPetHero();
loadFlashcardWidget();
syncHeroRow(); // спрятать карточки отключённых модулей и подогнать сетку
}
/* ══ WIDGET: Flashcard review (random card from pool) ════════════════ */