From 438095e252f44e58250b8db481e0ebf67df7a2f2 Mon Sep 17 00:00:00 2001 From: kristianwind Date: Tue, 6 Oct 2026 12:28:23 +0200 Subject: [PATCH] =?UTF-8?q?fix(noter):=20=E2=8C=98B=20g=C3=B8r=20teksten?= =?UTF-8?q?=20fed=20i=20stedet=20for=20at=20folde=20sidebj=C3=A6lken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Meldt ind: "command+b viser og skjuler menuen - ikke bold". Fladen tog ⌘B til sidebjælken, og begrundelsen stod i koden: "works while typing as well — it moves nothing in the field". Det passer for et ``, hvor ⌘B ikke gør noget. I en contenteditable ER ⌘B fed tekst, og `preventDefault()` stoppede browseren i at gøre den. Sætningen var sand, da den blev skrevet. Så kom en rig editor til, og begrundelsen holdt op med at passe uden at nogen rørte linjen — samme form som flere af fælderne i den her kodebase. Feltet, markøren står i, har førsteret til en tast, det selv bruger. Uden for et skrivefelt folder genvejen stadig sidebjælken, og prøven måler begge halvdele: en rettelse, der bare holdt op med at folde, ville være halvt færdig. Efterprøvet mod den gamle kode — ordet blev aldrig fedt. Co-Authored-By: Claude Opus 5 --- web/e2e/smoke.spec.js | 41 +++++++++++++++++++++++++++++++++++ web/src/routes/+layout.svelte | 16 ++++++++++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/web/e2e/smoke.spec.js b/web/e2e/smoke.spec.js index 0f60037..f5dbb37 100644 --- a/web/e2e/smoke.spec.js +++ b/web/e2e/smoke.spec.js @@ -5035,6 +5035,47 @@ test('et klik væk fra en kodeblok skriver ikke dens linjer sammen', async ({ pa expect(trouble).toEqual([]); }); +/** + * ⌘B gør teksten fed i en note — den folder ikke sidebjælken. + * + * Fladen tog ⌘B til sidebjælken med den begrundelse, at den "ikke flytter noget i + * feltet". Det passer for et , hvor ⌘B ikke gør noget. I en contenteditable + * ER ⌘B fed tekst, og `preventDefault()` stoppede browseren i at gøre den — så i + * noterne foldede menuen sig, hver gang man ville fremhæve et ord. + * + * Begge halvdele måles. En rettelse, der bare holdt op med at folde, ville være + * halvt færdig: ordet skal også blive fedt. + */ +test('⌘B gør teksten fed i en note i stedet for at folde sidebjælken', async ({ page }) => { + const trouble = watchForTrouble(page); + await page.goto('/noter'); + + const foldet = () => page.locator('.shell.sidebar-collapsed').count(); + expect(await foldet()).toBe(0); + + await nyNote(page); + await page.keyboard.type('Fremhævet'); + await page.keyboard.press('Enter'); + await page.keyboard.type('ordet'); + await page.keyboard.press('ControlOrMeta+a'); + + const ed = page.getByRole('textbox', { name: 'Notens tekst' }); + await page.keyboard.press('ControlOrMeta+b'); + + // Enten eller : browserens egen fed er , omformeren skriver + // , og begge læses som fed på vejen tilbage. + await expect(ed.locator('b, strong')).toContainText('ordet'); + expect(await foldet()).toBe(0); + + // Og uden for et skrivefelt gør den stadig det, den er sat til. + await page.getByRole('heading', { name: 'Noter' }).click(); + await page.keyboard.press('ControlOrMeta+b'); + expect(await foldet()).toBe(1); + await page.keyboard.press('ControlOrMeta+b'); + + expect(trouble).toEqual([]); +}); + /** * Flere markerede afsnit bliver til ÉN monotypeblok — ikke kun det øverste. * diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 17f67df..b311528 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -130,8 +130,20 @@ // Folding the sidebar had a button and nothing else, and a rectangle with a // line down it is not a word: somebody who wanted the menu out of the way // asked for the feature that was already there. ⌘B is where an editor puts - // it. Works while typing as well — it moves nothing in the field. - if ((event.metaKey || event.ctrlKey) && (event.key === 'b' || event.key === 'B')) { + // it. + // + // Men ikke i en rig editor. Her stod der "works while typing as well — it + // moves nothing in the field", og det passer for et , hvor ⌘B ikke + // gør noget. I en contenteditable ER ⌘B fed tekst, og `preventDefault()` + // nedenfor stoppede browseren i at gøre den — så i noterne foldede + // sidebjælken sig i stedet for at gøre ordet fedt. Feltet, markøren står i, + // har førsteret til en tast, det selv bruger. + const writing = el?.isContentEditable || el?.closest?.('[contenteditable="true"]'); + if ( + (event.metaKey || event.ctrlKey) && + (event.key === 'b' || event.key === 'B') && + !writing + ) { event.preventDefault(); sidebar.toggle(); return;