From 56ce91c6160a252ddcd952bca6eb7037120ebf59 Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Wed, 26 Sep 2018 15:16:40 +0300 Subject: Update ComboBox internal state on new item added (#11094) --- server/src/main/java/com/vaadin/ui/ComboBox.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'server/src') diff --git a/server/src/main/java/com/vaadin/ui/ComboBox.java b/server/src/main/java/com/vaadin/ui/ComboBox.java index 0a5a36c856..2d613a90a8 100644 --- a/server/src/main/java/com/vaadin/ui/ComboBox.java +++ b/server/src/main/java/com/vaadin/ui/ComboBox.java @@ -186,20 +186,23 @@ public class ComboBox extends AbstractSingleSelect @Override public void createNewItem(String itemValue) { // New option entered - boolean added = false; + boolean clientSideHandling = false; if (itemValue != null && !itemValue.isEmpty()) { if (getNewItemProvider() != null) { - Optional item = getNewItemProvider().apply(itemValue); - added = item.isPresent(); + getNewItemProvider().apply(itemValue).ifPresent(value -> { + // Update state for the newly selected value + setSelectedItem(value, true); + getDataCommunicator().reset(); + }); } else if (getNewItemHandler() != null) { getNewItemHandler().accept(itemValue); // Up to the user to tell if no item was added. - added = true; + clientSideHandling = true; } } - if (!added) { - // New item was not handled. + if (!clientSideHandling) { + // New item was maybe added with NewItemHandler getRpcProxy(ComboBoxClientRpc.class).newItemNotAdded(itemValue); } } -- cgit v1.2.3