UNPKG

20.4 kBJavaScriptView Raw
1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ng2-dnd",["exports","@angular/core","@angular/forms"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ng2-dnd"]={},e.ng.core,e.ng.forms)}(this,(function(e,t,r){"use strict";
2/*! *****************************************************************************
3 Copyright (c) Microsoft Corporation.
4
5 Permission to use, copy, modify, and/or distribute this software for any
6 purpose with or without fee is hereby granted.
7
8 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9 REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10 AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11 INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12 LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13 OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14 PERFORMANCE OF THIS SOFTWARE.
15 ***************************************************************************** */var o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function a(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function n(e,t,r,o){var a,n=arguments.length,i=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,r):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,o);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(n<3?a(i):n>3?a(t,r,i):a(t,r))||i);return n>3&&i&&Object.defineProperty(t,r,i),i}function i(e){return"string"==typeof e}function l(e){return null!=e}var s=function(e){this.name=e};s.COPY=new s("copy"),s.LINK=new s("link"),s.MOVE=new s("move"),s.NONE=new s("none");var p=function(e,t,r){if(void 0===t&&(t=0),void 0===r&&(r=0),this.imageElement=e,this.x_offset=t,this.y_offset=r,i(this.imageElement)){var o=this.imageElement;this.imageElement=new HTMLImageElement,this.imageElement.src=o}},c=function(){this.onDragStartClass="dnd-drag-start",this.onDragEnterClass="dnd-drag-enter",this.onDragOverClass="dnd-drag-over",this.onSortableDragClass="dnd-sortable-drag",this.dragEffect=s.MOVE,this.dropEffect=s.MOVE,this.dragCursor="move",this.defaultCursor="pointer"},d=function(){};function g(){return new e.DragDropService}function u(t){return new e.DragDropSortableService(t)}e.DragDropService=function(){this.allowedDropZones=[]},e.DragDropService=n([t.Injectable()],e.DragDropService),e.DragDropSortableService=function(){function e(e){this._config=e}return Object.defineProperty(e.prototype,"elem",{get:function(){return this._elem},enumerable:!0,configurable:!0}),e.prototype.markSortable=function(e){l(this._elem)&&this._elem.classList.remove(this._config.onSortableDragClass),l(e)&&(this._elem=e,this._elem.classList.add(this._config.onSortableDragClass))},e}(),e.DragDropSortableService=n([t.Injectable()],e.DragDropSortableService),e.AbstractComponent=function(){function e(e,t,r,o){var a=this;this._dragDropService=t,this._config=r,this._cdr=o,this._dragEnabled=!1,this.dropEnabled=!1,this.dropZones=[],this.cloneItem=!1,this._defaultCursor=r.defaultCursor,this._elem=e.nativeElement,this._elem.style.cursor=this._defaultCursor,this._elem.ondragenter=function(e){a._onDragEnter(e)},this._elem.ondragover=function(e){return a._onDragOver(e),null!=e.dataTransfer&&(e.dataTransfer.dropEffect=a._config.dropEffect.name),!1},this._elem.ondragleave=function(e){a._onDragLeave(e)},this._elem.ondrop=function(e){a._onDrop(e)},this._elem.onmousedown=function(e){a._target=e.target},this._elem.ondragstart=function(e){if(!a._dragHandle||a._dragHandle.contains(a._target)){if(a._onDragStart(e),null!=e.dataTransfer){if(e.dataTransfer.setData("text",""),e.dataTransfer.effectAllowed=a.effectAllowed||a._config.dragEffect.name,l(a.dragImage))if(i(a.dragImage))e.dataTransfer.setDragImage(function(e){var t=new HTMLImageElement;return t.src=e,t}(a.dragImage));else if("function"==typeof a.dragImage)e.dataTransfer.setDragImage((0,a.dragImage)());else{var t=a.dragImage;e.dataTransfer.setDragImage(t.imageElement,t.x_offset,t.y_offset)}else if(l(a._config.dragImage)){var r=a._config.dragImage;e.dataTransfer.setDragImage(r.imageElement,r.x_offset,r.y_offset)}else a.cloneItem&&(a._dragHelper=a._elem.cloneNode(!0),a._dragHelper.classList.add("dnd-drag-item"),a._dragHelper.style.position="absolute",a._dragHelper.style.top="0px",a._dragHelper.style.left="-1000px",a._elem.parentElement.appendChild(a._dragHelper),e.dataTransfer.setDragImage(a._dragHelper,e.offsetX,e.offsetY));var o=a._dragHandle?a._dragHandle:a._elem;a._dragEnabled?o.style.cursor=a.effectCursor?a.effectCursor:a._config.dragCursor:o.style.cursor=a._defaultCursor}}else e.preventDefault()},this._elem.ondragend=function(e){a._elem.parentElement&&a._dragHelper&&a._elem.parentElement.removeChild(a._dragHelper),a._onDragEnd(e),(a._dragHandle?a._dragHandle:a._elem).style.cursor=a._defaultCursor}}return Object.defineProperty(e.prototype,"dragEnabled",{get:function(){return this._dragEnabled},set:function(e){this._dragEnabled=!!e,this._elem.draggable=this._dragEnabled},enumerable:!0,configurable:!0}),e.prototype.setDragHandle=function(e){this._dragHandle=e},e.prototype.detectChanges=function(){var e=this;setTimeout((function(){e._cdr&&!e._cdr.destroyed&&e._cdr.detectChanges()}),250)},e.prototype._onDragEnter=function(e){this._isDropAllowed(e)&&this._onDragEnterCallback(e)},e.prototype._onDragOver=function(e){this._isDropAllowed(e)&&(e.preventDefault&&e.preventDefault(),this._onDragOverCallback(e))},e.prototype._onDragLeave=function(e){this._isDropAllowed(e)&&this._onDragLeaveCallback(e)},e.prototype._onDrop=function(e){this._isDropAllowed(e)&&(this._preventAndStop(e),this._onDropCallback(e),this.detectChanges())},e.prototype._isDropAllowed=function(e){if((this._dragDropService.isDragged||e.dataTransfer&&e.dataTransfer.files)&&this.dropEnabled){if(this.allowDrop)return this.allowDrop(this._dragDropService.dragData);if(0===this.dropZones.length&&0===this._dragDropService.allowedDropZones.length)return!0;for(var t=0;t<this._dragDropService.allowedDropZones.length;t++){var r=this._dragDropService.allowedDropZones[t];if(-1!==this.dropZones.indexOf(r))return!0}}return!1},e.prototype._preventAndStop=function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},e.prototype._onDragStart=function(e){this._dragEnabled&&(this._dragDropService.allowedDropZones=this.dropZones,this._onDragStartCallback(e))},e.prototype._onDragEnd=function(e){this._dragDropService.allowedDropZones=[],this._onDragEndCallback(e)},e.prototype._onDragEnterCallback=function(e){},e.prototype._onDragOverCallback=function(e){},e.prototype._onDragLeaveCallback=function(e){},e.prototype._onDropCallback=function(e){},e.prototype._onDragStartCallback=function(e){},e.prototype._onDragEndCallback=function(e){},e}(),e.AbstractComponent=n([t.Injectable()],e.AbstractComponent);var D=function(e,t,r,o,a){this._dragDropService=t,this._config=r,this._Component=o,this._cdr=a,this._elem=e.nativeElement,this._Component.setDragHandle(this._elem)};e.DraggableComponent=function(e){function r(r,o,a,n){var i=e.call(this,r,o,a,n)||this;return i.onDragStart=new t.EventEmitter,i.onDragEnd=new t.EventEmitter,i.onDragSuccessCallback=new t.EventEmitter,i._defaultCursor=i._elem.style.cursor,i.dragEnabled=!0,i}return a(r,e),Object.defineProperty(r.prototype,"draggable",{set:function(e){this.dragEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"dropzones",{set:function(e){this.dropZones=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectallowed",{set:function(e){this.effectAllowed=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectcursor",{set:function(e){this.effectCursor=e},enumerable:!0,configurable:!0}),r.prototype._onDragStartCallback=function(e){this._dragDropService.isDragged=!0,this._dragDropService.dragData=this.dragData,this._dragDropService.onDragSuccessCallback=this.onDragSuccessCallback,this._elem.classList.add(this._config.onDragStartClass),this.onDragStart.emit({dragData:this.dragData,mouseEvent:e})},r.prototype._onDragEndCallback=function(e){this._dragDropService.isDragged=!1,this._dragDropService.dragData=null,this._dragDropService.onDragSuccessCallback=null,this._elem.classList.remove(this._config.onDragStartClass),this.onDragEnd.emit({dragData:this.dragData,mouseEvent:e})},r}(e.AbstractComponent),n([t.Input("dragEnabled")],e.DraggableComponent.prototype,"draggable",null),n([t.Output()],e.DraggableComponent.prototype,"onDragStart",void 0),n([t.Output()],e.DraggableComponent.prototype,"onDragEnd",void 0),n([t.Input()],e.DraggableComponent.prototype,"dragData",void 0),n([t.Output("onDragSuccess")],e.DraggableComponent.prototype,"onDragSuccessCallback",void 0),n([t.Input("dropZones")],e.DraggableComponent.prototype,"dropzones",null),n([t.Input("effectAllowed")],e.DraggableComponent.prototype,"effectallowed",null),n([t.Input("effectCursor")],e.DraggableComponent.prototype,"effectcursor",null),n([t.Input()],e.DraggableComponent.prototype,"dragImage",void 0),n([t.Input()],e.DraggableComponent.prototype,"cloneItem",void 0),e.DraggableComponent=n([t.Directive({selector:"[dnd-draggable]"})],e.DraggableComponent),e.DraggableHandleComponent=function(e){function t(t,r,o,a,n){return e.call(this,t,r,o,a,n)||this}return a(t,e),t}(D),e.DraggableHandleComponent=n([t.Directive({selector:"[dnd-draggable-handle]"})],e.DraggableHandleComponent),e.DroppableComponent=function(e){function r(r,o,a,n){var i=e.call(this,r,o,a,n)||this;return i.onDropSuccess=new t.EventEmitter,i.onDragEnter=new t.EventEmitter,i.onDragOver=new t.EventEmitter,i.onDragLeave=new t.EventEmitter,i.dropEnabled=!0,i}return a(r,e),Object.defineProperty(r.prototype,"droppable",{set:function(e){this.dropEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"allowdrop",{set:function(e){this.allowDrop=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"dropzones",{set:function(e){this.dropZones=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectallowed",{set:function(e){this.effectAllowed=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectcursor",{set:function(e){this.effectCursor=e},enumerable:!0,configurable:!0}),r.prototype._onDragEnterCallback=function(e){this._dragDropService.isDragged&&(this._elem.classList.add(this._config.onDragEnterClass),this.onDragEnter.emit({dragData:this._dragDropService.dragData,mouseEvent:e}))},r.prototype._onDragOverCallback=function(e){this._dragDropService.isDragged&&(this._elem.classList.add(this._config.onDragOverClass),this.onDragOver.emit({dragData:this._dragDropService.dragData,mouseEvent:e}))},r.prototype._onDragLeaveCallback=function(e){this._dragDropService.isDragged&&(this._elem.classList.remove(this._config.onDragOverClass),this._elem.classList.remove(this._config.onDragEnterClass),this.onDragLeave.emit({dragData:this._dragDropService.dragData,mouseEvent:e}))},r.prototype._onDropCallback=function(e){var t=e.dataTransfer;(this._dragDropService.isDragged||t&&t.files)&&(this.onDropSuccess.emit({dragData:this._dragDropService.dragData,mouseEvent:e}),this._dragDropService.onDragSuccessCallback&&this._dragDropService.onDragSuccessCallback.emit({dragData:this._dragDropService.dragData,mouseEvent:e}),this._elem.classList.remove(this._config.onDragOverClass),this._elem.classList.remove(this._config.onDragEnterClass))},r}(e.AbstractComponent),n([t.Input("dropEnabled")],e.DroppableComponent.prototype,"droppable",null),n([t.Output()],e.DroppableComponent.prototype,"onDropSuccess",void 0),n([t.Output()],e.DroppableComponent.prototype,"onDragEnter",void 0),n([t.Output()],e.DroppableComponent.prototype,"onDragOver",void 0),n([t.Output()],e.DroppableComponent.prototype,"onDragLeave",void 0),n([t.Input("allowDrop")],e.DroppableComponent.prototype,"allowdrop",null),n([t.Input("dropZones")],e.DroppableComponent.prototype,"dropzones",null),n([t.Input("effectAllowed")],e.DroppableComponent.prototype,"effectallowed",null),n([t.Input("effectCursor")],e.DroppableComponent.prototype,"effectcursor",null),e.DroppableComponent=n([t.Directive({selector:"[dnd-droppable]"})],e.DroppableComponent),e.SortableContainer=function(e){function t(t,r,o,a,n){var i=e.call(this,t,r,o,a)||this;return i._sortableDataService=n,i._sortableData=[],i.dragEnabled=!1,i}return a(t,e),Object.defineProperty(t.prototype,"draggable",{set:function(e){this.dragEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"sortableData",{get:function(){return this._sortableData},set:function(e){this._sortableData=e,e instanceof r.FormArray?this.sortableHandler=new h:this.sortableHandler=new b,this.dropEnabled=!!this._sortableData},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dropzones",{set:function(e){this.dropZones=e},enumerable:!0,configurable:!0}),t.prototype._onDragEnterCallback=function(e){if(this._sortableDataService.isDragged){var t=this._sortableDataService.sortableContainer.getItemAt(this._sortableDataService.index);-1===this.indexOf(t)&&(this._sortableDataService.sortableContainer.removeItemAt(this._sortableDataService.index),0===this._sortableDataService.sortableContainer._sortableData.length&&(this._sortableDataService.sortableContainer.dropEnabled=!0),this.insertItemAt(t,0),this._sortableDataService.sortableContainer=this,this._sortableDataService.index=0),this.detectChanges()}},t.prototype.getItemAt=function(e){return this.sortableHandler.getItemAt(this._sortableData,e)},t.prototype.indexOf=function(e){return this.sortableHandler.indexOf(this._sortableData,e)},t.prototype.removeItemAt=function(e){this.sortableHandler.removeItemAt(this._sortableData,e)},t.prototype.insertItemAt=function(e,t){this.sortableHandler.insertItemAt(this._sortableData,e,t)},t}(e.AbstractComponent),n([t.Input("dragEnabled")],e.SortableContainer.prototype,"draggable",null),n([t.Input()],e.SortableContainer.prototype,"sortableData",null),n([t.Input("dropZones")],e.SortableContainer.prototype,"dropzones",null),e.SortableContainer=n([t.Directive({selector:"[dnd-sortable-container]"})],e.SortableContainer);var f,b=function(){function e(){}return e.prototype.getItemAt=function(e,t){return e[t]},e.prototype.indexOf=function(e,t){return e.indexOf(t)},e.prototype.removeItemAt=function(e,t){e.splice(t,1)},e.prototype.insertItemAt=function(e,t,r){e.splice(r,0,t)},e}(),h=function(){function e(){}return e.prototype.getItemAt=function(e,t){return e.at(t)},e.prototype.indexOf=function(e,t){return e.controls.indexOf(t)},e.prototype.removeItemAt=function(e,t){e.removeAt(t)},e.prototype.insertItemAt=function(e,t,r){e.insert(r,t)},e}();e.SortableComponent=function(e){function r(r,o,a,n,i,l){var s=e.call(this,r,o,a,l)||this;return s._sortableContainer=n,s._sortableDataService=i,s.onDragSuccessCallback=new t.EventEmitter,s.onDragStartCallback=new t.EventEmitter,s.onDragOverCallback=new t.EventEmitter,s.onDragEndCallback=new t.EventEmitter,s.onDropSuccessCallback=new t.EventEmitter,s.dropZones=s._sortableContainer.dropZones,s.dragEnabled=!0,s.dropEnabled=!0,s}return a(r,e),Object.defineProperty(r.prototype,"draggable",{set:function(e){this.dragEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"droppable",{set:function(e){this.dropEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectallowed",{set:function(e){this.effectAllowed=e},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"effectcursor",{set:function(e){this.effectCursor=e},enumerable:!0,configurable:!0}),r.prototype._onDragStartCallback=function(e){this._sortableDataService.isDragged=!0,this._sortableDataService.sortableContainer=this._sortableContainer,this._sortableDataService.index=this.index,this._sortableDataService.markSortable(this._elem),this._dragDropService.isDragged=!0,this._dragDropService.dragData=this.dragData,this._dragDropService.onDragSuccessCallback=this.onDragSuccessCallback,this.onDragStartCallback.emit(this._dragDropService.dragData)},r.prototype._onDragOverCallback=function(e){this._sortableDataService.isDragged&&this._elem!==this._sortableDataService.elem&&(this._sortableDataService.sortableContainer=this._sortableContainer,this._sortableDataService.index=this.index,this._sortableDataService.markSortable(this._elem),this.onDragOverCallback.emit(this._dragDropService.dragData))},r.prototype._onDragEndCallback=function(e){this._sortableDataService.isDragged=!1,this._sortableDataService.sortableContainer=null,this._sortableDataService.index=null,this._sortableDataService.markSortable(null),this._dragDropService.isDragged=!1,this._dragDropService.dragData=null,this._dragDropService.onDragSuccessCallback=null,this.onDragEndCallback.emit(this._dragDropService.dragData)},r.prototype._onDragEnterCallback=function(e){if(this._sortableDataService.isDragged&&(this._sortableDataService.markSortable(this._elem),this.index!==this._sortableDataService.index||this._sortableDataService.sortableContainer.sortableData!==this._sortableContainer.sortableData)){var t=this._sortableDataService.sortableContainer.getItemAt(this._sortableDataService.index);this._sortableDataService.sortableContainer.removeItemAt(this._sortableDataService.index),0===this._sortableDataService.sortableContainer.sortableData.length&&(this._sortableDataService.sortableContainer.dropEnabled=!0),this._sortableContainer.insertItemAt(t,this.index),this._sortableContainer.dropEnabled&&(this._sortableContainer.dropEnabled=!1),this._sortableDataService.sortableContainer=this._sortableContainer,this._sortableDataService.index=this.index,this.detectChanges()}},r.prototype._onDropCallback=function(e){this._sortableDataService.isDragged&&(this.onDropSuccessCallback.emit(this._dragDropService.dragData),this._dragDropService.onDragSuccessCallback&&this._dragDropService.onDragSuccessCallback.emit(this._dragDropService.dragData),this._sortableContainer.detectChanges())},r}(e.AbstractComponent),n([t.Input("sortableIndex")],e.SortableComponent.prototype,"index",void 0),n([t.Input("dragEnabled")],e.SortableComponent.prototype,"draggable",null),n([t.Input("dropEnabled")],e.SortableComponent.prototype,"droppable",null),n([t.Input()],e.SortableComponent.prototype,"dragData",void 0),n([t.Input("effectAllowed")],e.SortableComponent.prototype,"effectallowed",null),n([t.Input("effectCursor")],e.SortableComponent.prototype,"effectcursor",null),n([t.Output("onDragSuccess")],e.SortableComponent.prototype,"onDragSuccessCallback",void 0),n([t.Output("onDragStart")],e.SortableComponent.prototype,"onDragStartCallback",void 0),n([t.Output("onDragOver")],e.SortableComponent.prototype,"onDragOverCallback",void 0),n([t.Output("onDragEnd")],e.SortableComponent.prototype,"onDragEndCallback",void 0),n([t.Output("onDropSuccess")],e.SortableComponent.prototype,"onDropSuccessCallback",void 0),e.SortableComponent=n([t.Directive({selector:"[dnd-sortable]"})],e.SortableComponent),e.SortableHandleComponent=function(e){function t(t,r,o,a,n){return e.call(this,t,r,o,a,n)||this}return a(t,e),t}(D),e.SortableHandleComponent=n([t.Directive({selector:"[dnd-sortable-handle]"})],e.SortableHandleComponent);var m=g,_=u,v=[c,{provide:e.DragDropService,useFactory:m},{provide:e.DragDropSortableService,useFactory:_,deps:[c]}];e.DndModule=f=function(){function e(){}return e.forRoot=function(){return{ngModule:f,providers:v}},e}(),e.DndModule=f=n([t.NgModule({declarations:[e.DraggableComponent,e.DraggableHandleComponent,e.DroppableComponent,e.SortableContainer,e.SortableComponent,e.SortableHandleComponent],exports:[e.DraggableComponent,e.DraggableHandleComponent,e.DroppableComponent,e.SortableContainer,e.SortableComponent,e.SortableHandleComponent]})],e.DndModule),e.AbstractHandleComponent=D,e.DataTransferEffect=s,e.DragDropConfig=c,e.DragDropData=d,e.DragImage=p,e.dragDropServiceFactory=g,e.dragDropSortableServiceFactory=u,e.providers=v,e.ɵ0=m,e.ɵ1=_,Object.defineProperty(e,"__esModule",{value:!0})}));
16//# sourceMappingURL=ng2-dnd.umd.min.js.map
\No newline at end of file