Skip to content
Anjunar/ DOCS

ComboBox

Typed selection with stable identity and reactive state.
Selection
A ComboBox should explain the choice, not merely hide options.
The closed value, rich rows, identity function, and footer action stay together in one contextual DSL block.
items
A ListProperty drives the TableView inside the dropdown.
converter
Text representation stays independent from the domain model.
identityBy
Replacement objects preserve the logical selection.
Team member selector
A compact value renderer opens a virtualized table with richer rows.
Choose the project owner
No team member selected.
Renderer
Rows and values can differ
Dropdown entries can be detailed while the closed value remains compact.
Identity
Selection survives replacement
identityBy reconnects refreshed objects to the selected domain entry.
Lifecycle
Overlay and table dispose together
Closing the dropdown unmounts its TableView and every renderer listener.
ComboBox DSL
All selection decisions remain inside compose(cursor).
scala
comboBox[Member]("team-selector") { placeholder = "Choose member..." items = members converter = _.name identityBy = _.id itemRenderer { (member, selected) => memberRow(member, selected) } valueRenderer(member => compactMember(member)) footerRenderer { teamSettingsLink() } }