mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
* Reset todo task order * Disabled sorting on todo due * Revert to task order * Fixed task sorting sync with server
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import Sortable from 'sortablejs';
|
|
import uuid from 'uuid';
|
|
|
|
let emit = (vNode, eventName, data) => {
|
|
let handlers = vNode.data && vNode.data.on ||
|
|
vNode.componentOptions && vNode.componentOptions.listeners;
|
|
|
|
if (handlers && handlers[eventName]) {
|
|
handlers[eventName].fns(data);
|
|
}
|
|
};
|
|
|
|
let sortableReferences = {};
|
|
|
|
function createSortable (el, vNode) {
|
|
let sortableRef = Sortable.create(el, {
|
|
onSort: (evt) => {
|
|
emit(vNode, 'onsort', {
|
|
oldIndex: evt.oldIndex,
|
|
newIndex: evt.newIndex,
|
|
});
|
|
},
|
|
});
|
|
|
|
let uniqueId = uuid();
|
|
sortableReferences[uniqueId] = sortableRef;
|
|
el.dataset.sortableId = uniqueId;
|
|
}
|
|
|
|
export default {
|
|
bind (el, binding, vNode) {
|
|
createSortable(el, vNode);
|
|
},
|
|
unbind (el) {
|
|
if (sortableReferences[el.dataset.sortableId]) sortableReferences[el.dataset.sortableId].destroy();
|
|
},
|
|
update (el, vNode) {
|
|
if (sortableReferences[el.dataset.sortableId] && !vNode.value) {
|
|
sortableReferences[el.dataset.sortableId].destroy();
|
|
delete sortableReferences[el.dataset.sortableId];
|
|
return;
|
|
}
|
|
if (!sortableReferences[el.dataset.sortableId]) createSortable(el, vNode);
|
|
},
|
|
};
|