UNPKG

@progress/kendo-angular-common

Version:
72 lines (71 loc) 2.61 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2020 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import * as tslib_1 from "tslib"; import { EventEmitter, ElementRef, Directive, Output, NgZone, Input } from '@angular/core'; import { isDocumentAvailable, isChanged } from '../utils'; import Draggable from '@telerik/kendo-draggable'; let DraggableDirective = class DraggableDirective { constructor(element, ngZone) { this.element = element; this.ngZone = ngZone; this.enableDrag = true; this.kendoPress = new EventEmitter(); this.kendoDrag = new EventEmitter(); this.kendoRelease = new EventEmitter(); } ngOnInit() { this.toggleDraggable(); } ngOnChanges(changes) { if (isChanged('enableDrag', changes)) { this.toggleDraggable(); } } ngOnDestroy() { this.destroyDraggable(); } toggleDraggable() { if (isDocumentAvailable()) { this.destroyDraggable(); if (this.enableDrag) { this.draggable = new Draggable({ drag: (e) => this.kendoDrag.next(e), press: (e) => this.kendoPress.next(e), release: (e) => this.kendoRelease.next(e) }); this.ngZone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement)); } } } destroyDraggable() { if (this.draggable) { this.draggable.destroy(); this.draggable = null; } } }; tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Boolean) ], DraggableDirective.prototype, "enableDrag", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", EventEmitter) ], DraggableDirective.prototype, "kendoPress", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", EventEmitter) ], DraggableDirective.prototype, "kendoDrag", void 0); tslib_1.__decorate([ Output(), tslib_1.__metadata("design:type", EventEmitter) ], DraggableDirective.prototype, "kendoRelease", void 0); DraggableDirective = tslib_1.__decorate([ Directive({ selector: '[kendoDraggable]' }), tslib_1.__metadata("design:paramtypes", [ElementRef, NgZone]) ], DraggableDirective); export { DraggableDirective };