vue-draggable
Version:
Vue drag and drop library without any dependency
37 lines (32 loc) • 1.01 kB
JavaScript
const createCustomEvent = (name, data) => {
return new CustomEvent(name, {
detail: data
});
};
export const dispatchCustomEvent = (name, data, element) => {
const customEvent = createCustomEvent(name, data);
element.dispatchEvent(customEvent);
};
export const dispatchReorderEvents = function (e) {
const oldItems = this.selections.droptarget.querySelectorAll(
this.defaultOptions.draggableSelector
);
const index = this.nextItemElement ?
Array.prototype.indexOf.call(
oldItems,
this.nextItemElement
) : oldItems.length;
const eventData = {
ids: this.selections.items
.map(item => item.dataset.id),
index,
nativeEvent: e,
...this.selections
};
if (this.selections.droptarget === this.selections.owner) {
dispatchCustomEvent('reordered', eventData, this.selections.droptarget);
return;
}
dispatchCustomEvent('added', eventData, this.selections.droptarget);
dispatchCustomEvent('removed', eventData, this.selections.owner);
};