Skip to content

Commit e7eaea9

Browse files
committed
refactor: editable logic
1 parent 9da67a5 commit e7eaea9

File tree

4 files changed

+27
-2
lines changed

4 files changed

+27
-2
lines changed

.changeset/modern-cougars-punch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@zag-js/editable": patch
3+
---
4+
5+
Fix issue where input value fails to revert after repeated full deletion

e2e/editable.e2e.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { test } from "@playwright/test"
22
import { EditableModel } from "./models/editable.model"
3+
import { repeat } from "./_utils"
34

45
let I: EditableModel
56

@@ -89,4 +90,14 @@ test.describe("editable", () => {
8990
await I.seeInput()
9091
await I.seeInputIsFocused()
9192
})
93+
94+
test("revert value after repeated full deletion", async () => {
95+
await repeat(3, async () => {
96+
await I.focusPreview()
97+
await I.seeInputHasValue("Hello World")
98+
await I.pressKey("Backspace")
99+
await I.clickCancel()
100+
await I.seePreviewHasText("Hello World")
101+
})
102+
})
92103
})

e2e/models/editable.model.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ export class EditableModel extends Model {
3131
return this.page.locator("[data-testid=edit-button]")
3232
}
3333

34+
get cancelTrigger() {
35+
return this.page.locator("[data-testid=cancel-button]")
36+
}
37+
3438
async focusPreview() {
3539
await this.preview.focus()
3640
await this.page.waitForSelector("input:focus")
@@ -48,6 +52,10 @@ export class EditableModel extends Model {
4852
return this.submitTrigger.click()
4953
}
5054

55+
clickCancel() {
56+
return this.cancelTrigger.click()
57+
}
58+
5159
dblClickPreview() {
5260
return this.preview.dblclick()
5361
}

packages/machines/editable/src/editable.machine.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export const machine = createMachine<EditableSchema>({
7676

7777
states: {
7878
preview: {
79-
entry: ["blurInputIfNeeded"],
79+
entry: ["blurInput"],
8080
on: {
8181
"CONTROLLED.EDIT": {
8282
target: "edit",
@@ -97,6 +97,7 @@ export const machine = createMachine<EditableSchema>({
9797

9898
edit: {
9999
effects: ["trackInteractOutside"],
100+
entry: ["syncInputValue"],
100101
on: {
101102
"CONTROLLED.PREVIEW": [
102103
{
@@ -227,7 +228,7 @@ export const machine = createMachine<EditableSchema>({
227228
if (!value) return
228229
context.set("value", value)
229230
},
230-
blurInputIfNeeded({ scope }) {
231+
blurInput({ scope }) {
231232
dom.getInputEl(scope)?.blur()
232233
},
233234
},

0 commit comments

Comments
 (0)