Skip to content

Commit 625d820

Browse files
committed
VB-248 fixed the cursor moving to the start with a explicitly adding pseudo element on second time a field is visited
1 parent fb85e53 commit 625d820

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/visualBuilder/utils/enableInlineEditing.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export function enableInlineEditing({
3131
const elementComputedDisplay =
3232
window.getComputedStyle(actualEditableField).display;
3333

34+
3435
let textContent =
3536
(editableElement as HTMLElement).innerText ||
3637
editableElement.textContent ||
@@ -41,14 +42,17 @@ export function enableInlineEditing({
4142
actualEditableField.addEventListener("paste", pasteAsPlainText);
4243
}
4344
const expectedTextContent = expectedFieldData;
45+
46+
const isFieldLastEdited = document.querySelector("[data-cs-last-edited]") === editableElement;
4447
if (
4548
(expectedTextContent && textContent !== expectedTextContent) ||
46-
isEllipsisActive(editableElement as HTMLElement)
49+
isEllipsisActive(editableElement as HTMLElement) ||
50+
isFieldLastEdited
4751
) {
4852
// TODO: Testing will be done in the E2E.
4953
const pseudoEditableField = generatePseudoEditableElement(
5054
{ editableElement: editableElement as HTMLElement },
51-
{ textContent: expectedFieldData }
55+
{ textContent: expectedFieldData }
5256
);
5357

5458
(editableElement as HTMLElement).style.visibility = "hidden";
@@ -90,6 +94,9 @@ export function enableInlineEditing({
9094
actualEditableField.setAttribute("contenteditable", "true");
9195
actualEditableField.addEventListener("input", handleFieldInput);
9296
actualEditableField.addEventListener("keydown", handleFieldKeyDown);
97+
98+
editableElement.setAttribute("data-cs-last-edited", "true");
99+
93100
// focus on the contenteditable element to start accepting input
94101
actualEditableField.focus();
95102

src/visualBuilder/utils/handleFieldMouseDown.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ export function handleFieldInput(e: Event): void {
1616
const fieldType = targetElement.getAttribute(
1717
VISUAL_BUILDER_FIELD_TYPE_ATTRIBUTE_KEY
1818
) as FieldDataType | null;
19+
20+
const previousLastEditedElement = document.querySelector("[data-cs-last-edited]");
21+
if (previousLastEditedElement !== targetElement) {
22+
previousLastEditedElement?.removeAttribute("data-cs-last-edited");
23+
targetElement.setAttribute("data-cs-last-edited", "true");
24+
}
1925
if (
2026
event.type === "input" &&
2127
ALLOWED_INLINE_EDITABLE_FIELD.includes(fieldType as FieldDataType)

0 commit comments

Comments
 (0)