atlassian / pragmatic-drag-and-drop

Fast drag and drop for any experience on any tech stack
https://atlassian.design/components/pragmatic-drag-and-drop
Other
7.45k stars 133 forks source link

Accomodate iOS specific multi drag pattern #26

Open nmn opened 1 month ago

nmn commented 1 month ago

iOS lets you drag multiple elements at once, the library doesn’t handle that correctly. Only the first element is actually moved after dropping.

Here’s a video that shows the problem.

https://github.com/atlassian/pragmatic-drag-and-drop/assets/3582514/8f74c86e-9da7-4890-a5ed-8c52838de3c8

Not shown: cards already being dragged can be added multiple times to the stack. Any card being dragged should be made inert.

alexreardon commented 1 month ago

We have an upcoming multi-drag pattern, which will enable multi drag on all platforms. This built in behaviour on iOS is super interesting! Thankfully I think we can accommodate this in our example(s), and we'll need to add some documentation about it. It's a shame (from what I understand) that it's only iOS that does this.

We could look into making a way to try to disable the iOS feature, and rely on our cross platform multi drag solution too 🤔

nmn commented 1 month ago

We could look into making a way to try to disable the iOS feature

FWIW, enabling the iOS feature is preferable in my opinion, but I understand if it is challenging to make work consistently.

A simple fix to disable multi-drag would be remove the draggable attribute globally when a single element is being dragged.

ispal commented 2 weeks ago

We have an upcoming multi-drag pattern, which will enable multi drag on all platforms. This built in behaviour on iOS is super interesting! Thankfully I think we can accommodate this in our example(s), and we'll need to add some documentation about it. It's a shame (from what I understand) that it's only iOS that does this.

We could look into making a way to try to disable the iOS feature, and rely on our cross platform multi drag solution too 🤔

Any timeframe for the multi-drag? I always wanted to use react-beautify-dnd, but it supported only React. Now this library could help me solve my issues with multi-drag support. Keep up the good work!