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:
The issue was originally reported in https://github.com/nextcloud/tasks/issues/457.
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.
new Sortable(example1, {
animation: 150,
ghostClass: 'blue-background-class',
delay: 500,
delayOnTouchOnly: true,
touchStartThreshold: 3
});
Interesting. I can already tell it's because it is not being detected as a touch event, since disabling delayOnTouchOnly makes it work. I will investigate this.
Should be fixed in commit a09bddb7ef0af5f51a2f8aeb0a5ee557004acfb4.
Thanks for the fix @owen-m1 馃憤 Is there a timeline for when this would make it into a build (1.10.0-rc3 perhaps)?
@barryels 1.10.0 will be ready soon I hope
Most helpful comment
Should be fixed in commit a09bddb7ef0af5f51a2f8aeb0a5ee557004acfb4.