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([]);
|
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.
|
* 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
|
// 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
|
// 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
|
// 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.
|
// it.
|
||||||
if ((event.metaKey || event.ctrlKey) && (event.key === 'b' || event.key === 'B')) {
|
//
|
||||||
|
// 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();
|
event.preventDefault();
|
||||||
sidebar.toggle();
|
sidebar.toggle();
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user