fix(plex): the player's ⋯ and tracks lists are real menus, and every close returns the focus

They were hand-built divs: no menu roles, no arrow keys, and Escape left the
focus on <body>. Both run on the popover engine now (media-tone rows), and the
tuning panel is a labelled dialog that takes the focus and hands it back to ⋯.
This commit is contained in:
2026-09-27 14:22:37 +02:00
parent 9bedd96774
commit a975ab627a
8 changed files with 224 additions and 90 deletions
+6 -1
View File
@@ -46,8 +46,13 @@ describe("the Plex player's layers", () => {
const popovers = classes(
/\bbottom-full\b.*\bbg-media-chrome\b|\bbg-media-chrome\b.*\bbottom-full\b/,
);
expect(popovers).toHaveLength(3); // tracks, the ⋯ menu (C5), the settings panel
expect(popovers).toHaveLength(1); // the settings panel, which renders inside the player
for (const c of popovers) expect(c).toMatch(/\bz-menu\b/);
// The tracks list and the ⋯ menu are on the popover engine (E28 review D3), which lifts them to
// z-popover — above the player's own z-overlay — and into the fullscreen element.
expect([...src.matchAll(/<PopoverSurface\b[^>]*?className=\{`\$\{PLAYER_MENU\}/g)]).toHaveLength(
2,
);
});
it("keeps the notices a level below", () => {