UNPKG

@jsxtools/aui

Version:

A baseline UI as Mixins, Custom Elements, React Components, etc.

1 lines 921 B
import{InternalsMixin}from"./internals.js";var DragMixin=(Element)=>class Draggable extends InternalsMixin(Element){static observedAttributes=["draggable",...super.observedAttributes||[]];get draggable(){return!0}#handleDragStart(event){Object(event.dataTransfer).effectAllowed="move",this.internals.states.add("active-drag")}#handleDragEnd(){this.internals.states.delete("active-drag")}connectedCallback(){super.draggable=!0,super.addEventListener("dragstart",this.#handleDragStart),super.addEventListener("dragend",this.#handleDragEnd),super.connectedCallback?.()}disconnectedCallback(){super.removeEventListener("dragstart",this.#handleDragStart),super.removeEventListener("dragend",this.#handleDragEnd),super.disconnectedCallback?.()}attributeChangedCallback(name,oldValue,newValue){if(name==="draggable"&&newValue===null)super.draggable=!0;super.attributeChangedCallback?.(name,oldValue,newValue)}};export{DragMixin}