Skip to content

Commit 6900674

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

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

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

+21-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,33 @@ 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(
114+
EventType.touchend.getName(),
115+
evt -> {
116+
evt.stopPropagation();
117+
double endTime = JsDate.now();
118+
double diff = endTime - startTime[0];
119+
if (diff < 200) {
120+
evt.preventDefault();
121+
onSelected(evt);
122+
}
123+
});
124+
this.addEventListener(
125+
EventType.click.getName(),
126+
evt -> {
127+
evt.stopPropagation();
128+
evt.preventDefault();
129+
onSelected(evt);
130+
});
112131
this.addEventListener(EventType.mouseenter.getName(), evt -> openSubMenu());
113132
}
114133

0 commit comments

Comments
 (0)