Phone List Editor
What It Is For
Lets staff maintain typed phone numbers, choose a preferred number and inspect organization-supplied values in a contact draft. The typed phone list and form adapter combine source markers with owned-number editing. The blank-row and contact-point-choice helpers are shared with Address Editor; this manifest identifies dependencies rather than claiming exclusive ownership of shared support files.
Where It Is Used
Used by the Phone Numbers form adapter in Create Contact and Edit Contact. Its source controls apply to contact rows; organization number editing uses a separate implementation. Create Contact and Edit Contact use the Phone Numbers adapter. Address Editor shares the RowLinkControls interface declared with the phone list, while both collections use common blank-row, type-choice and preferred-star support.
How It Behaves
The component proposes unused types in its fixed order. Standard and configured custom choices are filtered through the contact-point choice helpers, with held inactive custom types retained on their own row and types used elsewhere disabled. Choosing a preferred row clears the other flags; choosing it again clears the explicit preference, leaving the automatic preference summary. Number blur applies the shared national-format formatter. Linked values cannot be edited directly. A disconnected source retains visible last-known text, whereas an ended or missing source displays No value.
Its Contract
The form owns the collection, configuration and source decisions. Local state only holds the focus request and the empty provisional row. Source callbacks manage linking or copying outside the list editor. Current row source controls permit removal, but the older work mirror disables removal until unlinking. The preferred star remains available on source-controlled committed rows because preference belongs to the contact’s row. The editor displays supplied validation and does not itself commit a server mutation.
States
Empty: A provisional typed input appears without Add or Remove and with a disabled preference star. Owned: Number and type are editable, with unused types available for additions. Linked: Value is read-only and type is disabled; current source controls leave Remove available. Unresolved: Ended or missing source states show No value; a disconnected row shows its retained number. Older work mirror: Remove is disabled until the mirror is unlinked. No free type: Add Phone is disabled because no unused offered type remains.
Accessibility
Number inputs use telephone mode and type-specific accessible names. Link and Remove identify the row type; decorative icons are hidden and errors are alerts. Added rows request focus. The type-select and source-marker primitives supply their interaction semantics; complete keyboard and screen-reader verification is absent. 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.