diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css index 40196d861..cf28b2a26 100644 --- a/packages/core/src/editor/Block.css +++ b/packages/core/src/editor/Block.css @@ -14,21 +14,8 @@ BASIC STYLES } .bn-block-content { - padding: 3px 0; transition: font-size 0.2s; width: 100%; - /* - because the content elements are display: block - we use flex to position them next to list markers - */ -} - -/* We can't set `display: flex` on `.bn-block-content` while it has inline -content (see #1629). However, it's necessary to set alignment of blocks -without content as these can't use `text-align`, so this additional rule is -used. */ -.bn-block-content:not(:has(.bn-inline-content)) { - display: flex; } .bn-block-content::before { @@ -46,6 +33,22 @@ used. */ .bn-inline-content { width: 100%; + /* We use line height on `.bn-inline-content` to mimic padding on + `.bn-block-content`, in order to change where the selection is moved when + clicking in between blocks. When clicking padding below a block, the + selection is moved to the end of it, and the opposite happens when clicking + the padding above. Because we need quite small paddings, this behaviour + results in clunky UX as it's hard to tell where the padding starts/ends. + Setting line height instead moves the selection to the position closest + to the cursor, which is much more intuitive. */ + line-height: 30px; +} + +.bn-block-content:not(:has(.bn-inline-content)) { + /* For blocks without a `.bn-inline-content` (blocks without content), + `text-align` will have no effect. However, in this case we don't run into the + issue above r.e. selection, so it's fine to just add vertical padding. */ + padding-block: 3px; } /* @@ -128,12 +131,21 @@ NESTED BLOCKS [data-content-type="heading"] { --level: 3em; } +[data-content-type="heading"] > .bn-inline-content { + line-height: 78px; +} [data-content-type="heading"][data-level="2"] { --level: 2em; } +[data-content-type="heading"][data-level="2"] > .bn-inline-content { + line-height: 54px; +} [data-content-type="heading"][data-level="3"] { --level: 1.3em; } +[data-content-type="heading"][data-level="3"] > .bn-inline-content { + line-height: 37px; +} [data-prev-level="1"] { --prev-level: 3em; diff --git a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-formatting-toolbar-chromium-linux.png b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-formatting-toolbar-chromium-linux.png index a149f45e7..a73107971 100644 Binary files a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-formatting-toolbar-chromium-linux.png and b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-formatting-toolbar-chromium-linux.png differ diff --git a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-formatting-toolbar-chromium-linux.png b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-formatting-toolbar-chromium-linux.png index 0b2cede95..4c9ba3f65 100644 Binary files a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-formatting-toolbar-chromium-linux.png and b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-formatting-toolbar-chromium-linux.png differ diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-formatting-toolbar-chromium-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-formatting-toolbar-chromium-linux.png index 35b580119..f100f4221 100644 Binary files a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-formatting-toolbar-chromium-linux.png and b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-formatting-toolbar-chromium-linux.png differ