-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Description
Problem:
In short: The delay option has no effect on Android devices.
I want to set a delay before a drag event starts so that you can scroll the list without accidentally starting to drag an item. The delay option is the proper solution for this and it works fine on iOS12. On the Android devices I tested, the delay is ignored and the drag event starts immediately, which prevents the user from scrolling the list.
I could reproduce the issue with Sortable.js/1.9.0 as well as 1.10.0-rc3
Devices/browsers tested:
- Samsung Galaxy A3 SM-A310F with Android 7.0 / Chrome 75.0.3770.101 and Samsung Internet 9.2.10.15
- Samsung Galays S10e SM-G970F with Android P / Mozilla/5.0 (Linux; Android 9; SM-G970F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.101 Mobile Safari/537.36
The issue was originally reported in nextcloud/tasks#457.
JSBin/JSFiddle demonstrating the problem:
See this example: https://codepen.io/raimund-schluessler/pen/EBRxdz
On iOS the drag only starts after to hold an item for 500 ms, which enables scrolling. On Android, this does not work and dragging starts immediately.
Used Sortable config
new Sortable(example1, {
animation: 150,
ghostClass: 'blue-background-class',
delay: 500,
delayOnTouchOnly: true,
touchStartThreshold: 3
});