Team view: click-to-select contacts as an explicit subset (drives 'send email to selection') #53
Reference in New Issue
Block a user
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?
Trigger
m 2026-05-20 13:51:
Shape
Two-layer selection model on the team view (
/admin/teamor wherever the contact list lives):UX details
.entity-tablerow-pointer pattern (the row-click contract from project CLAUDE.md > Frontend conventions) supports click-to-navigate; selection needs a distinct mechanism (checkbox column? click-to-select with a separate row-action area?). Design call — current row-click navigates to user detail; can't reuse without breaking that.Design calls
Role
inventor → coder for the selection-model design call (checkbox-vs-click + send-flow surface). Coder shift after.
Slice C shipped on branch
mai/gauss/inventorcoder-team-admin— commit 02c7121.Frontend-only on
/team(the contact list where the existing broadcast button already lives). 5 files / +382 LoC:frontend/src/team.tsx— master “Alle sichtbaren auswählen” checkbox row above the team-list.frontend/src/client/team.ts— module-scopedselectedUserIDsSet; per-row checkbox; Shift-click range expansion viarenderedUserIDsDOM-order snapshot; sticky footer (renderSelectionFooter) with live counter +Auswahl aufheben+E-Mail an Auswahlbutton;selectedRecipients()mirrors the role-resolution rules ofdisplayedRecipients()and feeds the existingopenBroadcastModalunchanged; tri-state master checkbox (syncMasterCheckbox).frontend/src/styles/global.css—.team-card[data-selected]lime highlight,.team-card-selectcell,.team-selection-footerz-index 150 (above mobile bottom-nav at 100, below modal overlays at 1000+).frontend/src/client/i18n.ts— +10 keys (team.selection.*) × DE + EN.Design picks honoured (all (R) per design §8 + head approval):
/team(not/admin/team— broadcast already lives here)pruneSelectionToVisibleruns everyrender())bun run build clean (2543 i18n keys, data-i18n scan clean). No backend changes. Awaiting head + m — also see #48 for Slice A.
Blocked sibling: Slice B (#49 Add User) parked pending m’s decision on provisioning
SUPABASE_SERVICE_ROLE_KEY(design §3.3 / trade-off #3).Shipped via gauss on
mai/gauss/inventorcoder-team-admin— merged into main; commit https://mgit.msbls.de/m/paliad/commit/111c7c3. Live after next Dokploy deploy. (m/paliad#49 Add User slice still parked pending m's credential go-ahead.)