fix(ui): prevent document drawer from remounting on save (#13005)
Supersedes #12992. Partially closes #12975. Right now autosave-enabled documents opened within a drawer will unnecessarily remount on every autosave interval, causing loss of input focus, etc. This makes it nearly impossible to edit these documents, especially if the interval is very short. But the same is true for non-autosave documents when "manually" saving, e.g. pressing the "save draft" or "publish changes" buttons. This has gone largely unnoticed, however, as the user has already lost focus of the form to interact with these controls, and they somewhat expect this behavior or at least accept it. Now, the form remains mounted across autosave events and the user's cursor never loses focus. Much better. Before: https://github.com/user-attachments/assets/a159cdc0-21e8-45f6-a14d-6256e53bc3df After: https://github.com/user-attachments/assets/cd697439-1cd3-4033-8330-a5642f7810e8 Related: #12842 --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1210689077645986
This commit is contained in:
@@ -436,10 +436,15 @@ describe('Access Control', () => {
|
||||
const documentDrawer = page.locator(`[id^=doc-drawer_${createNotUpdateCollectionSlug}_1_]`)
|
||||
await expect(documentDrawer).toBeVisible()
|
||||
await expect(documentDrawer.locator('#action-save')).toBeVisible()
|
||||
|
||||
await documentDrawer.locator('#field-name').fill('name')
|
||||
await expect(documentDrawer.locator('#field-name')).toHaveValue('name')
|
||||
await documentDrawer.locator('#action-save').click()
|
||||
await expect(page.locator('.payload-toast-container')).toContainText('successfully')
|
||||
|
||||
await saveDocAndAssert(
|
||||
page,
|
||||
`[id^=doc-drawer_${createNotUpdateCollectionSlug}_1_] #action-save`,
|
||||
)
|
||||
|
||||
await expect(documentDrawer.locator('#action-save')).toBeHidden()
|
||||
await expect(documentDrawer.locator('#field-name')).toBeDisabled()
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user