angular-ui-sortable
Version:
This directive allows you to jQueryUI Sortable.
61 lines (50 loc) • 1.27 kB
JavaScript
;(function($, undefined) {
function findCenter(elem) {
var offset,
document = $(elem.ownerDocument);
elem = $(elem);
offset = elem.offset();
return {
x: offset.left + elem.outerWidth() / 2 - document.scrollLeft(),
y: offset.top + elem.outerHeight() / 2 - document.scrollTop()
};
}
$.extend($.simulate.prototype, {
simulateDragAndRevert: function() {
var i = 0,
target = this.target,
options = this.options,
center = findCenter(target),
x = Math.floor(center.x),
y = Math.floor(center.y),
dx = options.dx || 0,
dy = options.dy || 0,
moves = options.moves || 3,
coord = {
clientX: x,
clientY: y
};
this.simulateEvent(target, "mousedown", coord);
for (; i < moves; i++) {
x += dx / moves;
y += dy / moves;
coord = {
clientX: Math.round(x),
clientY: Math.round(y)
};
this.simulateEvent(document, "mousemove", coord);
}
for (i = 0; i < moves; i++) {
x -= dx / moves;
y -= dy / moves;
coord = {
clientX: Math.round(x),
clientY: Math.round(y)
};
this.simulateEvent(document, "mousemove", coord);
}
this.simulateEvent(target, "mouseup", coord);
this.simulateEvent(target, "click", coord);
}
});
})(jQuery);