From 8d5dd1f1c30c187c05cb90add195f49b2090ab4c Mon Sep 17 00:00:00 2001
From: Kristian Wind
Date: Fri, 21 Aug 2026 13:00:15 +0200
Subject: [PATCH] =?UTF-8?q?fix(notes):=20grupperne=20stod=20tomme=20?=
=?UTF-8?q?=E2=80=94=20hver=20liste=20rullede=20for=20sig?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Meldt ind som "noter vises ikke i den nye listeform": hver eneste overskrift stod
der med sit tal, og der var ikke en eneste note under nogen af dem.
Før var der ét `
`, og *det* rullede. Da listen blev delt i grupper, blev hver
gruppe sit eget `
` — og dermed sit eget flex-element med `overflow-y: auto`.
Flex-elementer skrumper som udgangspunkt, og et element, der skrumper og klipper,
viser ingenting. Med tyve måneder i søjlen fik hver liste nul at være høj i.
Rulningen hører til kassen om dem alle, ikke til hver af dem.
**Prøven fangede det ikke, og det er værd at forstå hvorfor.** Den lavede to noter,
altså tre grupper, i et vindue på 720 pixels — og med så få grupper er der plads
nok til, at skrumpningen ikke bider. Fejlen kræver pres. Prøven gør vinduet lavt
nu og kigger efter, at rækkerne kan *ses* og ikke bare findes, og den siger
desuden hvor rulningen ligger: på kassen, ikke på listerne. Den er set fejle med
den gamle stil.
Co-Authored-By: Claude Opus 5
---
web/e2e/smoke.spec.js | 29 +++++
web/src/routes/noter/+page.svelte | 199 ++++++++++++++++--------------
2 files changed, 136 insertions(+), 92 deletions(-)
diff --git a/web/e2e/smoke.spec.js b/web/e2e/smoke.spec.js
index 793a5cd..27a3466 100644
--- a/web/e2e/smoke.spec.js
+++ b/web/e2e/smoke.spec.js
@@ -3366,6 +3366,35 @@ test('notelisten grupperer favoritter og datoer, også i arkivet', async ({ page
await expect(page.locator('h3.group')).toHaveCount(0);
await page.getByPlaceholder('Søg i noter').fill('');
+ // Rækkerne skal kunne *ses*, ikke bare findes.
+ //
+ // Da listen blev delt i grupper, blev hver gruppe sit eget `
` — og dermed
+ // sit eget flex-element med `overflow-y: auto`. Flex-elementer skrumper som
+ // udgangspunkt, og et element, der skrumper og klipper, viser ingenting: alle
+ // overskrifter stod med deres tal, og der var ikke en eneste note under nogen af
+ // dem. Med tre grupper og en høj skærm var der plads nok til at det ikke skete,
+ // hvilket er hvorfor prøven herover ikke fangede det.
+ //
+ // Et lavt vindue fremtvinger presset. Tolv hundrede noter i tyve måneder gør det
+ // samme i virkeligheden.
+ await page.setViewportSize({ width: 1100, height: 380 });
+ await page.waitForTimeout(300);
+ await expect(
+ page.locator('li').filter({ hasText: 'Gruppe to' }).first(),
+ 'rækkerne blev klippet væk, da der ikke var plads'
+ ).toBeVisible();
+ // Og rulningen ligger på kassen om grupperne, ikke på hver liste for sig.
+ const scroller = await page
+ .locator('.list')
+ .evaluate((el) => getComputedStyle(el).overflowY);
+ expect(scroller, 'kassen om grupperne ruller ikke').toBe('auto');
+ const inner = await page
+ .locator('.list ul')
+ .first()
+ .evaluate((el) => getComputedStyle(el).overflowY);
+ expect(inner, 'den enkelte liste ruller stadig for sig').toBe('visible');
+ await page.setViewportSize({ width: 1280, height: 720 });
+
// Arkivet grupperes på samme måde. Det er dér, det betyder mest.
await row.hover();
await row.getByRole('button', { name: /Arkivér/i }).click();
diff --git a/web/src/routes/noter/+page.svelte b/web/src/routes/noter/+page.svelte
index 7b24a32..a2f1454 100644
--- a/web/src/routes/noter/+page.svelte
+++ b/web/src/routes/noter/+page.svelte
@@ -629,99 +629,108 @@
{query ? t('notes.noneFound') : showArchive ? t('notes.emptyArchive') : t('notes.noneYet')}
{:else}
- {#each groups as group (group.key)}
-
- {#if !group.plain}
-
-
-
-
- {/if}
- {#if !folded.has(group.key)}
-
- {#each group.notes as note (note.id)}
-
-
-
-
-
-
-
-
+
+
+ {#each groups as group (group.key)}
+
+ {#if !group.plain}
+