@progress/kendo-angular-common
Version:
Kendo UI for Angular - Utility Package
72 lines (71 loc) • 2.61 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* 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 };