fix(BlockEditor): trigger select-all blocks when block content is empty on Ctrl+A
This commit is contained in:
@@ -158,17 +158,21 @@ const Block = forwardRef(function Block(
|
||||
e.preventDefault();
|
||||
const sel = window.getSelection();
|
||||
const txt = el.textContent ?? '';
|
||||
const fullySelected =
|
||||
!!sel && sel.rangeCount > 0 && !sel.isCollapsed &&
|
||||
el.contains(sel.anchorNode) && el.contains(sel.focusNode) &&
|
||||
sel.toString() === txt && txt.length > 0;
|
||||
if (fullySelected) {
|
||||
if (txt.length === 0) {
|
||||
onSelectAllBlocks?.();
|
||||
} else {
|
||||
const range = document.createRange();
|
||||
range.selectNodeContents(el);
|
||||
sel?.removeAllRanges();
|
||||
sel?.addRange(range);
|
||||
const fullySelected =
|
||||
!!sel && sel.rangeCount > 0 && !sel.isCollapsed &&
|
||||
el.contains(sel.anchorNode) && el.contains(sel.focusNode) &&
|
||||
sel.toString() === txt;
|
||||
if (fullySelected) {
|
||||
onSelectAllBlocks?.();
|
||||
} else {
|
||||
const range = document.createRange();
|
||||
range.selectNodeContents(el);
|
||||
sel?.removeAllRanges();
|
||||
sel?.addRange(range);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user