Affiliation Editor Drawer
What It Is For
Lets staff prepare one affiliation’s organization, type, dates, roles and information links before applying it to the contact draft. A controlled sheet edits one affiliation and dated role collection. A small exported wording helper distinguishes an unchosen type, an unchosen organization, a future start and a type with no defaults. The drawer itself neither loads records nor persists the contact.
Where It Is Used
The form-engine affiliation adapter opens the drawer in Create Contact and Edit Contact. Organization-side Add Person uses a different dialog and is outside this drawer’s contract. Create Contact and Edit Contact invoke the drawer from their shared affiliation form adapter. The caller supplies the CRM organization picker slot. Organization 360’s Add Person dialog does not use this drawer.
How It Behaves
Add mode offers organization selection through the supplied slot; Edit mode keeps that organization fixed. Fields update the controlled draft immediately. Each role can be removed, and a selected role offers Add Period, inserting another independently identified row for that role immediately after it. Pending catalog reads disable Add Role rather than declaring that no roles exist. The host supplies validation messages and primary eligibility; the drawer disables Apply only for errors. Primary, linked-information consequences and default-link choices remain visible explanations rather than hidden save effects.
Its Contract
The caller owns open state, the working draft, catalog choices and all validation. Apply requests a change to the contact draft; saving the contact remains a separate screen action. The organization slot receives a nullable identifier and reports both identifier and name. Preview selections are independent callbacks rather than fields inside the affiliation draft. Warning tone does not block Apply, while an error on either an ordinary field or a role row does. Cancel asks the caller to close, without specifying how it discards its working draft.
States
Add: Organization selection and Link When Added preview are available. Edit: Organization is text; an optional End and Add Another action appears. Roles loading: Loading text appears, Add Role is disabled, and unresolved held roles display a dash. Roles ready: Configured choices, held role periods and optional restriction note appear. Blocked apply: Any supplied error in control or role messages disables Apply; warnings do not. Default source missing or occupied: Missing and skipped preview rows are unchecked and disabled with explanatory badges.
Accessibility
The sheet has a title and description; inputs have associated labels, Notes has an accessible name, and remove-role buttons identify their row numbers. Control errors use alert semantics and warnings use status semantics. Some control descriptions are explicitly linked. Focus trapping and complete error-announcement behavior have not been verified. Accessibility verification is an open obligation recorded in the component accessibility finding.
Open Design Questions
The recorded interaction is observed implementation, with proposed design intent. Component criteria need complete executable bindings and browser accessibility review. Screen owners must wire the registered components into their designs; this slice records usage without changing those screen contracts.