Address Editor
What It Is For
Staff use the Address Editor to keep a person's mailing details together while distinguishing home, work, school, seasonal and custom uses. It presents an address collection as cards, with controls for the address value, its type and its mailing preference. A caller can also supply source information so a card identifies an organization address that the contact follows.
Create Contact and Edit Contact share this collection control through the form engine. That reuse gives their address cards the same interaction and lets the calling form retain responsibility for saving the contact. Our reading is that a collection component makes the relationship between an address and its type easier to inspect than separate unrelated fields.
Where It Is Used
Create Contact and Edit Contact place this component in their compiled forms through the Addresses adapter. In the default form, the collection sits on Overview. The adapter supplies configured address types, source callbacks, the lookup setting and whether to show geocode badges. This verified usage concerns contact address lists; the evidence here does not establish a reusable contract for an organization's address collection or a single address field elsewhere.
How It Behaves
Each stored address appears in a card showing its type, formatted lines and preferred-star state. Expanding an owned card places the type selector beside the address input. The address control supports lookup when available and manual fields when lookup is disabled or unavailable. With an empty collection, an expanded blank card is already present; entering a nonblank value commits it without closing it. The blank card itself does not request initial focus.
Add Address selects the next available unused type in the editor's fixed proposal order and requests focus for the new row. Seasonal cards offer month/day boundaries and a mailing preference for their season. Changing the selected month clamps an invalid day to that month's last day. The ordinary preferred star is disabled for seasonal rows.
A card with row source controls shows the organization's source marker and keeps the value closed to direct editing. Change Source and Make Independent Copy are available according to that source state. Remove remains enabled on this path. Only the older work-address mirror path disables Remove until unlinking. Where the caller enables geocode display, an eligible owned row shows a Geocoded badge, without coordinate values.
Its Contract
The calling form supplies the address list, a change callback and a lookup for card validation messages. Committed edits return a complete replacement list. The component makes no persistence request; saving and aggregate validation remain the caller's job. An empty row that is still blank is held locally rather than added to the supplied collection.
Optional inputs provide the configured types, row source callbacks, lookup availability preference, geocode display flag and older work-mirror information. Local state tracks expanded cards and the row that should receive focus. The source-control callbacks let the caller manage source changes without making the collection component responsible for fetching organization records.
States
An empty list has an invitation and one expanded blank card. Owned cards can be closed for reading or expanded for editing; a validation message opens an owned card and prevents its Done action from hiding the problem. The message appears beneath the card as an alert. Source-controlled cards show the linked-source presentation instead of editable value fields. Seasonal cards add their date boundaries and seasonal mailing choice to the open state.
Rules It Enforces
The contact-point capabilities own the rules for ordinary mailing preference, seasonal selection and organization sources. The card represents those concerns through its star, seasonal controls and source marker. Choosing an ordinary preferred address clears the other ordinary preferred flags; selecting Seasonal clears that flag on the changed row.
Source-controlled values are presented without a value editor, while Remove still changes the caller's draft list. The older work mirror requires unlinking before removal. It is not established that Product intends these paths to differ; the address-editor finding records that open boundary. The calling form and service remain responsible for deciding whether the resulting contact can be saved.
Accessibility
Edit, Collapse and Remove names identify the address type. The preferred-star button reports its pressed state and explains disabled actions through a tooltip. Decorative icons are hidden from assistive technology, while validation text uses an alert role. Escape collapses an eligible owned card and focuses the card; an open popup, a validation error or the blank first row prevents that collapse. Added rows request focus, but expanding an existing card does not automatically focus its input. These observations do not establish complete keyboard or screen-reader conformance.
Open Design Questions
This review does not establish a product decision to reuse the contact collection editor for organization addresses. It also leaves the intended handling of direct removal of a source-controlled row unresolved. The address-editor finding records the observed distinction between row source controls and the older work mirror, without treating either as Product approval.