The combobox wrapper element.
OptionalcreateLabel?: stringWhen set, appends a "+ Create…" footer entry.
OptionaldisplayValue?: (entry: { group?: string; key: string; label: string }) => stringOptional formatter for what gets written into input.value on selection. Defaults to entry.label.
OptionaldropdownSelector?: stringOverride for the dropdown <ul> selector.
Live option source. An entry's optional group field renders a
non-interactive group-header <li> whenever the group changes between
consecutive (post-filter) entries.
OptionalfilterFn?: (Optional override for the filter predicate. Default matches entry.label (case-insensitive) only.
OptionalhiddenInputName?: stringName of a sibling hidden input to keep in sync with the selected key.
OptionalhideOnEmpty?: booleanWhen true, hide the popover if the filtered entry list is empty (and no create footer is configured).
OptionalinputSelector?: stringOverride for the text-input selector.
OptionalonCreate?: (filter: string) => Promise<{ key: any; label: any } | null>Invoked when Create is clicked.
OptionalonSelect?: (entry: { group?: string; key: string; label: string }) => voidOptional callback invoked with the full selected entry (in addition to the
built-in picker.dataset.selectedKey/hidden-input sync), so callers can
run their own document-update or filter-select side effects.
Optionalplaceholder?: string | (() => string)Optional placeholder text (or a callback returning it), set on attach.
Generic combobox controller used by the action attribute pickers.
Expected markup inside the picker wrapper (selectors configurable via
inputSelector/dropdownSelector): <input class="resource-picker-input" ... />...
The wrapper element's
data-selected-keyis set to the chosen value. Callers (e.g._onAddCost) read this attribute instead of relying on a<select>.This is the canonical shared combobox factory for BMS — both the flat variant (e.g. the rune-cost picker) and the grouped variant (e.g. the modification-field pickers, keyed off an entry's optional
groupfield) are built from this single implementation. See.claude/workflows/combobox-pattern.mdfor usage guidance.