diff --git a/e2e/specs/content-rendering.spec.ts b/e2e/specs/content-rendering.spec.ts index 9ea78c3e..7c4c748f 100644 --- a/e2e/specs/content-rendering.spec.ts +++ b/e2e/specs/content-rendering.spec.ts @@ -142,6 +142,15 @@ test("US-062 see images and video inline", async ({seed, as}) => { await expect(lightbox).toBeVisible() + await page.keyboard.press("Escape") + + await expect(page.locator(".dialog")).toHaveCount(0) + await expect(inlineImage).toBeVisible() + + await inlineImage.click() + + await expect(lightbox).toBeVisible() + await lightbox.click() await expect(page.locator(".dialog")).toHaveCount(0) diff --git a/e2e/specs/people.spec.ts b/e2e/specs/people.spec.ts index 36a3cd06..8de50828 100644 --- a/e2e/specs/people.spec.ts +++ b/e2e/specs/people.spec.ts @@ -590,6 +590,14 @@ test("US-080 preview a profile from anywhere", async ({seed, as}) => { await expect(dialog(page).getByText("Deckhand, dockside cook")).toBeVisible() await expect(dialog(page).getByText(/Last active/)).toBeVisible() + await page.keyboard.press("Escape") + + await expect(page.locator(".dialog")).toHaveCount(0) + await expect(page).toHaveURL(new RegExp(`${spacePath(url)}/directory$`)) + await expect(preview).toBeVisible() + + await preview.click() + await dialog(page).getByRole("button", {name: "Go back"}).click() // Closed, and alice is exactly where she opened it from. diff --git a/src/app/components/ModalContainer.svelte b/src/app/components/ModalContainer.svelte index 0935a7cc..32e4cd41 100644 --- a/src/app/components/ModalContainer.svelte +++ b/src/app/components/ModalContainer.svelte @@ -10,8 +10,14 @@ } } - const onKeyDown = (e: any) => { - if (e.code === "Escape" && e.target === document.body) { + const onKeyDown = (event: KeyboardEvent) => { + const target = event.target + + if ( + event.code === "Escape" && + target instanceof Element && + !target.closest("input, textarea, [contenteditable]") + ) { closeModal() } }