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') {
|
||||
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();
|
||||
onBackspaceAtStart?.({ blockId: block.id, text: el.textContent ?? '' });
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ couleur, lien). Phase 3 : `table`.
|
||||
- `> ` → citation
|
||||
- ` ``` ` → bloc de code
|
||||
- `---` → 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
|
||||
- `Ctrl/Cmd + Z` / `Ctrl/Cmd + Shift + Z` → undo / redo
|
||||
|
||||
|
||||
Reference in New Issue
Block a user