kendo-ui-core
Version:
3 lines (2 loc) • 6.99 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("kendo.draganddrop.js")):"function"==typeof define&&define.amd?define(["kendo.draganddrop.min"],t):((e="undefined"!=typeof globalThis?globalThis:e||self).kendosortable=e.kendosortable||{},e.kendosortable.js=t())}(this,(function(){return function(e,t){var n=window.kendo,i=n.ui.Widget,r=n._outerWidth,o=n._outerHeight,s="start",l="beforeMove",a="move",d="end",h="change",c="cancel",u="sort",g="remove",f="receive";function p(e){return e.clone()}function m(e){return e.clone().removeAttr("id").css("visibility","hidden")}var _=i.extend({init:function(e,t){var n=this;i.fn.init.call(n,e,t),n.options.placeholder||(n.options.placeholder=m),n.options.hint||(n.options.hint=p),n.draggable=n._createDraggable()},events:[s,l,a,d,h,c],options:{name:"Sortable",hint:null,placeholder:null,filter:">*",holdToDrag:!1,disabled:null,container:null,connectWith:null,handler:null,cursorOffset:null,axis:null,ignore:null,autoScroll:!1,cursor:"auto",moveOnDragEnter:!1},destroy:function(){this.draggable.destroy(),i.fn.destroy.call(this)},_createDraggable:function(){var t=this,i=t.element,r=t.options;return new n.ui.Draggable(i,{filter:r.filter,hint:n.isFunction(r.hint)?r.hint:e(r.hint),holdToDrag:r.holdToDrag,container:r.container?e(r.container):null,cursorOffset:r.cursorOffset,axis:r.axis,ignore:r.ignore,autoScroll:r.autoScroll,dragstart:t._dragstart.bind(t),dragcancel:t._dragcancel.bind(t),drag:t._drag.bind(t),dragend:t._dragend.bind(t)})},_dragstart:function(t){var i=this.draggedElement=t.currentTarget,r=this.options.disabled,o=this.options.handler,l=this.options.placeholder,a=this.placeholder=n.isFunction(l)?e(l.call(this,i)):e(l);r&&i.is(r)||o&&!e(t.initialTarget).is(o)||this.trigger(s,{item:i,draggableEvent:t})?t.preventDefault():(i.css("display","none"),i.before(a),this._setCursor())},_dragcancel:function(){this._cancel(),this.trigger(c,{item:this.draggedElement}),this._resetCursor()},_drag:function(t){var n,i,r,o,s,l=this.draggedElement,a=this._findTarget(t),d={left:t.x.location,top:t.y.location},h={x:t.x.delta,y:t.y.delta},c=this.options.axis,u=this.options.moveOnDragEnter,g={item:l,list:this,draggableEvent:t};if("x"!==c&&"y"!==c){if(a){if(n=this._getElementCenter(a.element),i={left:Math.round(d.left-n.left),top:Math.round(d.top-n.top)},e.extend(g,{target:a.element}),a.appendToBottom)return void this._movePlaceholder(a,null,g);if(a.appendAfterHidden&&this._movePlaceholder(a,"next",g),this._isFloating(a.element)?h.x<0&&u||!u&&i.left<0?r="prev":(h.x>0&&u||!u&&i.left>0)&&(r="next"):h.y<0&&u||!u&&i.top<0?r="prev":(h.y>0&&u||!u&&i.top>0)&&(r="next"),r){for(o=(s="prev"===r?jQuery.fn.prev:jQuery.fn.next).call(a.element);o.length&&!o.is(":visible");)o=s.call(o);o[0]!=this.placeholder[0]&&this._movePlaceholder(a,r,g)}}}else this._movementByAxis(c,d,h[c],g)},_dragend:function(t){var n,i,r,o,s=this.placeholder,l=this.draggedElement,a=this.indexOf(l),c=this.indexOf(s),p=this.options.connectWith;this._resetCursor(),r={action:u,item:l,oldIndex:a,newIndex:c,draggableEvent:t},c>=0?i=this.trigger(d,r):(n=s.parents(p).getKendoSortable(),r.action=g,o=e.extend({},r,{action:f,oldIndex:-1,newIndex:n.indexOf(s)}),i=!(!this.trigger(d,r)&&!n.trigger(d,o))),i||c===a?this._cancel():(s.replaceWith(l),l.show(),this.draggable.dropped=!0,r={action:-1!=this.indexOf(l)?u:g,item:l,oldIndex:a,newIndex:this.indexOf(l),draggableEvent:t},this.trigger(h,r),n&&(o=e.extend({},r,{action:f,oldIndex:-1,newIndex:n.indexOf(l)}),n.trigger(h,o)))},_findTarget:function(t){var n,i,r=this._findElementUnderCursor(t),o=this.options.connectWith;return e.contains(this.element[0],r)?(i=(n=this.items()).filter(r)[0]||n.has(r)[0])?{element:e(i),sortable:this}:null:this.element[0]==r&&this._isEmpty()?{element:this.element,sortable:this,appendToBottom:!0}:this.element[0]==r&&this._isLastHidden()?{element:i=this.items().eq(0),sortable:this,appendAfterHidden:!0}:o?this._searchConnectedTargets(r,t):void 0},_findElementUnderCursor:function(t){var i=n.elementUnderCursor(t),r=t.sender;return function(t,n){try{return e.contains(t,n)||t==n}catch(e){return!1}}(r.hint[0],i)&&(r.hint.hide(),(i=n.elementUnderCursor(t))||(i=n.elementUnderCursor(t)),r.hint.show()),i},_searchConnectedTargets:function(t,n){for(var i,r,o,s=e(this.options.connectWith),l=0;l<s.length;l++)if(i=s.eq(l).getKendoSortable(),e.contains(s[l],t)){if(i)return(o=(r=i.items()).filter(t)[0]||r.has(t)[0])?(i.placeholder=this.placeholder,{element:e(o),sortable:i}):null}else if(s[l]==t){if(i&&i._isEmpty())return{element:s.eq(l),sortable:i,appendToBottom:!0};if(this._isCursorAfterLast(i,n))return{element:o=i.items().last(),sortable:i}}},_isCursorAfterLast:function(e,t){var i,s=e.items().last(),l=t.x.location,a=t.y.location;return(i=n.getOffset(s)).top+=o(s),i.left+=r(s),(this._isFloating(s)?i.left-l:i.top-a)<0},_movementByAxis:function(t,n,i,r){var o,s="x"===t?n.left:n.top,l=i<0?this.placeholder.prev():this.placeholder.next(),a=this.items();l.length&&!l.is(":visible")&&(l=i<0?l.prev():l.next()),a.filter(l).length&&(e.extend(r,{target:l}),(o=this._getElementCenter(l))&&(o="x"===t?o.left:o.top),l.length&&i<0&&s-o<0?this._movePlaceholder({element:l,sortable:this},"prev",r):l.length&&i>0&&s-o>0&&this._movePlaceholder({element:l,sortable:this},"next",r))},_movePlaceholder:function(e,t,n){var i=this.placeholder;e.sortable.trigger(l,n)||(t?"prev"===t?e.element.before(i):"next"===t&&e.element.after(i):e.element.append(i),e.sortable.trigger(a,n))},_setCursor:function(){var t,n=this.options.cursor;n&&"auto"!==n&&(t=e(document.body),this._originalCursorType=t.css("cursor"),t.css({cursor:n}),this._cursorStylesheet||(this._cursorStylesheet=e("<style>* { cursor: "+n+" !important; }</style>")),this._cursorStylesheet.appendTo(t))},_resetCursor:function(){this._originalCursorType&&(e(document.body).css("cursor",this._originalCursorType),this._originalCursorType=null,this._cursorStylesheet.remove())},_getElementCenter:function(e){var t=e.length?n.getOffset(e):null;return t&&(t.top+=o(e)/2,t.left+=r(e)/2),t},_isFloating:function(e){var t=/left|right/.test(e.css("float")),n=/inline|table-cell/.test(e.css("display")),i=/flex/.test(e.parent().css("display"))&&(/row|row-reverse/.test(e.parent().css("flex-direction"))||!e.parent().css("flex-direction"));return t||n||i},_cancel:function(){this.draggedElement&&(this.draggedElement.show(),this.placeholder.remove(),this.draggable.dropped=!0)},_items:function(){var e=this.options.filter;return e?this.element.find(e):this.element.children()},indexOf:function(e){var t=this._items(),n=this.placeholder,i=this.draggedElement;return n&&e[0]==n[0]?t.not(i).index(e):t.not(n).index(e)},items:function(){var e=this.placeholder,t=this._items();return e&&(t=t.not(e)),t},_isEmpty:function(){return!this.items().length},_isLastHidden:function(){return 1===this.items().length&&this.items().is(":hidden")}});n.ui.plugin(_)}(window.kendo.jQuery),kendo}));
//# sourceMappingURL=kendo.sortable.min.js.map