fix(BlockEditor): prevent block merge when backspace pressed with active selection
- skip merge-with-previous-block trigger if selection is not collapsed - update README to document the collapsed-selection guard on Backspace
This commit is contained in:
@@ -146,7 +146,11 @@ const Block = forwardRef(function Block(
|
|||||||
|
|
||||||
if (e.key === 'Backspace') {
|
if (e.key === 'Backspace') {
|
||||||
const el = editableRef.current;
|
const el = editableRef.current;
|
||||||
if (el && isCaretAtStart(el)) {
|
const sel = typeof window !== 'undefined' ? window.getSelection() : null;
|
||||||
|
// Si une sélection non-vide existe (ex. après Ctrl+A), laisser le
|
||||||
|
// navigateur supprimer le texte sélectionné — ne pas déclencher le
|
||||||
|
// merge avec le bloc précédent.
|
||||||
|
if (el && sel?.isCollapsed !== false && isCaretAtStart(el)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
onBackspaceAtStart?.({ blockId: block.id, text: el.textContent ?? '' });
|
onBackspaceAtStart?.({ blockId: block.id, text: el.textContent ?? '' });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ couleur, lien). Phase 3 : `table`.
|
|||||||
- `> ` → citation
|
- `> ` → citation
|
||||||
- ` ``` ` → bloc de code
|
- ` ``` ` → bloc de code
|
||||||
- `---` → séparateur
|
- `---` → séparateur
|
||||||
- `Backspace` au début d'un bloc typé → repasse en paragraphe ; au début d'un paragraphe, fusionne avec le bloc précédent
|
- `Backspace` au début d'un bloc typé → repasse en paragraphe ; au début d'un paragraphe, fusionne avec le bloc précédent (uniquement si la sélection est repliée — sinon le navigateur supprime le texte sélectionné, ex. après `Ctrl+A`)
|
||||||
- `Entrée` sur un item de liste vide → sort de la liste
|
- `Entrée` sur un item de liste vide → sort de la liste
|
||||||
- `Ctrl/Cmd + Z` / `Ctrl/Cmd + Shift + Z` → undo / redo
|
- `Ctrl/Cmd + Z` / `Ctrl/Cmd + Shift + Z` → undo / redo
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user