GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
BSD 3-Clause "New" or "Revised" License
22.36k stars 4.05k forks source link

[BUG] Absolute dragmode does not work on touch devices #2419

Closed MartinPutz closed 2 years ago

MartinPutz commented 4 years ago

Absolute dragmode (with grapesjs touch plugin) does not work on touch devices. GrapesJS version:0.15.8

Expected behavior: The user should be able to move components using drag and drop on touch screens as well.

Current behavior: The user can drag and drop a block just fine. If the user wants to move the dropped component by dragging, it looks like the drag is started(style changed) but the component does not move.

It can be reproduced in the demo as well: https://jsfiddle.net/v9kecdpz/

Steps to reproduce:

  1. Open the demo (included jsfiddle with grapesjs touch plugin)
  2. Drag a block into the canvas(or use an existing one)
  3. Try to move the component by dragging

Tested on: Android Tablet Ipad 2019, IOS 13

Chrome browser was used for testing.

It is most likely not a device/OS specific issue. I am suspecting missing touch events.

pradeeshattlee commented 4 years ago

Hey @MartinPutz The asset manager doesn't pop up on the iPad, desktop on touch devices- chrome, firefox, and safari.

And the editor canvas scroll doesn't work on the iPhone.

What am I missing?

Thanks in advance.

MartinPutz commented 4 years ago

Hey @pradeeshattlee

This issue is not really related to the asset manager, but moving the components around, once they are rendered.

I rarely use the asset manager, but as I recall it was working just fine on iPad as well. If I were you I would open a new issue with all the details that might be useful.

wfcheng commented 3 years ago

This may or may not be related. I noticed with grapejs v0.16.34 on OSX Safari, the event argument inside onStart() function in src/commands/view/ComponentDrag.js is undefined when I drag a block onto the canvas, which can be reproduced with the same fiddle cited above https://jsfiddle.net/v9kecdpz/, again on Safari.

I had to patch it locally as below instead (not the prettiest but it seems to work):

from const { x, y } = Canvas.getMouseRelativeCanvas(event); to const { x, y } = Canvas.getMouseRelativeCanvas(event || opts.event);

artf commented 2 years ago

I close this issue as I'm planning to solve all ones related to absolute positioning here: https://github.com/artf/grapesjs/issues/3770