fix(ui): focus, paging and state that a key or a finger can reach
- A key landing on a side panel's tab steps into the card it peeks open, not onto the hidden tab. - The Channels cards keep their status / pager row at the list's end while the band is folded. - A menu row's note shows on an enabled row too: the download state under 'Download…', not a title. - A removal chip hands the focus to its neighbour before it goes, for every caller (the feed's and Plex's active filters); the hidden-filter cue's own copy is gone. - Back to a spot within a page's end spacer lands at the page's end, not its top. - A running push / revert is tracked per list: another list's push is no longer refused unseen.
This commit is contained in:
@@ -160,6 +160,15 @@ export default function SidePanel({
|
||||
);
|
||||
}
|
||||
}
|
||||
// A key landing on the tab peeks the card open over it, and the tab then goes inert below —
|
||||
// with the focus still on it: a hidden control, out of the tree, that Enter still pinned
|
||||
// (round 2, F1). The focus steps into the card instead, onto its pin: the same control.
|
||||
onFocus={(e) => {
|
||||
if (drawerMode || pinned || !e.currentTarget.matches(":focus-visible")) return;
|
||||
requestAnimationFrame(() =>
|
||||
cardRef.current?.querySelector<HTMLElement>("button")?.focus(),
|
||||
);
|
||||
}}
|
||||
// Under an open card the tab is transparent and inert: out of the Tab order AND of the
|
||||
// accessibility tree, where it would repeat the card's own pin button by name.
|
||||
tabIndex={expanded ? -1 : undefined}
|
||||
|
||||
Reference in New Issue
Block a user