Skip to content

Select ​

Composable select runtime: Root owns value/open; Trigger/Value/Content/Item split rendering duties.

Runtime ​

State contracts come from @varo-ui/headless; rendered parts come from @varo-ui/h5/primitives or @varo-ui/weapp/primitives.

Demo ​

Package@varo-ui/headless

Basic usage ​

Use the Demo panel above to switch H5 and Weapp primitive preview/code; each runtime renders only the current entry.

Groups, Readonly, And Disabled ​

Use SelectGroup/SelectLabel for grouping. In readonly, the component can still open, close, and browse options, while SelectItem and setValue cannot change value. disabled also blocks opening. Placement and motion stay in UI wrappers.

Parts ​

PartPurpose
SelectRootvalue/open state
SelectTriggerOpen entry
SelectValueCurrent value display
SelectContentOptions container
SelectGroupGroup
SelectLabelGroup label
SelectItemOne option

Props ​

SelectRoot ​

PropTypeDefaultDescription
valueunknownundefinedControlled value
defaultValueunknownundefinedUncontrolled initial value
openboolean | undefinedundefinedControlled open state
defaultOpenbooleanfalseUncontrolled initial open state
optionsarrayundefinedOptions data
placeholderstringundefinedPlaceholder
disabledbooleanfalseDisabled
readonlybooleanfalseRead only
multiplebooleanfalseMultiple semantics

SelectItem ​

PropTypeDescription
optionobjectOption object

Events ​

EventPayloadDescription
update:valueunknownValue sync
valueChangeunknownValue change
update:openbooleanOpen sync
openChangebooleanOpen change

Accessibility ​

  • Trigger opens in regular and readonly states; disabled blocks opening.
  • Item performs selection; readonly/disabled must not change value.
  • The role owner exposes aria-readonly without reporting readonly as disabled.

Platform notes

  • H5 can preview open/select live.
  • Mini-program placement and portal strategy stay in the wrapper layer. :::