Multiselect Combo Box
A multiselection component where items are displayed in a drop-down list.
MultiselectComboBox
A multi select combo box component for Vaadin Flow.
Integration of of the multiselect-combo-box web component.
Live Demo ↗
Install
Add the multiselect-combo-box-flow dependency
to your pom.xml
:
<dependency>
<groupId>org.vaadin.gatanaso</groupId>
<artifactId>multiselect-combo-box-flow</artifactId>
<version>4.0.0-rc2</version>
</dependency>
Add the vaadin-addons
repository:
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>
Basic Usage
Create a MultiselectComboBox
and add items
MultiselectComboBox<String> multiselectComboBox = new MultiselectComboBox();
multiselectComboBox.setLabel("Select items");
multiselectComboBox.setItems("Item 1", "Item 2", "Item 3", "Item 4");
Add a value change listener (invoked when the selected items/value is changed):
multiselectComboBox.addValueChangeListener(event -> {
// handle value change
});
Get the selected items/value:
// set of selected values, or an empty set if none selected
Set<String> value = multiselectComboBox.getValue();
MultiselectComboBox
also implements the MultiSelect interface,
which makes it easy to listen for selection changes:
multiselectComboBox.addSelectionListener(event -> {
event.getAddedSelection(); // get added items
event.getRemovedSelection() // get removed items
});
Object items
The MultiselectComboBox
supports object items. Given the following User
class:
class User {
private String name;
private String username;
private String email;
public User(String name, String username, String email) {
this.username = username;
this.email = email;
}
// getters and setters intentionally omitted for brevity
@Override
public String toString() {
return name;
}
}
Create a MultiselectComboBox
of User
s:
MultiselectComboBox<User> multiselectComboBox = new MultiselectComboBox();
multiselectComboBox.setLabel("Select users");
List<User> users = Arrays.asList(
new User("Leanne Graham","leanne","leanne@demo.dev"),
new User("Ervin Howell","ervin","ervin@demo.dev"),
new User("Samantha Doe","samantha","samantha@demo.dev")
);
// by default uses `User.toString()` to generate item labels
multiselectComboBox.setItems(users);
The MultiselectComboBox
uses the toString()
method to generate the item labels by default.
This can be overridden by setting an item label generator:
// use the user email as an item label
multiselectComboBox.setItemLabelGenerator(User::getEmail)
Version information
- 4.x.x - the version for Vaadin 22+
- 3.x.x - the version for Vaadin 16 and Vaadin 15
- 2.x.x - the version for Vaadin 14 (LTS)
- 1.x.x. - the version for Vaadin 13 and Vaadin 12
Branch information
master
the latest version for Vaadin 22+V14
the version for Vaadin 14 (LTS)
Web Component
The <multiselect-combo-box>
web component is available on npm,
the Vaadin Directory and GitHub.
Sample code
// create and add items MultiselectComboBox<String> multiselectComboBox = new MultiselectComboBox(); multiselectComboBox.setLabel("Select items"); multiselectComboBox.setItems("Item 1", "Item 2", "Item 3", "Item 4"); // add a value change listener multiselectComboBox.addValueChangeListener(event -> { // handle value change... }); // get the value (set of selected items, or an empty set if none selected Set<String> value = multiselectComboBox.getValue();
// given the following User class class User { private String name; private String username; private String email; public User(String name, String username, String email) { this.username = username; this.email = email; } // getters and setters intentionally omitted for brevity @Override public String toString() { return name; } } // create a MultiselectComboBox of Users MultiselectComboBox<User> multiselectComboBox = new MultiselectComboBox(); multiselectComboBox.setLabel("Select users"); List<User> users = Arrays.asList( new User("Leanne Graham","leanne","leanne@demo.dev"), new User("Ervin Howell","ervin","ervin@demo.dev"), new User("Samantha Doe","samantha","samantha@demo.dev") ); // by default uses `User.toString()` to generate item labels multiselectComboBox.setItems(users);
// given the following User class class User { private String name; private String username; private String email; public User(String name, String username, String email) { this.username = username; this.email = email; } // getters and setters intentionally omitted for brevity @Override public String toString() { return name; } } // create a MultiselectComboBox of Users MultiselectComboBox<User> multiselectComboBox = new MultiselectComboBox(); multiselectComboBox.setLabel("Select users"); List<User> users = Arrays.asList( new User("Leanne Graham","leanne","leanne@demo.dev"), new User("Ervin Howell","ervin","ervin@demo.dev"), new User("Samantha Doe","samantha","samantha@demo.dev") ); multiselectComboBox.setItems(users); // use the user email as an item label multiselectComboBox.setItemLabelGenerator(User::getEmail)
Links
Compatibility
Was this helpful? Need more help?
Leave a comment or a question below. You can also join
the chat on Discord or
ask questions on StackOverflow.
Version
release for the Vaadin 12/Vaadin 13 compatible version of this component
To better align with the new defaults for the vaadin components, the clear-button-visible
attribute is now also available to the multiselect-combo-box
. With this update the component no longer displays the clear icon by default, but instead it needs to be specified explicitly. This change breaks the default behavior in favor of aligning better with the current default behavior of the vaadin-text-field
and the vaadin-combo-box
components.
⚠️ Breaking Change: The clear button is now hidden by default. To make it visible, set the clearButtonVisible
property.
ℹ️ Note: if the value of the multiselect-combo-box
is empty, the clear button is always hidden.
- Released
- 2019-11-03
- Maturity
- STABLE
- License
- Apache License 2.0
Compatibility
- Framework
- Vaadin 12
- Vaadin 13
- Vaadin 14 in 2.0.0
- Vaadin 14+ in 3.0.0
- Vaadin 20+ in 4.0.0-rc2
- Browser
- Firefox
- Opera
- Safari
- Google Chrome
- Internet Explorer
- Microsoft Edge