Skip to content

Commit 90c54d3

Browse files
committed
fix #915 MultiSelect#deselectAt() doesn't deselecting the item
1 parent 88aef41 commit 90c54d3

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

domino-ui/src/main/java/org/dominokit/domino/ui/forms/suggest/AbstractSelect.java

+20-5
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,12 @@ public Optional<O> findOptionByKey(String key) {
858858
.findFirst();
859859
}
860860

861+
private Optional<AbstractMenuItem<T>> findMenuItemByKey(String key) {
862+
return optionsMenu.getFlatMenuItems().stream()
863+
.filter(menuItem -> Objects.equals(key, menuItem.getKey()))
864+
.findFirst();
865+
}
866+
861867
/**
862868
* Searches for an option by its value within the select component.
863869
*
@@ -872,6 +878,12 @@ public Optional<O> findOptionByValue(T value) {
872878
.findFirst();
873879
}
874880

881+
private Optional<AbstractMenuItem<T>> findMenuItemByValue(T value) {
882+
return optionsMenu.getFlatMenuItems().stream()
883+
.filter(menuItem -> Objects.equals(value, menuItem.getValue()))
884+
.findFirst();
885+
}
886+
875887
/**
876888
* Searches for an option by its index within the select component.
877889
*
@@ -880,9 +892,12 @@ public Optional<O> findOptionByValue(T value) {
880892
* found.
881893
*/
882894
public Optional<O> findOptionByIndex(int index) {
895+
return findMenuItemByIndex(index).map(item -> OptionMeta.<T, E, O>get(item).get().getOption());
896+
}
897+
898+
private Optional<AbstractMenuItem<T>> findMenuItemByIndex(int index) {
883899
if (index < optionsMenu.getFlatMenuItems().size() && index >= 0) {
884-
AbstractMenuItem<T> menuItem = optionsMenu.getFlatMenuItems().get(index);
885-
return Optional.ofNullable(OptionMeta.<T, E, O>get(menuItem).get().getOption());
900+
return Optional.ofNullable(optionsMenu.getFlatMenuItems().get(index));
886901
}
887902
return Optional.empty();
888903
}
@@ -1001,7 +1016,7 @@ public C deselectAt(int index) {
10011016
* @return an instance of the concrete class.
10021017
*/
10031018
public C deselectAt(int index, boolean silent) {
1004-
findOptionByIndex(index).ifPresent(o -> onOptionDeselected(o, silent));
1019+
findMenuItemByIndex(index).ifPresent(item -> item.deselect(silent));
10051020
return (C) this;
10061021
}
10071022

@@ -1026,7 +1041,7 @@ public C deselectByKey(String key) {
10261041
* @return an instance of the concrete class.
10271042
*/
10281043
public C deselectByKey(String key, boolean silent) {
1029-
findOptionByKey(key).ifPresent(o -> onOptionDeselected(o, silent));
1044+
findMenuItemByKey(key).ifPresent(item -> item.deselect(silent));
10301045
return (C) this;
10311046
}
10321047

@@ -1050,7 +1065,7 @@ public C deselectByValue(T value) {
10501065
* @return an instance of the concrete class.
10511066
*/
10521067
public C deselectByValue(T value, boolean silent) {
1053-
findOptionByValue(value).ifPresent(o -> onOptionDeselected(o, silent));
1068+
findMenuItemByValue(value).ifPresent(item -> item.deselect(silent));
10541069
return (C) this;
10551070
}
10561071

0 commit comments

Comments
 (0)