Edit assignment tray
Combined cascading-dropdown tray for editing a quote's partner, branch,
and referrer in a single atomic operation. Replaces the
separate Set partner / Set referrer trays. The cascade is server-driven —
selecting a partner reloads the branch list; selecting a branch reloads the
referrer list — so referrers always reflect who actually has access to the
chosen branch (using the WithAccessToBranch helper).
When to use
Anywhere multiple cascading lookups need to be edited together and saved
atomically with one activity log entry. The conveyancing-area
EditQuoteAssignment tray is the reference implementation.
Pattern
The page model exposes one cascading OnPostSelectX handler per
dropdown that reloads the dependent lists, plus a single OnPost
that re-validates and saves atomically inside a database transaction.
Activity logging emits one combined entry (QuoteAssignmentChanged)
with the changeDetail summarising every field that changed.
- Three Alpine custom dropdowns (Partner, Branch, optional Referrer with "(no referrer)" sentinel)
- Each dropdown option POSTs to
OnPostSelectXvia a tiny inline form - Submit button is inside the form per CLAUDE.md tray-form rules
- Tray redirect handling per the
RedirectOrTrayCloseextension
Replaces
- Old
SetQuotePartner+SetQuoteReferrerpages (deleted) - Two separate activity entries (
QuotePartnerSet,QuoteReferrerSet) collapse into oneQuoteAssignmentChanged