Skip to content

Commit ed94ec5

Browse files
committed
fix #926 regression, select with many entries / Unable to scroll on touch devices
1 parent 6295b6a commit ed94ec5

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

domino-ui/src/main/java/org/dominokit/domino/ui/menu/AbstractMenuItem.java

+16-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static java.util.Objects.nonNull;
2020
import static org.dominokit.domino.ui.utils.Domino.*;
2121

22+
import elemental2.core.JsDate;
2223
import elemental2.dom.Element;
2324
import elemental2.dom.Event;
2425
import elemental2.dom.HTMLElement;
@@ -100,15 +101,28 @@ public AbstractMenuItem() {
100101
indicatorIcon = createIndicator(Icons.menu_right());
101102

102103
init(this);
104+
double[] startTime = new double[]{0};
103105

104106
this.addEventListener(
105107
EventType.touchstart.getName(),
106108
evt -> {
109+
startTime[0] = JsDate.now();
107110
focus();
108111
openSubMenu();
109112
});
110-
this.addEventListener(EventType.touchend.getName(), this::onSelected);
111-
this.addEventListener(EventType.click.getName(), this::onSelected);
113+
this.addEventListener(EventType.touchend.getName(), evt -> {
114+
evt.stopPropagation();
115+
double endTime = JsDate.now();
116+
double diff = endTime - startTime[0];
117+
if(diff < 200) {
118+
onSelected(evt);
119+
}
120+
});
121+
this.addEventListener(EventType.click.getName(), evt -> {
122+
evt.stopPropagation();
123+
evt.preventDefault();
124+
onSelected(evt);
125+
});
112126
this.addEventListener(EventType.mouseenter.getName(), evt -> openSubMenu());
113127
}
114128

0 commit comments

Comments
 (0)