Skip to content

Commit 38dab16

Browse files
elPeirettijavier-godoy
authored andcommitted
feat!: add constructor for initializing with a locale collection
BREAKING CHANGE: removes item population from the empty constructor
1 parent fbf04d9 commit 38dab16

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

src/main/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBox.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import com.vaadin.flow.component.html.Span;
2727
import com.vaadin.flow.data.renderer.LitRenderer;
2828
import java.util.Arrays;
29+
import java.util.Collection;
30+
import java.util.List;
2931
import java.util.Locale;
3032
import java.util.Optional;
3133

@@ -80,15 +82,22 @@ public enum DisplayMode {
8082
private Locale customDisplayLocale = Locale.getDefault();
8183

8284
/**
83-
* Creates a new instance of LocaleComboBox with all the installed locales.
85+
* Creates a new instance of LocaleComboBox.
8486
*/
8587
public LocaleComboBox() {
8688
setItemLabelGenerator(item -> item.getDisplayName(getLocaleForDisplay()));
8789
setRenderer(getLocaleRenderer());
8890
addValueChangeListener(this::onValueChange);
89-
setItems(
90-
Arrays.stream(Locale.getAvailableLocales()).filter(loc -> loc.getCountry().length() == 2)
91-
.sorted((l1, l2) -> l1.getDisplayName().compareTo(l2.getDisplayName())).toList());
91+
}
92+
93+
/**
94+
* Creates a new instance of LocaleComboBox with the desired locales
95+
*
96+
* @param locales the {@link Collection} of locales to include in the combobox
97+
*/
98+
public LocaleComboBox(Collection<Locale> items) {
99+
this();
100+
setItems(items);
92101
}
93102

94103
/**

src/test/java/com/flowingcode/vaadin/addons/localecombobox/LocaleComboBoxDemo.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
3030
import com.vaadin.flow.router.PageTitle;
3131
import com.vaadin.flow.router.Route;
32+
import java.util.Arrays;
33+
import java.util.List;
3234
import java.util.Locale;
3335

3436
@DemoSource
@@ -39,21 +41,27 @@ public class LocaleComboBoxDemo extends Div {
3941

4042
public LocaleComboBoxDemo() {
4143

42-
LocaleComboBox defaultDisplayLocale = new LocaleComboBox();
44+
List<Locale> localeList =
45+
Arrays.stream(Locale.getAvailableLocales()).filter(loc -> !loc.getDisplayName().isBlank())
46+
.sorted((l1, l2) -> l1.getDisplayName().compareTo(l2.getDisplayName())).toList();
47+
48+
LocaleComboBox defaultDisplayLocale = new LocaleComboBox(localeList);
4349
LocaleComboBox koreanLocaleCombo = new LocaleComboBox();
44-
LocaleComboBox selectedLocaleCombo = new LocaleComboBox();
50+
LocaleComboBox selectedLocaleCombo = new LocaleComboBox(localeList);
4551

4652
defaultDisplayLocale.setValue(Locale.ITALY);
47-
53+
54+
koreanLocaleCombo.setItems(localeList);
4855
koreanLocaleCombo.setDisplayLocale(Locale.KOREA);
4956
koreanLocaleCombo.setDisplayMode(LocaleComboBox.DisplayMode.CUSTOM);
5057
koreanLocaleCombo.setValue(Locale.ITALY);
51-
58+
5259
selectedLocaleCombo.setDisplayMode(LocaleComboBox.DisplayMode.SELECTED);
5360
selectedLocaleCombo.setValue(Locale.ITALY);
54-
61+
5562
// #if vaadin eq 0
56-
add(createHorizontalContainer("Default display mode (uses default locale):", defaultDisplayLocale),
63+
add(createHorizontalContainer("Default display mode (uses default locale):",
64+
defaultDisplayLocale),
5765
createHorizontalContainer("Display locales with Korean locale:", koreanLocaleCombo),
5866
createHorizontalContainer("Display locales with selected locale:", selectedLocaleCombo));
5967
// #endif

0 commit comments

Comments
 (0)