Koala logo Design

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 OnPostSelectX via a tiny inline form
  • Submit button is inside the form per CLAUDE.md tray-form rules
  • Tray redirect handling per the RedirectOrTrayClose extension

Replaces

  • Old SetQuotePartner + SetQuoteReferrer pages (deleted)
  • Two separate activity entries (QuotePartnerSet, QuoteReferrerSet) collapse into one QuoteAssignmentChanged