Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to drag and drop into iFrame ? #189

Open
Wikiki opened this issue Mar 25, 2018 · 7 comments
Open

How to drag and drop into iFrame ? #189

Wikiki opened this issue Mar 25, 2018 · 7 comments
Labels
feature-request requesting new functionality to be added

Comments

@Wikiki
Copy link

Wikiki commented Mar 25, 2018

Hi,

I'm trying to create a "builder tool" using this library but I'm facing an issue:

  • When I try to drag and element from a div into an iFrame inside an other div a get the following behavior: the drag element only move into the first div and not over the whole document. So when I try to go over the iFrame my first div scroll.

How can I manage this to be able to make my iFrame droppable and receiving the dragged elements ?

regards

@tsov
Copy link
Member

tsov commented Mar 29, 2018

Hey @Wikiki , thanks for bringing this up, as it's definitely something we want to have support for!

I could imagine the API to look something like this:

const sortable = new Sortable(insideCurrentFrameContainers);

// waits for iframe to finish loading
iframeElement.addEventListener('load', () => {
  // assumes same origin and finds containers within the iframe
  const iframeContainer = iframeElement.contentDocument.querySelector('.IframeContainer');
  // adds iframe container
  sortable.addContainer(iframeContainer);
  // tells draggable to add listeners to the iframes window too
  sortable.setOptions({hosts: [window, iframeContainer.contentWindow]})
});

Requirement

  • iframes are on the same origin

Missing API

  • setOptions to change options after initialization (not blocking though)
  • hosts option to declare different hosts, e.g. shadow DOM, iframe windows, etc

I'll add it to draggables roadmap, because this could be a common use-case 👍

Let me know what you think of the proposed API

@tsov
Copy link
Member

tsov commented Mar 29, 2018

Related issue: #153

@tsov tsov added the feature-request requesting new functionality to be added label Mar 29, 2018
@kachurun
Copy link

kachurun commented Mar 31, 2018

@tsov This is the most important feauture for me. Described API looks very cool. I'm looking forward to the implementation. Thank you!

@tsov
Copy link
Member

tsov commented Apr 5, 2018

Quick update: #202

Got a super dirty & quick version of it ready, but it proves that it's doable. The API as originally proposed has changed though:

new Draggable(containers: HTMLElement[], options: DraggableOptions, hosts: DocumentOrShadowRoot[])

draggable.addHost(host: DocumentOrShadowRoot);
draggable.removeHost(host: DocumentOrShadowRoot);

hosts default would be [document], but can be changed via addHost/removeHost, if not set on instantiation.

The PR that is open at the moment only works for the MouseSensor and Draggable/Sortable, but we will support all Sensors and Plugins.

@Wikiki
Copy link
Author

Wikiki commented May 4, 2018

@tsov, thanks for your answer. I'm looking forward for the implementation.

@aloksharma1
Copy link

hello was this ever implemented, i require the same for similar uses.

thanks

@gaojianzhuang
Copy link

Any update for this issue? Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request requesting new functionality to be added
Projects
None yet
Development

No branches or pull requests

5 participants