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:
+13
-1
@@ -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) ════════════════ */
|
||||
|
||||
@@ -854,9 +854,14 @@ const FEATURE_HREFS = {
|
||||
sitemap: ['/sitemap', '/sitemap.html'],
|
||||
};
|
||||
/* Контейнеры виджетов-модулей (дашборд и т.п.) — прячем блок целиком, а не только
|
||||
ссылку, иначе остаётся пустой блок (напр. виджет флеш-карт #w-flashcard). */
|
||||
ссылку, иначе остаётся пустой блок (напр. виджет флеш-карт #w-flashcard).
|
||||
Hero-карточки дашборда: у lab JS меняет href на /lab?sim=… → [href="/lab"] не
|
||||
матчит, поэтому прячем по СТАБИЛЬНОМУ id #hc-lab (аналогично pet/чтение). */
|
||||
const FEATURE_WIDGETS = {
|
||||
flashcards: ['#w-flashcard'],
|
||||
lab: ['#hc-lab'],
|
||||
pet: ['#hc-pet'],
|
||||
textbooks: ['#hc-read'],
|
||||
};
|
||||
/* Инъекция CSS, прячущего отключённые фичи. Ставится синхронно из localStorage-кэша
|
||||
на ранней загрузке (ДО построения сайдбара/виджетов) — против мигания (FOUC),
|
||||
|
||||
Reference in New Issue
Block a user