fix: la touche Delete supprime maintenant le bloc vide (comme Backspace) (v7.64.1)
- onKd : la garde « bloc sans texte → supprimer le bloc » couvre Backspace ET Delete (une seule branche partagée) — Delete vide d'abord le bloc, puis le supprime au coup suivant ; le dernier bloc de la page n'est jamais supprimé (l'éditeur garde un paragraphe) - le vide est jugé avec gtTok(el) (le texte lu à la sauvegarde) et non textContent : une pastille de réaction seule n'empêche plus la suppression - Tests : e2e/v7641_delete_key.spec.js (texte → Delete vide le bloc → Delete supprime le bloc → dernier bloc jamais supprimé) ; 4/4 specs e2e verts, suite complète 1383 passed / 0 failed, ruff OK, OpenAPI 7.64.1 (526 chemins)
This commit is contained in:
@@ -2417,7 +2417,10 @@ applyAIBlocks(text){
|
||||
}
|
||||
if(e.key==='ArrowUp'){const _sp=splitCaret(el);if(_sp&&!_sp.before.trim()&&idx>0){e.preventDefault();const prev=this.getEl(this.blocks[idx-1]?.id);if(prev){prev.focus();ce(prev);}}return;}
|
||||
if(e.key==='ArrowDown'){const _sp=splitCaret(el);if(_sp&&!_sp.after.trim()&&idx<this.blocks.length-1){e.preventDefault();const next=this.getEl(this.blocks[idx+1]?.id);if(next){next.focus();cs(next);}}return;}
|
||||
if(e.key==='Backspace'){if(!(el.textContent||'').trim()){this.sync();if(block.type!=='paragraph'){e.preventDefault();this.pushHistory();block.type='paragraph';block.content='';this.render();_rtSync();setTimeout(()=>{const ne=this.getEl(block.id);if(ne)ne.focus();},60);}else if(this.blocks.length>1){e.preventDefault();this.removeBlock(idx);}}return;}
|
||||
// Backspace / Delete sur un bloc vide → supprimer le bloc (même garde
|
||||
// pour les deux touches ; le texte restant est lu comme à la sauvegarde
|
||||
// pour ignorer les annotations .fd-react-chip)
|
||||
if(e.key==='Backspace'||e.key==='Delete'){if(!(gtTok(el)||'').trim()){this.sync();if(block.type!=='paragraph'){e.preventDefault();this.pushHistory();block.type='paragraph';block.content='';this.render();_rtSync();setTimeout(()=>{const ne=this.getEl(block.id);if(ne)ne.focus();},60);}else if(this.blocks.length>1){e.preventDefault();this.removeBlock(idx);}}return;}
|
||||
if(e.key===' '){const i3=idx;setTimeout(()=>this.checkMd(i3),15);}
|
||||
if((e.ctrlKey||e.metaKey)&&!e.altKey){
|
||||
if(e.key.toLowerCase()==='z'){e.preventDefault();if(e.shiftKey)this.redo();else this.undo();return;}
|
||||
|
||||
Reference in New Issue
Block a user