Skip to content

fix(tables): make headers sort buttons with aria-sort - #945

Merged
danieltruong merged 1 commit into
developfrom
fix-admin-sorts
Sep 24, 2026
Merged

danieltruong merged 1 commit into
developfrom
fix-admin-sorts

Conversation

@danieltruong

Copy link
Copy Markdown
Collaborator

Fixes sorting across the admin tables.

  • Sortable column headers are now buttons, so they work from the keyboard. Each header sets aria-sort and shows an arrow for the active sort. For a sort on several fields, the header of the first field shows it. A column whose own value is a multi-field sort, such as Contacts Name (lastName,+firstName), is marked too.
  • Sorting a column goes back to page 1.
  • A keyword search keeps the current sort.
  • Publishing or unpublishing documents keeps the current page. Deleting every row on the last page steps back one page.
  • Days Remaining on Comment Periods is no longer sortable. It is computed and the API cannot sort on it.
  • Group contacts keep their page and page size after loading.
  • The search page no longer runs a search when only the sort is in the URL.

Tests: new specs for the table template, the sort helper, activity, comment periods, project documents, group contacts and search.

- Column sort resets to page 1; keyword search keeps the sort
- Deleting the last rows on the last page steps back one page
- Days Remaining is not sortable (computed, not a stored field)
- Group contacts keep page and pageSize
- Mark multi-key sort columns
@danieltruong
danieltruong merged commit f94a0cf into develop Sep 24, 2026
4 checks passed
@danieltruong
danieltruong deleted the fix-admin-sorts branch September 24, 2026 22:10
danieltruong added a commit that referenced this pull request Sep 24, 2026
danieltruong added a commit that referenced this pull request Sep 24, 2026
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.

1 participant