ng-drag-and-drop
Version:
Drag and drop using angular
82 lines • 5.41 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, EventEmitter, Output, ElementRef } from '@angular/core';
export class DropperDirective {
/**
* @param {?} elementRef
*/
constructor(elementRef) {
this.elementRef = elementRef;
this.dropped = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
/** @type {?} */
const el = this.elementRef.nativeElement;
el.addEventListener('dragenter', (/**
* @param {?} e
* @return {?}
*/
(e) => {
el.classList.add('over');
}));
el.addEventListener('dragleave', (/**
* @param {?} e
* @return {?}
*/
(e) => {
el.classList.remove('over');
}));
el.addEventListener('dragover', (/**
* @param {?} e
* @return {?}
*/
(e) => {
if (e.preventDefault) {
e.preventDefault();
}
e.dataTransfer.dropEffect = 'move';
return false;
}));
el.addEventListener('drop', (/**
* @param {?} e
* @return {?}
*/
(e) => {
if (e.stopPropagation) {
e.stopPropagation();
}
el.classList.remove('over');
/** @type {?} */
const data = JSON.parse(e.dataTransfer.getData('text'));
this.dropped.emit(data);
return false;
}));
}
}
DropperDirective.decorators = [
{ type: Directive, args: [{
selector: '[dropHere]'
},] }
];
/** @nocollapse */
DropperDirective.ctorParameters = () => [
{ type: ElementRef }
];
DropperDirective.propDecorators = {
dropped: [{ type: Output }]
};
if (false) {
/** @type {?} */
DropperDirective.prototype.dropped;
/**
* @type {?}
* @private
*/
DropperDirective.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kcmFnLWFuZC1kcm9wLyIsInNvdXJjZXMiOlsibGliL0RpcmVjdGl2ZS9kcm9wcGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtwRixNQUFNLE9BQU8sZ0JBQWdCOzs7O0lBRTNCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEaEMsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ1osQ0FBQzs7OztJQUMvQyxRQUFROztjQUNBLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWE7UUFHeEMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVc7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLENBQUMsRUFBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7Ozs7UUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRTtnQkFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1lBQ0QsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFDLENBQUM7UUFHSCxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTTs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFO2dCQUNyQixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDckI7WUFFRCxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzs7a0JBQ3RCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFyQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2FBQ3ZCOzs7O1lBSmlELFVBQVU7OztzQkFNekQsTUFBTTs7OztJQUFQLG1DQUEwRDs7Ozs7SUFDOUMsc0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkcm9wSGVyZV0nXG59KVxuZXhwb3J0IGNsYXNzIERyb3BwZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgZHJvcHBlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbnRlcicsIChlKSA9PiB7XG4gICAgICBlbC5jbGFzc0xpc3QuYWRkKCdvdmVyJyk7XG4gICAgfSk7XG5cbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdkcmFnbGVhdmUnLCAoZSkgPT4ge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcicpO1xuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZSkgPT4ge1xuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiB7XG4gICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnb3ZlcicpO1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpKTtcbiAgICAgIHRoaXMuZHJvcHBlZC5lbWl0KGRhdGEpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=