@ks89/ngx-drag-n-drop
Version:
Drag and drop library for Angular
1 lines • 13.6 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 standalone: false\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 standalone: false\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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"}