UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines 10.5 kB
/* @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=`kendoKeydown`,x=`sort`,S=`remove`,C=`receive`,w=`>*`,T=-1;function E(t,n){try{return e.contains(t,n)||t==n}catch{return!1}}function D(e){return e.clone()}function O(e){return e.clone().removeAttr(`id`).css(`visibility`,`hidden`)}var k=r.extend({init:function(e,t){var n=this;r.fn.init.call(n,e,t),n.options.placeholder||(n.options.placeholder=O),n.options.hint||(n.options.hint=D),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)}r.fn.endInit.call(n)},events:[p,m,h,g,_,v,y,b],options:{name:`Sortable`,hint:null,placeholder:null,filter:w,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,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:x})}},_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 r=this,i=t.keyCode,a=e(t.target),s=a.next(),c=a.prev(),l=a.find(`:kendoFocusable`),u=!1,d;if(n.keyDownHandler(t,r)){if(r._preventNavigate=!1,r._lastFocusedSortableItem){if(i===o.LEFT||i===o.UP||i===o.RIGHT||i===o.DOWN)return;if(i===o.TAB){let e=t.shiftKey,n=r._lastFocusedSortableItem.find(`:kendoFocusable`),i=n.first(),o=n.last();if(!n.length)return;!e&&a.is(o)&&(i.focus(),u=!0),e&&a.is(i)&&(o.focus(),u=!0)}}if((i==o.RIGHT||i==o.DOWN)&&(t.ctrlKey?(r._preventNavigate=!0,r._swap(a,s,`after`),u=!0):a.is(f)&&!a.is(r._items().last())&&(d=r._navigate(`next`,a),u=d)),(i==o.LEFT||i==o.UP)&&(t.ctrlKey?(r._preventNavigate=!0,r._swap(a,c,`before`),u=!0):a.is(f)&&!a.is(r._items().first())&&(d=r._navigate(`prev`,a),u=d)),i==o.ENTER){if(a.is(r.options.disabled)||a.find(`input`).length===0||(r._lastFocusedSortableItem=a,!l.length))return;a.find(`:kendoFocusable`).attr(`tabindex`,0),a.removeClass(`k-focus`),a.attr(`tabindex`,-1),l.first().trigger(`focus`),u=!0}if(i==o.ESC){r._preventNavigate=!0;let e=r._lastFocusedSortableItem;if(e||=a.closest(f),!e.length)return;r.element.find(`:kendoFocusable`).attr(`tabindex`,-1),r._toggleTabIndex(e),e.trigger(`focus`),r._lastFocusedSortableItem&&delete r._lastFocusedSortableItem,u=!0}u&&(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:x,item:r,oldIndex:i,newIndex:a,draggableEvent:t},a>=0?c=this.trigger(g,l):(s=n.parents(o).getKendoSortable(),l.action=S,u=e.extend({},l,{action:C,oldIndex:T,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)==T?S:x,item:r,oldIndex:i,newIndex:this.indexOf(r),draggableEvent:t},this.trigger(_,l),s&&(u=e.extend({},l,{action:C,oldIndex:T,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 E(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(k)})(window.kendo.jQuery);var r=kendo;e.__meta__=n,e.default=r}); //# sourceMappingURL=kendo.sortable.min.js.map