@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 10.4 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.draganddrop.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.draganddrop.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Sortable={}),e.kendo._globals.Draganddrop))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let n={id:`sortable`,name:`Sortable`,category:`framework`,depends:[`draganddrop`]};(function(e,t){var n=window.kendo,r=n.ui.Widget,i=n._outerWidth,a=n._outerHeight,o=n.keys,s=`.kendoSortable`,c=`keydown`+s,l=`focus`+s,u=`blur`+s,d=`ref-sortable-item`,f=`[`+d+`]`,p=`start`,m=`beforeMove`,h=`move`,g=`end`,_=`change`,v=`navigate`,y=`cancel`,b=`sort`,x=`remove`,S=`receive`,C=`>*`,w=-1;function T(t,n){try{return e.contains(t,n)||t==n}catch{return!1}}function E(e){return e.clone()}function D(e){return e.clone().removeAttr(`id`).css(`visibility`,`hidden`)}var O=r.extend({init:function(e,t){var n=this;r.fn.init.call(n,e,t),n.options.placeholder||(n.options.placeholder=D),n.options.hint||(n.options.hint=E),n.draggable=n._createDraggable(),n._assignRefAttribute();let i=n._items();if(n.options.navigatable){i.filter(n.options.disabled).attr(`aria-disabled`,!0),i.not(n.options.disabled).attr(`aria-disabled`,!1),n.element.attr(`role`)||n.element.attr(`role`,`list`),i.each(function(e,t){t.getAttribute(`role`)||t.setAttribute(`role`,`listitem`),t.setAttribute(`aria-label`,`${t.textContent.trim()}, ${t.getAttribute(`aria-disabled`)===`true`?`disabled`:`enabled`}`)}),n._attatchNavigatableHandlers();let e=i.first();n._toggleTabIndex(e),i.find(`:kendoFocusable`).attr(`tabindex`,-1)}},events:[p,m,h,g,_,v,y],options:{name:`Sortable`,hint:null,placeholder:null,filter:C,navigatable:!1,holdToDrag:!1,disabled:null,container:null,connectWith:null,handler:null,cursorOffset:null,axis:null,ignore:null,autoScroll:!1,cursor:`auto`,moveOnDragEnter:!1,allowTouchActions:!1},_attatchNavigatableHandlers:function(){let e=this;e._keydownHandler=e._keydown.bind(e),e._blurHandler=e._blur.bind(e),e._focusHandler=e._focus.bind(e),e.element.on(c,f,e._keydownHandler).on(u,f,e._blurHandler).on(l,f,e._focusHandler)},_focus:function(t){let n=this;e(t.target).is(f)&&(n._toggleFocus(e(t.target)),n._preventNavigate||n.trigger(v,{item:e(t.target)}))},_toggleTabIndex:function(e){let t=this._items();t.length&&(t.attr(`tabindex`,-1),e.attr(`tabindex`,0))},_toggleFocus:function(e){let t=this._items();t.length&&(t.removeClass(`k-focus`),e.addClass(`k-focus`))},_swap:function(e,t,n){let r=this;if(!e.is(r.options.disabled)&&t.length){t[n](e);let i=n===`after`?r.indexOf(e)-1:r.indexOf(e)+1,a=r.indexOf(e);r._toggleTabIndex(e),e.trigger(`focus`),this.trigger(_,{item:e,oldIndex:i,newIndex:a,action:b})}},_navigate:function(e,t){let n=this,r=t;return r=e===`next`?r.next(f):r.prev(f),r.length?(n._toggleTabIndex(r),r.trigger(`focus`),r):!1},_keydown:function(t){let n=this,r=t.keyCode,i=e(t.target),a=i.next(),s=i.prev(),c=i.find(`:kendoFocusable`),l=!1,u;if(n._preventNavigate=!1,n._lastFocusedSortableItem){if(r===o.LEFT||r===o.UP||r===o.RIGHT||r===o.DOWN)return;if(r===o.TAB){let e=t.shiftKey,r=n._lastFocusedSortableItem.find(`:kendoFocusable`),a=r.first(),o=r.last();if(!r.length)return;!e&&i.is(o)&&(a.focus(),l=!0),e&&i.is(a)&&(o.focus(),l=!0)}}if((r==o.RIGHT||r==o.DOWN)&&(t.ctrlKey?(n._preventNavigate=!0,n._swap(i,a,`after`),l=!0):i.is(f)&&!i.is(n._items().last())&&(u=n._navigate(`next`,i),l=u)),(r==o.LEFT||r==o.UP)&&(t.ctrlKey?(n._preventNavigate=!0,n._swap(i,s,`before`),l=!0):i.is(f)&&!i.is(n._items().first())&&(u=n._navigate(`prev`,i),l=u)),r==o.ENTER){if(i.is(n.options.disabled)||i.find(`input`).length===0||(n._lastFocusedSortableItem=i,!c.length))return;i.find(`:kendoFocusable`).attr(`tabindex`,0),i.removeClass(`k-focus`),i.attr(`tabindex`,-1),c.first().trigger(`focus`),l=!0}if(r==o.ESC){n._preventNavigate=!0;let e=n._lastFocusedSortableItem;if(e||=i.closest(f),!e.length)return;n.element.find(`:kendoFocusable`).attr(`tabindex`,-1),n._toggleTabIndex(e),e.trigger(`focus`),n._lastFocusedSortableItem&&delete n._lastFocusedSortableItem,l=!0}l&&(t.preventDefault(),t.stopPropagation())},_blur:function(t){e(t.target).removeClass(`k-focus`)},_detatchNavigatableHandlers:function(){let e=this;e.options.navigatable&&(e.element.off(s),e._keydownHandler=null,e._blurHandler=null,e._focusHandler=null)},_assignRefAttribute:function(){this._items().attr(d,``)},destroy:function(){this._detatchNavigatableHandlers(),this.draggable.destroy(),r.fn.destroy.call(this)},_createDraggable:function(){var t=this,r=t.element,i=t.options;return new n.ui.Draggable(r,{filter:i.filter,hint:n.isFunction(i.hint)?i.hint:e(i.hint),holdToDrag:i.holdToDrag,container:i.container?e(i.container):null,cursorOffset:i.cursorOffset,axis:i.axis,ignore:i.ignore,autoScroll:i.autoScroll,dragstart:t._dragstart.bind(t),dragcancel:t._dragcancel.bind(t),drag:t._drag.bind(t),dragend:t._dragend.bind(t),allowTouchActions:i.allowTouchActions})},_dragstart:function(t){var r=this.draggedElement=t.currentTarget,i=this.options.disabled,a=this.options.handler,o=this.options.placeholder,s=this.placeholder=n.isFunction(o)?e(o.call(this,r)):e(o);i&&r.is(i)||a&&!e(t.initialTarget).is(a)||this.trigger(p,{item:r,draggableEvent:t})?t.preventDefault():(r.css(`display`,`none`),r.before(s),this._setCursor())},_dragcancel:function(){this._cancel(),this.trigger(y,{item:this.draggedElement}),this._resetCursor()},_drag:function(t){var n=this.draggedElement,r=this._findTarget(t),i,a={left:t.x.location,top:t.y.location},o,s={x:t.x.delta,y:t.y.delta},c,l,u,d=this.options.axis,f=this.options.moveOnDragEnter,p={item:n,list:this,draggableEvent:t};if(d===`x`||d===`y`){this._movementByAxis(d,a,s[d],p);return}if(r){if(i=this._getElementCenter(r.element),o={left:Math.round(a.left-i.left),top:Math.round(a.top-i.top)},e.extend(p,{target:r.element}),r.appendToBottom){this._movePlaceholder(r,null,p);return}if(r.appendAfterHidden&&this._movePlaceholder(r,`next`,p),this._isFloating(r.element)?s.x<0&&f||!f&&o.left<0?c=`prev`:(s.x>0&&f||!f&&o.left>0)&&(c=`next`):s.y<0&&f||!f&&o.top<0?c=`prev`:(s.y>0&&f||!f&&o.top>0)&&(c=`next`),c){for(u=c===`prev`?jQuery.fn.prev:jQuery.fn.next,l=u.call(r.element);l.length&&!l.is(`:visible`);)l=u.call(l);l[0]!=this.placeholder[0]&&this._movePlaceholder(r,c,p)}}},_dragend:function(t){var n=this.placeholder,r=this.draggedElement,i=this.indexOf(r),a=this.indexOf(n),o=this.options.connectWith,s,c,l,u;if(this._resetCursor(),l={action:b,item:r,oldIndex:i,newIndex:a,draggableEvent:t},a>=0?c=this.trigger(g,l):(s=n.parents(o).getKendoSortable(),l.action=x,u=e.extend({},l,{action:S,oldIndex:w,newIndex:s.indexOf(n)}),c=!(!this.trigger(g,l)&&!s.trigger(g,u))),c||a===i){this._cancel();return}n.replaceWith(r),r.show(),this.draggable.dropped=!0,l={action:this.indexOf(r)==w?x:b,item:r,oldIndex:i,newIndex:this.indexOf(r),draggableEvent:t},this.trigger(_,l),s&&(u=e.extend({},l,{action:S,oldIndex:w,newIndex:s.indexOf(r)}),s.trigger(_,u))},_findTarget:function(t){var n=this._findElementUnderCursor(t),r,i=this.options.connectWith,a;if(e.contains(this.element[0],n))return r=this.items(),a=r.filter(n)[0]||r.has(n)[0],a?{element:e(a),sortable:this}:null;if(this.element[0]==n&&this._isEmpty())return{element:this.element,sortable:this,appendToBottom:!0};if(this.element[0]==n&&this._isLastHidden())return a=this.items().eq(0),{element:a,sortable:this,appendAfterHidden:!0};if(i)return this._searchConnectedTargets(n,t)},_findElementUnderCursor:function(e){var t=n.elementUnderCursor(e),r=e.sender;return T(r.hint[0],t)&&(r.hint.hide(),t=n.elementUnderCursor(e),t||=n.elementUnderCursor(e),r.hint.show()),t},_searchConnectedTargets:function(t,n){for(var r=e(this.options.connectWith),i,a,o,s=0;s<r.length;s++)if(i=r.eq(s).getKendoSortable(),e.contains(r[s],t)){if(i)return a=i.items(),o=a.filter(t)[0]||a.has(t)[0],o?(i.placeholder=this.placeholder,{element:e(o),sortable:i}):null}else if(r[s]==t){if(i&&i._isEmpty())return{element:r.eq(s),sortable:i,appendToBottom:!0};if(this._isCursorAfterLast(i,n))return o=i.items().last(),{element:o,sortable:i}}},_isCursorAfterLast:function(e,t){var r=e.items().last(),o={left:t.x.location,top:t.y.location},s=n.getOffset(r),c;return s.top+=a(r),s.left+=i(r),c=this._isFloating(r)?s.left-o.left:s.top-o.top,c<0},_movementByAxis:function(t,n,r,i){var a=t===`x`?n.left:n.top,o=r<0?this.placeholder.prev():this.placeholder.next(),s=this.items(),c;o.length&&!o.is(`:visible`)&&(o=r<0?o.prev():o.next()),s.filter(o).length&&(e.extend(i,{target:o}),c=this._getElementCenter(o),c&&=t===`x`?c.left:c.top,o.length&&r<0&&a-c<0?this._movePlaceholder({element:o,sortable:this},`prev`,i):o.length&&r>0&&a-c>0&&this._movePlaceholder({element:o,sortable:this},`next`,i))},_movePlaceholder:function(e,t,n){var r=this.placeholder;e.sortable.trigger(m,n)||(t?t===`prev`?e.element.before(r):t===`next`&&e.element.after(r):e.element.append(r),e.sortable.trigger(h,n))},_setCursor:function(){var t=this.options.cursor,n;t&&t!==`auto`&&(n=e(document.body),this._originalCursorType=n.css(`cursor`),n.css({cursor:t}))},_resetCursor:function(){this._originalCursorType&&=(e(document.body).css(`cursor`,this._originalCursorType),null)},_getElementCenter:function(e){var t=e.length?n.getOffset(e):null;return t&&(t.top+=a(e)/2,t.left+=i(e)/2),t},_isFloating:function(e){var t=/left|right/.test(e.css(`float`)),n=/inline|table-cell/.test(e.css(`display`)),r=/flex/.test(e.parent().css(`display`))&&(/row|row-reverse/.test(e.parent().css(`flex-direction`))||!e.parent().css(`flex-direction`));return t||n||r},_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,r=this.draggedElement;return n&&e[0]==n[0]?t.not(r).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 this.items().length===1&&this.items().is(`:hidden`)}});n.ui.plugin(O)})(window.kendo.jQuery);var r=kendo;e.__meta__=n,e.default=r});
//# sourceMappingURL=kendo.sortable.min.js.map