Editable combobox (text input + role="listbox" popup) implementing the APG
pattern: aria-expanded, aria-activedescendant, Up/Down/PageUp/PageDown
navigation that skips disabled options (Home and End stay with the text
caret, as the pattern requires), Alt+Down to expand without moving, type-
to-filter, Enter to commit, Escape/outside-click to dismiss. Options are
read live and given ids as they appear, so lists fetched after enhancement
work. Selection emits a cancelable hl:select followed by hl:change,
expanding or collapsing the listbox emits hl:open-change, and both the
committed value and the open state are controllable through the returned
API. Before this runs, the stylesheet reveals the listbox on :focus-within
so the options are at least reachable; the root is marked data-hl-ready
once JS owns visibility. Markup can set data-hl-filter,
data-hl-auto-highlight, and data-hl-default-value on the root.
Editable combobox (text input +
role="listbox"popup) implementing the APG pattern:aria-expanded,aria-activedescendant, Up/Down/PageUp/PageDown navigation that skips disabled options (Home and End stay with the text caret, as the pattern requires), Alt+Down to expand without moving, type- to-filter, Enter to commit, Escape/outside-click to dismiss. Options are read live and given ids as they appear, so lists fetched after enhancement work. Selection emits a cancelablehl:selectfollowed byhl:change, expanding or collapsing the listbox emitshl:open-change, and both the committed value and the open state are controllable through the returned API. Before this runs, the stylesheet reveals the listbox on:focus-withinso the options are at least reachable; the root is markeddata-hl-readyonce JS owns visibility. Markup can setdata-hl-filter,data-hl-auto-highlight, anddata-hl-default-valueon the root.