diff --git a/tests/browser/workspace-library-delete.spec.mjs b/tests/browser/workspace-library-delete.spec.mjs index 6b6f0329..d18d8ac8 100644 --- a/tests/browser/workspace-library-delete.spec.mjs +++ b/tests/browser/workspace-library-delete.spec.mjs @@ -480,8 +480,12 @@ test('the prompt page\'s More menu opens Delete prompt…, by mouse and keyboard await page.keyboard.press('ArrowDown');await expect(item).toBeFocused(); await page.keyboard.press('Escape'); await expect(moreMenu(page)).toBeHidden();await expect(more(page)).toBeFocused();await expect(more(page)).toHaveAttribute('aria-expanded','false'); + // ArrowUp opens on the last item; ArrowUp, Home and End move within it (one item here); Tab closes it. + await page.keyboard.press('ArrowUp');await expect(item).toBeFocused(); + for(const key of ['ArrowUp','Home','End']) {await page.keyboard.press(key);await expect(item).toBeFocused();} + await page.keyboard.press('Tab');await expect(moreMenu(page)).toBeHidden();await expect(more(page)).toHaveAttribute('aria-expanded','false'); // Space opens too; an outside press closes it. - await page.keyboard.press(' ');await expect(item).toBeFocused(); + await more(page).focus();await page.keyboard.press(' ');await expect(item).toBeFocused(); await page.locator('#workspace-main h1').click();await expect(moreMenu(page)).toBeHidden(); // Choosing it opens the page's review, titled for this prompt; Cancel returns focus to ⋯. await more(page).click();await item.click(); diff --git a/web/js/workspace/more-menu.mjs b/web/js/workspace/more-menu.mjs index da3fa31e..664cf7ec 100644 --- a/web/js/workspace/more-menu.mjs +++ b/web/js/workspace/more-menu.mjs @@ -7,7 +7,7 @@ import { createButton } from '../shared/toolkit/core.js'; * returns focus to the button; Tab, an outside pointer press or choosing an item closes it. A held button * (`aria-disabled`) or a disabled one opens nothing. Listeners live on `scope`. * - * `items`: `[{ label, danger, onSelect }]`. Returns `{ element, button, close, setDisabled(disabled) }`. + * `items`: `[{ label, danger, onSelect }]`. Returns `{ element, button, setDisabled(disabled) }`. */ let menus = 0; export function createMoreMenu({ scope, label, items }) { @@ -80,7 +80,6 @@ export function createMoreMenu({ scope, label, items }) { return { element, button, - close: () => close(false), setDisabled(disabled) { button.disabled = disabled; if (disabled) close(false); }, }; }