mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
* start updating colors for tasks controls * finish updating controls colors * change hoevr behavior * change transition duration * update color with transition * refactor menu wip * wip * upgrade vue deps * fix warnings * fix menu * misc fixes * more fixes * fix badge * fix margins in menu * wip tooltips * tooltips * fix checklist colors * add badges * fix quick add input * add transition to task controls too * add batch add * fix task filtering * finish tasks badges * fix menu * upgrade deps * fix shop items using all the same image * fix animation * disable client tests until we remove phantomjs * revert changes to tasks colors * fix opacity in task modal inputs * remove client unit tests from travis * wip task dropdown * fix z-index for task footer/header * fixes and add files * fixes * bigger clickable area * more space to open task dropdown * droddown position * fix menu position * make sure other dropdowns get closed correctly * fixes * start to fix z-index * draggable = false for task dropdown * fix for dropdown position * implement move to top / bottom * fix push to bottom * typo * fix drag and drop * use standard code * wider click area for dropdown * unify badge look * fix padding * misc fixes * more fixes * make dropdown scrollable * misc fixes * fix padding for notes * use existing code instead of new props
47 lines
1.2 KiB
JavaScript
47 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, {
|
|
filter: '.task-dropdown', // do not make the tasks dropdown draggable or it won't work
|
|
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);
|
|
},
|
|
};
|