Skip to content

feat(table): search long checklist filters and keep keyboard focus in popovers - #183

Merged
gioxx merged 32 commits into
mainfrom
feat/table-filter-search-focus
Nov 10, 2026
Merged

gioxx merged 32 commits into
mainfrom
feat/table-filter-search-focus

Conversation

@gioxx

@gioxx gioxx commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Closes #182

Stacked on #181.

What changes

Search in long checklist filters (ColumnFilterButton)

  • Checklists with more than 10 values get a search box above the list (focused when the filter opens). It matches the option labels.
  • Select all acts on the values the search shows: checking it adds them, unchecking it removes them, and its mixed state is computed on those values.
  • "No values match." when the search finds nothing.
  • The stored selection is normalized to the current options, so a value that no longer exists cannot keep Select all unchecked.

Keyboard focus in table popovers (TablePopover, used by the column filters and Columns)

  • Tab on the last control, or Shift+Tab on the first, closes the popover and returns focus to its button, instead of leaving the page with the popover still open.
  • The funnel button no longer has aria-pressed (it was announced as a toggle). Its accessible name adds "(filtered)" when the column has a filter; aria-expanded and aria-haspopup="dialog" stay.

i18n: common.table.searchValues, noValues, filtered (en, it).

Testing

  • npm test (285 pass), npm run lint, check:i18n and vite build pass.
  • Local install, Audit admin filter (15 values): the search box gets focus; searching narrows the list; Select all on the results filters only those admins (125 to 120 events, matching the API); the button name reads "Filter: Admin (filtered)"; Tab from the last control closes the popover and focuses the funnel.
  • Not covered by automated tests: the React side (no DOM test environment).

gioxx added 30 commits November 9, 2026 10:28
The column picker moves next to the pager, above and below the table.

Refs #166
Also memoizes the Users rows and makes the awaiting-first-sign-in shortcut keep the other column filters.
- The audit and plugin audit admin checklists list the actors found in the period (facets.actors), so removed users and system actors can be kept or left out.
- % and _ in searches and contains filters are matched literally.
- The skeleton replaces the table only before the first answer, so an open filter keeps its focus.
- Facets are requested only when the period or event scope changes.
…e-row

Also counts every Media Library file on disk (identical uploads included) in the Maintenance stats, mentions logos in the box help and documents the new mediaLibrary field in the CHANGELOG.
@gioxx
gioxx changed the base branch from feat/media-library-maintenance-row to main November 10, 2026 11:34
@gioxx
gioxx merged commit be9c2b0 into main Nov 10, 2026
5 checks passed
gioxx added a commit that referenced this pull request Nov 10, 2026
@gioxx
gioxx deleted the feat/table-filter-search-focus branch November 10, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DataTable filters: search in long checklists and keyboard focus in popovers

1 participant