Open ralcar opened 6 years ago
Am i right to think that its the Shadow DOM that stops it from working?
Unfortunately yes, but supporting Shadow DOM is a big goal for us and currently being worked on 👍 Expect it to be one of the next features we release
VERY happy to hear that! The library looks awsome, was really sad when i realized that it didnt work. In fact almost no drag library works for ShadowDOM, everything is either built on jQuery and has loads of dependencies, or its all for React, so very happy to hear that us WebComponent people are getting some love finally 😄
Please work in this! 😄 I follow every commit right now like a true stalker 😄
duplicate of https://github.com/Shopify/draggable/issues/153
I was trying to do the same but it did not work with shadow DOM. I hope the support for shadow DOM will be ready soon
@tsov Can i ask if this is worked on at all or if i should try to find other solution?
@ralcar I am not sure what the status of this is and I have not heard from @tsov about it so I think you will need to find another solution. Sorry 😞
Any update about this feature?
+1
Hello, hope you are all doing well. I just wanted to check in with you and see how the issue is going. I know there might be other demanding tasks, so I appreciate your work and dedication.
As of today, Web Components are widely supported by all major browsers and Lit is one of the multiple tools that facilitate their development and documentation. So I think this feature can be of interest to an increasingly amount of people.
I tried my self to integrate Draggable into a simple Lit starter project. Installed with NPM, imported inside a Lit component, created a new instance with new Sortable(...)
and attached some event listeners.
My code for reference:
import { LitElement, html } from 'lit';
import Sortable from '@shopify/draggable/build/esm/Sortable/Sortable.mjs';
export class MyElement extends LitElement {
constructor() {
super();
this._sortableInstance = null;
}
firstUpdated() {
this._sortableInstance = new Sortable(this.shadowRoot.querySelectorAll('ul'), { draggable: 'li' })
.on('drag:start', () => console.log('drag:start'))
.on('drag:move', () => console.log('drag:move'))
.on('drag:stop', () => console.log('drag:stop'));
console.log(this._sortableInstance); // <--- See below screen capture to see the output
}
render() {
return html`
<ul>
<li>Line 1</li>
<li>Line 2</li>
<li>Line 3</li>
</ul>
`;
}
}
window.customElements.define('my-element', MyElement);
It works but the event handlers don't fire. It is because of shadow DOM as the OP said?
The same code but in a simple HTML + Vanilla JavaScript file works.
I'm not very familiar with the technical details, but I'm curious to hear about the progress and challenges. I want to understand what you're doing and how it works. Is there anything I can do to help?
Thanks!
For support questions, please use stackoverflow. This repository's issues are reserved for feature requests and bug reports.
1. Apply either the
bug
orfeature-request
labelCant find the label sidebar..
2. Describe the
bug
orfeature
Trying to make this project work with Polymer 3.0 and the LitElement (lit-html). Cant reference via npm since its not in esmodules (please add!), but using the CDN script tag. I setup the Draggable most default example in the _firstRendered() (tried other places also), but the items wont become draggable. Here is my code:
tried different combos for the constructor of Draggable, passing it which classnames to be draggable etc. Am i right to think that its the Shadow DOM that stops it from working? Since this does not yield a result: document.querySelector('.drag')?
3. If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
4. Please tell us about your environment: