/** * @fileoverview ``: an input restricted to a predefined list. * @description Light-DOM custom element on the shared typeahead engine * (`base/typeahead.ts`). A relative of select: the panel filters as you type, * but free text can never submit. The form value lives in an authored hidden * input (`data-slot="combobox-value"`), synced whenever the selection changes. * * The visible input carries a **display value, not the filter**. Committing * writes the option label into it and clears the query, so reopening shows * the full list with the committed row checked, matching `.ui-select`. * Opening selects that label so the first keystroke replaces it, and focus * alone never opens the panel (a click, the chevron, an arrow key or typing * does). On blur, stray text reverts to the committed label and cleared text * clears the selection. * * `data-variant="multiselect"` selects a set instead: committing toggles a row * and keeps the panel open, and every selected value renders as a removable * tag stamped inside the control. The tag markup is HTML, not script: author * a `