One mechanism for menus, popovers and tooltips #627
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#627
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
Six dropdown mechanisms coexist (server-state
<.dropdown_menu>, CSS-focus dropdowns in the sidebar, a popover with anchor positioning, three hand-built absolute divs, filter-builder popovers,<details>). Tooltips come in four mechanisms plus ~22title=and 5 rawdata-tip; the CoreComponent<.tooltip>shows on focus only when it wraps a focusable trigger (many wrap bare icons) and has noaria-describedby, no Escape and is not hoverable, while the most accessible variant (a popover meeting WCAG 1.4.13) lives outside CoreComponents. A hook comment still claims anchor positioning is unsupported in Safari/Firefox (it is Baseline since 01/2026). DESIGN_GUIDELINES §20 defines one mechanism: Popover API + CSS anchor positioning, client-side state.Visible improvement
Menus open instantly, are never clipped by tables, and work fully with the keyboard; tooltips appear on focus as well as on hover.
Scope (ordered steps,
just ci-devgreen after each)<.popover>and<.menu_button>(APG Menu Button) on the Popover API with anchor positioning, opened withJScommands; decide the positioning fallback for browsers without anchor positioning.<.dropdown_menu>only where the server holds pending state (filter popovers); document each remaining use.<.tooltip>: hover and focus, hoverable, Escape,aria-describedby; merge the PopoverTooltip and HoverPopover hooks; fix the outdated comment.title=anddata-tip(statistics, tables, icons) to<.tooltip>, keepingtitle=only as the documented overflow hint (§20.2); remove tooltips from disabled controls (explain with help text instead). This includes the<.table row_tooltip>attribute, which renderstitle=on every clickable row: decide how the row hint is rendered withouttitle=(its screen-reader text in the first cell stays).Out of scope
Acceptance criteria
data-tipexceptions left.just ci-devgreen after every step.Dependencies
Anchors (verified against
main@d9093a1f, re-check before filing)<.tooltip>:lib/mv_web/components/core_components.ex:453;<.dropdown_menu>::518lib/mv_web/components/layouts/sidebar.exassets/js/app.js(PopoverTooltip, SubfieldMenu),assets/js/hooks/hover_popover.jstitle=occurrences (34 matches incl. non-tooltip uses, 11 in statistics):lib/mv_web/live/statistics_live.exdata-tip: 5 inlib/mv_web/live/**Caution
has_element?; cover menus withui-tagged browser tests.