Small entity editing: edit pages, switches in tables, relation removal with Undo #629
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#629
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
Similar small configuration entities are edited in three different ways: data fields in place (the table is replaced by a form, no URL, Back leaves the page), fee types via a row click straight into a form with Delete as a row action, roles via the full index → detail → edit path. Toggling one yes/no setting of a data field costs three clicks plus a context switch, although the table already shows the value. Removing a member from a group uses a danger trash icon that looks like deleting the member. Row clicks lead to three kinds of targets. DESIGN_GUIDELINES §14 (small configuration entities), §8.7, §8.8 and §10.5 define the target. This issue absorbs #449 (route-based data field editing).
Visible improvement
One click per yes/no setting instead of three; every edit page has its own URL; removing a member from a group is clearly different from deleting a member, and can be undone.
Scope (ordered steps,
just ci-devgreen after each)/admin/datafields/:slug/edit), row click opens it; sections and Danger zone on the edit page; remove the in-place form.aria-labeland tooltip; success toast with “Undo” that restores the relation. The button renders only for users who may change the relation; the remove and the Undo handler both re-check the permission; Undo restores only the relation the server recorded for this removal, never ids sent by the client. Decide the toast duration and the focus target after the row disappears.main@edfc8e98the member overview rows have no delete or edit buttons, and data fields open on row click with Delete in the Danger zone, so most of #261 looks solved or outdated. Confirm each of its four acceptance points, then close #261 with a reference to this issue, or list what is still open.Out of scope
Acceptance criteria
role="switch"and row-specific names; Undo reachable by keyboard while the toast is visible; focus after removal handled as decided.just ci-devgreen after every step.Dependencies
<.section>,<.danger_zone>, switch input).Anchors (verified against
main@d9093a1f, re-check before filing)lib/mv_web/live/datafields_live.ex,lib/mv_web/live/custom_field_live/index_component.ex,lib/mv_web/live/member_field_live/index_component.exlib/mv_web/live/membership_fee_settings_live.ex:248lib/mv_web/router.ex:92-95,lib/mv_web/live/role_live/lib/mv_web/live/group_live/show.ex:328Caution
Related: membership fee cycles (from #615, regrouped 2026-10-25)
#615 allowed two exceptions until a later issue (first meant for #540, which did not take them): "Create cycle" is still a form dialog (
<.modal kind={:form}>inlib/mv_web/live/member_live/show/cycles_component.ex:20,305; DESIGN_GUIDELINES §10.3 exception), and the cycle status buttons still sit inside the table rows (§8.7 exception). Resolve both here: creating a cycle becomes its own small editing surface following this issue's pattern, and the status actions move out of the rows. Coordinate withfollowups/issue-error-paths.md(atomic "Delete all cycles" in the same component).