From cfbe05224251df44e02b4f5454fcc7d12de4d4e9 Mon Sep 17 00:00:00 2001 From: Ilia Denisov Date: Wed, 27 May 2026 18:11:00 +0200 Subject: [PATCH 1/2] =?UTF-8?q?feat(ui):=20F8-09=20=E2=80=94=20turn=20repo?= =?UTF-8?q?rt=20sticky=20icon-popup=20section=20menu=20(#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace the 14 rem sticky sidebar (and its mobile ` on mobile) -and the scroll position is preserved across active-view switches -via SvelteKit's `Snapshot` API. +Empty sections render explicit empty-state copy. Section +navigation is exposed through a sticky icon-popup menu pinned to +the top-right of the report column (an anchored popover on desktop +and a fixed bottom-sheet on mobile); the trigger label tracks the +section currently in view, and picking a menuitem scrolls the +matching section into view. Re-entering the report active view +remounts the component and resets the scroll position; the active +highlight is re-derived from the IntersectionObserver as the user +scrolls. The Bombings section is a flat read-only table — one row per bombing event, columns for `attacker`, `attack_power`, `wiped` diff --git a/docs/FUNCTIONAL_ru.md b/docs/FUNCTIONAL_ru.md index 0429bef..ae233f3 100644 --- a/docs/FUNCTIONAL_ru.md +++ b/docs/FUNCTIONAL_ru.md @@ -713,9 +713,13 @@ Web-клиент рендерит отчёт как одну секцию на группы, мои / чужие / необитаемые / неопознанные планеты, корабли в производстве, грузовые маршруты, мои флоты, мои / чужие / неопознанные группы кораблей). Пустые секции получают явную копию -empty-state. Якоря секций отображены в sticky-TOC (на мобильном — -` +├── report/report-toc.svelte // sticky icon-popup section menu ├── report/section-galaxy-summary.svelte ├── report/section-votes.svelte ├── report/section-player-status.svelte @@ -85,27 +85,35 @@ the body — both surfaces stay in sync by construction. ## Table of contents and active highlight -`report/report-toc.svelte` renders two surfaces driven by the same -entry list: +`report/report-toc.svelte` renders a single sticky icon-popup +trigger in the top-right corner of the report column. The trigger +shows `≡` followed by the title of the currently-active section +(CSS-clamped with `text-overflow: ellipsis` so a long RU title +cannot bloat the button). Clicking opens an anchored popover +(`role="menu"`) that lists every section as a `role="menuitem"` +button; the active item gets `aria-current="location"` and the +`.active` class. A click on an item closes the popover and scrolls +the matching `
` into view via +`scrollIntoView` (with `prefers-reduced-motion` falling back to +`behavior: "auto"`). -- **Desktop / tablet sidebar** — sticky `