@ks89/ngx-drag-n-drop
Version:
Drag and drop library for Angular
1 lines • 14.3 kB
Source Map (JSON)
{"version":3,"file":"ks89-ngx-drag-n-drop.mjs","sources":["../../../../projects/ks89/ngx-drag-n-drop/src/lib/drag-drop-directive.service.ts","../../../../projects/ks89/ngx-drag-n-drop/src/lib/drag-directive.directive.ts","../../../../projects/ks89/ngx-drag-n-drop/src/lib/drop-directive.directive.ts","../../../../projects/ks89/ngx-drag-n-drop/src/lib/drag-drop-directive.module.ts","../../../../projects/ks89/ngx-drag-n-drop/src/public-api.ts","../../../../projects/ks89/ngx-drag-n-drop/src/ks89-ngx-drag-n-drop.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DragDropDirectiveService {\n private dropItem: Subject<any> = new Subject<any>();\n private draggedItem: any;\n\n public setDropItem(item: any): void {\n this.dropItem.next(item);\n }\n\n public getDropItem(): Observable<any> {\n return this.dropItem.asObservable();\n }\n\n public setDragItem(item: any): void {\n this.draggedItem = item;\n }\n\n public getDragItem(): any {\n return this.draggedItem;\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { DragDropDirectiveService } from './drag-drop-directive.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[ksDragDirective]'\n})\nexport class DragDirective implements OnDestroy {\n @Input() draggedItem: any;\n @Input() dragHighlight: string | undefined; // cssHighlight\n @Output() releaseDrop: EventEmitter<any> = new EventEmitter();\n @Output() startDrag: EventEmitter<any> = new EventEmitter();\n\n private highlighted = false;\n private dropSubscription: Subscription | undefined;\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef,\n private dragDropDirectiveService: DragDropDirectiveService\n ) {\n this.renderer.setAttribute(this.el.nativeElement, 'draggable', 'true');\n }\n\n @HostListener('mouseenter') onMouseEnter() {\n this.highlight();\n }\n\n @HostListener('mouseleave') onMouseOut() {\n this.highlight();\n }\n\n @HostListener('dragstart', ['$event']) onDragStart(event: any) {\n // html draggable will not transfer an object, so we stringify it\n const transferObject = {object: this.draggedItem, id: 'dragDirectiveID-' + new Date().getTime()};\n const transferObjectString = JSON.stringify(transferObject);\n event.dataTransfer.setData('text', transferObjectString);\n this.dragDropDirectiveService.setDragItem(this.draggedItem);\n this.dropSubscription = this.dragDropDirectiveService.getDropItem().subscribe(\n item => {\n this.emitDraggedItem(this.draggedItem);\n }\n );\n this.startDrag.emit(this.draggedItem);\n }\n\n @HostListener('dragend') onDragEnd() {\n if (typeof this.dropSubscription !== 'undefined') {\n this.dropSubscription.unsubscribe();\n }\n }\n\n ngOnDestroy() {\n if (typeof this.dropSubscription !== 'undefined') {\n this.dropSubscription.unsubscribe();\n }\n }\n\n private emitDraggedItem(item: any) {\n this.releaseDrop.emit(item);\n if (this.dropSubscription) {\n this.dropSubscription.unsubscribe();\n }\n }\n\n private highlight() {\n if (this.dragHighlight) {\n if (!this.highlighted) {\n this.renderer.addClass(this.el.nativeElement, this.dragHighlight);\n } else {\n this.renderer.removeClass(this.el.nativeElement, this.dragHighlight);\n }\n }\n this.highlighted = !this.highlighted;\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2 } from '@angular/core';\n\nimport { DragDropDirectiveService } from './drag-drop-directive.service';\n\n@Directive({\n selector: '[ksDropDirective]'\n})\nexport class DropDirective {\n @Input() dropHighlight: string | undefined;\n\n @Output() dropEvent: EventEmitter<any> = new EventEmitter();\n @Output() dragenterEvent: EventEmitter<any> = new EventEmitter();\n @Output() dragleaveEvent: EventEmitter<any> = new EventEmitter();\n @Output() dropEventMouse: EventEmitter<any> = new EventEmitter();\n\n private highlighted = false;\n private dragItem: any;\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef,\n private dragDropDirectiveService: DragDropDirectiveService\n ) {\n }\n\n @HostListener('dragenter') onDragEnter() {\n this.dragItem = this.dragDropDirectiveService.getDragItem();\n this.dragenterEvent.emit(this.dragItem);\n // this.highlighted = true;\n this.highlight();\n }\n\n @HostListener('dragleave') onDragLeave() {\n this.dragItem = this.dragDropDirectiveService.getDragItem();\n this.dragleaveEvent.emit(this.dragItem);\n // this.highlighted = false;\n this.highlight();\n }\n\n @HostListener('dragover', ['$event']) onDragOver(event: any) {\n event.preventDefault();\n }\n\n @HostListener('drop', ['$event']) onDrop(event: any) {\n // check to see if we are getting what was sent. text/plain\n const eventData: any = event.dataTransfer.getData('text');\n if (eventData && event.dataTransfer.files.length === 0) {\n event.preventDefault();\n // since html draggable will not transfer an object, we need to parse are string\n const transferredObjectString: any = JSON.parse(eventData);\n const transferredObjectID: any = transferredObjectString.id;\n const transferredObject: any = transferredObjectString.object;\n this.dropEvent.emit(transferredObject);\n this.dragDropDirectiveService.setDropItem(transferredObjectID);\n }\n this.dropEventMouse.emit(event);\n this.highlight();\n }\n\n private highlight() {\n if (this.dropHighlight) {\n if (!this.highlighted) {\n this.renderer.addClass(this.el.nativeElement, this.dropHighlight);\n } else {\n this.renderer.removeClass(this.el.nativeElement, this.dropHighlight);\n }\n }\n this.highlighted = !this.highlighted;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDirective } from './drag-directive.directive';\nimport { DropDirective } from './drop-directive.directive';\nimport { DragDropDirectiveService } from './drag-drop-directive.service';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DragDirective,\n DropDirective\n ],\n providers: [\n DragDropDirectiveService\n ],\n exports: [\n DragDirective,\n DropDirective\n ]\n})\nexport class DragDropDirectiveModule {}\n","/*\n * Public API Surface of ngx-drag-n-drop\n */\n\nexport { DragDirective } from './lib/drag-directive.directive';\nexport { DragDropDirectiveModule } from './lib/drag-drop-directive.module';\nexport { DragDropDirectiveService } from './lib/drag-drop-directive.service';\nexport { DropDirective } from './lib/drop-directive.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DragDropDirectiveService"],"mappings":"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"}