fix(noter): ⌘B gør teksten fed i stedet for at folde sidebjælken
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 `<input>`, 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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3132bba7e5
commit
438095e252
@@ -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 <input>, 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 <b> eller <strong>: browserens egen fed er <b>, omformeren skriver
|
||||
// <strong>, 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.
|
||||
*
|
||||
|
||||
@@ -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 <input>, 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;
|
||||
|
||||
Reference in New Issue
Block a user