@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 5.89 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.draganddrop.min","kendo.icons.min"],e):e()}((function(){var e,r,a,n,t,d,o,i;e=window.kendo.jQuery,r=window.kendo,a=r._outerWidth,n=r._outerHeight,t=r.getOffset,d=r.ui.Widget,o="change",i=d.extend({init:function(e,i){var g,l=this,s=r.guid()+"-reorderable";d.fn.init.call(l,e,i),e=l.element.addClass("k-reorderable"),i=l.options,l.draggable=g=i.draggable||new r.ui.Draggable(e,{group:s,autoScroll:!0,filter:i.filter,hint:i.hint}),l.options.dropFilter||(l.options.dropFilter=g.options.filter),l.reorderDropCue=l.options.reorderDropCue,e.find(i.dropFilter).kendoDropTarget({group:g.options.group,dragenter:function(e){var r=l._externalDraggable(e);if(l._draggable||r){r&&l._handleExternalDraggable(r);var d,o=this.element,g=!!l._isPartOfSortable(l._draggable)&&(!l._dropTargetAllowed(o)||l._isLastDraggable());if(l.toggleHintClass(e.draggable.hint,g),!g){var s={top:(d=t(o)).top,left:d.left},_="horizontal"===i.orientation;!i.smartPosition||i.inSameContainer&&!i.inSameContainer({source:o,target:l._draggable,sourceIndex:l._index(o),targetIndex:l._index(l._draggable)})?l._dropTarget=o:l._index(o)>l._index(l._draggable)&&i.smartPosition&&(s[_?"left":"top"]+=_?a(o):n(o)),l.reorderDropCue.css({height:n(o),top:s.top,left:s.left,zIndex:19e3}).appendTo(document.body),i.positionDropCue&&i.positionDropCue(l.reorderDropCue,o)}}},dragleave:function(e){l.toggleHintClass(e.draggable.hint,!0),l.reorderDropCue.remove(),l._dropTarget=null},drop:function(){if(l._dropTarget=null,l._draggable){var e=this.element,r=l._draggable,a=l._index(e),n="horizontal"===l.options.orientation?t(l.reorderDropCue).left>t(e).left:t(l.reorderDropCue).top>t(e).top;a=n?a+1:a,l._dropTargetAllowed(e)&&!l._isLastDraggable()&&l._index(r)!==a&&l.trigger(o,{element:l._draggable,target:e,oldIndex:l._index(r),newIndex:l._index(e),position:n?"after":"before"}),l.reorderDropCue&&l.reorderDropCue.remove()}}}),g.bind(["dragcancel","dragend","dragstart","drag"],{dragcancel:l._dragcancel.bind(l),dragend:l._dragend.bind(l),dragstart:l._dragstart.bind(l),drag:l._drag.bind(l)})},options:{name:"Reorderable",filter:"*",orientation:"horizontal",deniedIcon:"cancel",allowIcon:"plus",reorderDropCue:e('<div class="k-reorder-cue"></div></div>'),smartPosition:!0},events:[o],toggleHintClass:function(a,n){var t=this.options;(a=e(a)).find(".k-drag-status").length>0&&r.ui.icon(a.find(".k-drag-status").eq(0),{icon:n?t.deniedIcon:t.allowIcon})},_handleExternalDraggable:function(e){var r=this,a=r.options.dropFilter.trimStart();a&&">"==a[0]&&(a=a.substring(1)),r._dragcancelHandler=r._dragcancel.bind(r),r._dragendHandler=r._dragend.bind(r),r._dragstartHandler=r._dragstart.bind(r),r._dragHandler=r._drag.bind(r),r._draggable=e.currentTarget.closest(a),r._draggableInstance=e,r._elements=r.element.find(r.options.dropFilter),e.bind(["dragcancel","dragend","dragstart","drag"],{dragcancel:r._dragcancelHandler,dragend:r._dragendHandler,dragstart:r._dragstartHandler,drag:r._dragHandler})},_dragcancel:function(){var e=this;e._draggableInstance&&(e._dragcancelHandler||e._dragendHandler||e._dragstartHandler||e._dragHandler)&&e._draggableInstance.unbind({dragcancel:e._dragcancelHandler,dragend:e._dragendHandler,dragstart:e._dragstartHandler,drag:e._dragHandler}),e.reorderDropCue&&e.reorderDropCue.remove(),e._draggable=null,e._elements=null},_dragend:function(){var e=this;e._draggableInstance&&(e._dragcancelHandler||e._dragendHandler||e._dragstartHandler||e._dragHandler)&&e._draggableInstance.unbind({dragcancel:e._dragcancelHandler,dragend:e._dragendHandler,dragstart:e._dragstartHandler,drag:e._dragHandler}),e.reorderDropCue&&e.reorderDropCue.remove(),e._draggable=null,e._elements=null},_dragstart:function(r){var a=this,n=e(r.currentTarget),t=a.options.dropFilter.trimStart();t&&">"==t[0]&&(t=t.substring(1)),a._draggable=n.is(t)?n:n.closest(t),a._elements=a.element.find(a.options.dropFilter)},_drag:function(r){var d,o,i,g,l=this,s={},_=l.options.dropFilter.trimStart();if(_&&">"==_[0]&&(_=_.substring(1)),g=e(r.currentTarget).closest(_),!(!l._dropTarget||l.options.smartPosition&&r.sender.hint.find(".k-drag-status").is(".k-i-cancel,.k-svg-i-cancel"))){if(o=(d=l._index(l._dropTarget))>(o=l._index(g))?o+1:o,"horizontal"===l.options.orientation){var p=t(l._dropTarget).left,c=a(l._dropTarget);r.pageX>p+c/2?(s.left=p+c,d+=1):s.left=p}else{var u=t(l._dropTarget).top,b=n(l._dropTarget);r.pageY>u+b/2?(s.top=u+b,d+=1):s.top=u}l.reorderDropCue.css(s),l.options.positionDropCue&&l.options.positionDropCue(l.reorderDropCue,l._dropTarget),l._isPartOfSortable(g)&&(i=o===d||l.options.dragOverContainers&&!l.options.dragOverContainers(o,d),l.toggleHintClass(r.sender.hint,i))}},_isPartOfSortable:function(e){return this._elements.index(e)>=0},_externalDraggable:function(e){var r=this.options;return!this._draggable&&r.externalDraggable?r.externalDraggable(e):null},_isLastDraggable:function(){var e,r=this.options.inSameContainer,a=this._draggable[0],n=this._elements.get(),t=!1;if(!r)return!1;for(;!t&&n.length>0;)t=a!==(e=n.pop())&&r({source:a,target:e,sourceIndex:this._index(a),targetIndex:this._index(e)});return!t},_dropTargetAllowed:function(e){var r=this.options.inSameContainer,a=this.options.dragOverContainers,n=this._draggable;return n[0]!==e[0]&&(!r||!a||!!r({source:n,target:e,sourceIndex:this._index(n),targetIndex:this._index(e)})||a(this._index(n),this._index(e)))},_index:function(e){return this._elements.index(e)},destroy:function(){var r=this;d.fn.destroy.call(r),r.element.find(r.options.dropFilter).each((function(){var r=e(this);r.data("kendoDropTarget")&&r.data("kendoDropTarget").destroy()})),r.draggable&&(r.draggable.destroy(),r.draggable.element=r.draggable=null),r.reorderDropCue.remove(),r.elements=r.reorderDropCue=r._elements=r._draggable=null}}),r.ui.plugin(i)}));
//# sourceMappingURL=kendo.reorderable.min.js.map