List toolbars, empty states and accessible orderable lists #632
Labels
No labels
bug
duplicate
enhancement
help wanted
high priority
invalid
L
low priority
M
medium priority
needs refinement
optional
question
S
security
technical improvement
UX Improvement
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
local-it/mitgliederverwaltung#632
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
All list building blocks (search, sort headers, filters) exist only on the member overview; users, groups and join requests have no search, the users sort is not in the URL, and three sort-header implementations exist (one without a visible focus). Join requests are split into two tables instead of a status filter. Five raw
<table>s bypass<.table>. Empty states come in five variants or are missing; numbers are not consistently right-aligned; booleans appear as text and badges in the same table. The orderable join-form table has no move buttons and (before U1) no locked rows; data fields have no position attribute, so their order is alphabetical in three places. Making that order configurable is #15; this issue prepares the building blocks for it but does not implement it. DESIGN_GUIDELINES §7.3, §7.4, §8.8–§8.11 and §4.2 define the target.Visible improvement
Users, groups and join requests can be searched and sorted like members; empty lists say what to do; tables align numbers and show booleans one way; reordering works with buttons, not only by dragging.
Scope (ordered steps,
just ci-devgreen after each)<th>,aria-sort, focus ring, URL state); migrate the three implementations.<.empty_state>; migrate all empty states; “No results” + “Clear filters” for filtered lists.<.table>: group members, statistics (2), import preview, fees tab. Decide whether<.table>renders the row-click cell's content as a real link to the row target instead of today'srole="button"cell (DESIGN_GUIDELINES §8.8); either way no link or control sits inside the row-click cell (no nested interactive elements, one Tab stop per row).<.maybe_value>.<.sortable_table>(it already haslocked_ids): the reorder handler rejects moves of locked rows, visible move up/down buttons with row-specific names, gettext announcements, Escape undo.Out of scope
Acceptance criteria
<table>in views.aria-sort; move buttons as dragging alternative (WCAG 2.5.7); announcements translated.just ci-devgreen after every step.Dependencies
aria-sortin table headers): the shared sort header (step 1) fixes it; close #174 with a reference to this issue.<.search_input>), U9 (row rules, edit routes).Anchors (verified against
main@d9093a1f, re-check before filing)lib/mv_web/components/table_components.ex:24; other sort headers:lib/mv_web/components/sort_header_component.ex,lib/mv_web/components/member_name_sort_header.exlib/mv_web/live/group_live/show.ex:295,lib/mv_web/live/statistics_live.ex:225,377,lib/mv_web/live/import_live/components.ex:146,lib/mv_web/live/member_live/show/membership_fees_component.ex:94lib/mv_web/live/join_request_live/index.exlib/mv_web/live/global_settings_live.ex:270,<.sortable_table>inlib/mv_web/components/core_components.ex:1398Caution
<.table>before the refined-statistics feature adds charts (DESIGN_GUIDELINES §22.5).