diff --git a/apps/nextjs/src/components/board/sections/gridstack/board-empty-space-context-menu.tsx b/apps/nextjs/src/components/board/sections/gridstack/board-empty-space-context-menu.tsx index b2a31eadc..ac1673369 100644 --- a/apps/nextjs/src/components/board/sections/gridstack/board-empty-space-context-menu.tsx +++ b/apps/nextjs/src/components/board/sections/gridstack/board-empty-space-context-menu.tsx @@ -101,6 +101,7 @@ export const BoardEmptySpaceContextMenu = ({ section, refs, children, ...boxProp if (!placement) return; event.preventDefault(); event.stopPropagation(); + returnFocusRef.current = event.currentTarget; setMenu({ x: event.clientX, y: event.clientY, placement }); }; @@ -108,11 +109,13 @@ export const BoardEmptySpaceContextMenu = ({ section, refs, children, ...boxProp if (!enabled || event.pointerType !== "touch") return; const placement = resolvePlacement(event.target, event.pageX, event.pageY); if (!placement) return; + const returnFocus = event.currentTarget; clearLongPress(); longPressPointer.current = { pointerId: event.pointerId, x: event.clientX, y: event.clientY }; touchGuardElement.current = event.currentTarget; touchGuardElement.current.classList.add(suppressTouchCalloutClass); longPressTimer.current = setTimeout(() => { + returnFocusRef.current = returnFocus; setMenu({ x: event.clientX, y: event.clientY, placement }); navigator.vibrate?.(20); }, 500); diff --git a/e2e/board-advanced-interactions.spec.ts b/e2e/board-advanced-interactions.spec.ts index a8b40af5b..c37e34e2b 100644 --- a/e2e/board-advanced-interactions.spec.ts +++ b/e2e/board-advanced-interactions.spec.ts @@ -265,11 +265,14 @@ describe("Board advanced interactions", () => { await expect(addHereMenuItem).toBeVisible({ timeout: 1_000 }); await page.keyboard.press("Escape"); await expect(addHereMenuItem).toBeHidden(); + await expect(grid).toBeFocused(); await rightClickEmptyGridSpaceAsync(grid); await expect(addHereMenuItem).toBeVisible(); + await addHereMenuItem.click(); + await expect(page.getByRole("dialog").filter({ hasText: "Choose item to add" })).toBeVisible(); await page.keyboard.press("Escape"); - await expect(addHereMenuItem).toBeHidden(); + await expect(grid).toBeFocused(); } finally { await context.close(); }