Skip to content

Commit

Permalink
Merge branch 'master' into bitbucket-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Bayheck authored Dec 5, 2024
2 parents 133f0ed + cc0f2f8 commit 70c38bd
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/client/core/utils/content-editable.js
Original file line number Diff line number Diff line change
Expand Up @@ -285,16 +285,16 @@ export function getNearestCommonAncestor (node1, node2) {

//selection utils
function getSelectedPositionInParentByOffset (node, offset) {
// NOTE: we get a child element by its offset index in the parent
if (domUtils.isShadowUIElement(node))
return { node, offset };

const childNodes = nativeMethods.nodeChildNodesGetter.call(node);
const childCount = domUtils.getChildNodesLength(childNodes);
let isSearchForLastChild = offset >= childCount;
let currentNode = childNodes[offset];
let currentOffset = 0;

// NOTE: we get a child element by its offset index in the parent
if (domUtils.isShadowUIElement(node) || !currentNode)
return { node, offset };

// NOTE: skip shadowUI elements
if (domUtils.isShadowUIElement(currentNode)) {
if (childCount <= 1)
Expand Down
23 changes: 23 additions & 0 deletions test/functional/fixtures/regression/gh-8321/pages/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
</head>
<body>
<div contenteditable="true">
<div id="myText">example</div>
</div>
</body>
<script>
const element = document.getElementById("myText");
element.addEventListener("click", () => {
const selection = document.getSelection();
const range = document.createRange();

range.selectNodeContents(element);
range.collapse(false);
selection.removeAllRanges();
selection.addRange(range);
});
</script>
</html>
5 changes: 5 additions & 0 deletions test/functional/fixtures/regression/gh-8321/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
describe('[Regression](GH-8321)', function () {
it('Should type text without errors when document selection is updated', function () {
return runTests('testcafe-fixtures/index.js', 'Callsite Issue', { only: 'chrome' });
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Selector } from 'testcafe';

fixture('GH-8321 - Callsite Issue')
.page`http://localhost:3000/fixtures/regression/gh-8321/pages/index.html`;

test('Callsite Issue', async t => {
const editor = Selector('[contenteditable=true]');

await t.click(editor);
await t.typeText(editor, 'text1');
});

0 comments on commit 70c38bd

Please sign in to comment.