UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

112 lines 16.6 kB
import * as tslib_1 from "tslib"; /** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * alx@truedirective.com * @link https://truedirective.com/ * @license MIT */ import { Injectable } from '@angular/core'; var BaseComponent = /** @class */ (function () { function BaseComponent() { this.uiAction = null; this.windowResizeBound = null; this.touchMoveListenFunc = null; this.touchEndListenFunc = null; this.touchCancelListenFunc = null; this._touchListener = null; } BaseComponent.prototype.addWindowResizeListener = function () { if (!this.windowResizeBound) { this.windowResizeBound = this.windowResize.bind(this); } window.addEventListener('resize', this.windowResizeBound, false); }; BaseComponent.prototype.addDocumentMouseListeners = function () { if (!this.documentMouseMoveBound) { this.documentMouseMoveBound = this.documentMouseMove.bind(this); } if (!this.documentMouseUpBound) { this.documentMouseUpBound = this.documentMouseUp.bind(this); } document.addEventListener('mousemove', this.documentMouseMoveBound, false); document.addEventListener('mouseup', this.documentMouseUpBound, false); }; BaseComponent.prototype.removeDocumentMouseListeners = function () { if (this.documentMouseMoveBound) { document.removeEventListener('mousemove', this.documentMouseMoveBound, false); } if (this.documentMouseUpBound) { document.removeEventListener('mouseup', this.documentMouseUpBound, false); } this.documentMouseMoveBound = null; this.documentMouseUpBound = null; }; BaseComponent.prototype.addTouchListeners = function (element) { this.removeTouchListeners(); this.touchStartBound = this.touchStart.bind(this); this.touchEndBound = this.touchEnd.bind(this); this.touchCancelBound = this.touchCancel.bind(this); element.addEventListener('touchstart', this.touchStartBound, { capture: false, passive: true, once: false }); element.addEventListener('touchend', this.touchEndBound, { capture: false, passive: true, once: false }); element.addEventListener('touchcancel', this.touchCancelBound, { capture: false, passive: true, once: false }); this._touchListener = element; }; BaseComponent.prototype.removeTouchListeners = function () { if (this.touchEndBound) { this._touchListener.removeEventListener('touchend', this.touchEndBound, false); } if (this.touchStartBound) { this._touchListener.removeEventListener('touchstart', this.touchStartBound, false); } if (this.touchCancelBound) { this._touchListener.removeEventListener('touchcancel', this.touchCancelBound, false); } this.touchStartBound = null; this.touchEndBound = null; this.touchCancelBound = null; this._touchListener = null; }; BaseComponent.prototype.removeTouchMoveListeners = function () { // remove previous listeners if (this.touchMoveListenFunc) { this.touchMoveListenFunc(); } if (this.touchEndListenFunc) { this.touchEndListenFunc(); } if (this.touchCancelListenFunc) { this.touchCancelListenFunc(); } this.touchMoveListenFunc = null; this.touchEndListenFunc = null; this.touchCancelListenFunc = null; }; BaseComponent.prototype.windowResize = function (e) { }; BaseComponent.prototype.touchStart = function (e) { }; BaseComponent.prototype.touchEnd = function (e) { }; BaseComponent.prototype.touchCancel = function (e) { }; BaseComponent.prototype.documentMouseMove = function (e) { }; BaseComponent.prototype.documentMouseUp = function (e) { this.removeDocumentMouseListeners(); }; BaseComponent.prototype.canDrop = function (mouseAction, show) { }; BaseComponent.prototype.dragInProcess = function (value) { }; BaseComponent.prototype.resizeInProcess = function (value) { }; BaseComponent.prototype.showHeaderBtn = function (fieldName) { }; BaseComponent.prototype.hideHeaderBtns = function () { }; BaseComponent.prototype.ngOnDestroy = function () { if (this.windowResizeBound) { window.removeEventListener('resize', this.windowResizeBound, false); } this.windowResizeBound = null; this.removeDocumentMouseListeners(); this.removeTouchMoveListeners(); this.removeTouchListeners(); }; BaseComponent = tslib_1.__decorate([ Injectable() ], BaseComponent); return BaseComponent; }()); export { BaseComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0VBS0U7QUFDRixPQUFPLEVBQUUsVUFBVSxFQUF5QyxNQUFNLGVBQWUsQ0FBQztBQUtsRjtJQURBO1FBR1ksYUFBUSxHQUFhLElBQUksQ0FBQztRQVUxQixzQkFBaUIsR0FBUSxJQUFJLENBQUM7UUFFOUIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBQ2hDLHVCQUFrQixHQUFRLElBQUksQ0FBQztRQUMvQiwwQkFBcUIsR0FBUyxJQUFJLENBQUM7UUFFckMsbUJBQWMsR0FBZ0IsSUFBSSxDQUFDO0lBdUg3QyxDQUFDO0lBckhXLCtDQUF1QixHQUFqQztRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVTLGlEQUF5QixHQUFuQztRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDtRQUVELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxD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QUFDO1FBRTlCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUF4SW1CLGFBQWE7UUFEbEMsVUFBVSxFQUFFO09BQ1MsYUFBYSxDQXlJbEM7SUFBRCxvQkFBQztDQUFBLEFBeklELElBeUlDO1NBeklxQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IEFsZWtzZXkgTWVsbmlrb3YsIFRydWUgRGlyZWN0aXZlIENvbXBhbnkuXHJcbiAqIGFseEB0cnVlZGlyZWN0aXZlLmNvbVxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVJQWN0aW9uIH0gZnJvbSAnQHRydWUtZGlyZWN0aXZlL2Jhc2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHByb3RlY3RlZCB1aUFjdGlvbjogVUlBY3Rpb24gPSBudWxsO1xyXG5cclxuICAvLyDQodC70YPRiNCw0YLQtdC70Lgg0YHQvtCx0YvRgtC40Lkg0LTQvtC60YPQvNC10L3RgtCwLiDQndGD0LbQvdGLINGC0L7Qu9GM0LrQviDQv9GA0Lgg0L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjQuCDQutC+0LvQvtC90L7QuiDQuCDQstGL0LTQtdC70LXQvdC40Lgg0L7QsdC70LDRgdGC0LhcclxuICBwcml2YXRlIGRvY3VtZW50TW91c2VNb3ZlQm91bmQ6IGFueTtcclxuICBwcml2YXRlIGRvY3VtZW50TW91c2VVcEJvdW5kOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgdG91Y2hTdGFydEJvdW5kOiBhbnk7XHJcbiAgcHJpdmF0ZSB0b3VjaEVuZEJvdW5kOiBhbnk7XHJcbiAgcHJpdmF0ZSB0b3VjaENhbmNlbEJvdW5kOiBhbnk7XHJcblxyXG4gIHByb3RlY3RlZCB3aW5kb3dSZXNpemVCb3VuZDogYW55ID0gbnVsbDtcclxuXHJcbiAgcHJvdGVjdGVkIHRvdWNoTW92ZUxpc3RlbkZ1bmM6IGFueSA9IG51bGw7XHJcbiAgcHJvdGVjdGVkIHRvdWNoRW5kTGlzdGVuRnVuYzogYW55ID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgdG91Y2hDYW5jZWxMaXN0ZW5GdW5jOiBhbnkgID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfdG91Y2hMaXN0ZW5lcjogSFRNTEVsZW1lbnQgPSBudWxsO1xyXG5cclxuICBwcm90ZWN0ZWQgYWRkV2luZG93UmVzaXplTGlzdGVuZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMud2luZG93UmVzaXplQm91bmQpIHtcclxuICAgICAgdGhpcy53aW5kb3dSZXNpemVCb3VuZCA9IHRoaXMud2luZG93UmVzaXplLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMud2luZG93UmVzaXplQm91bmQsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhZGREb2N1bWVudE1vdXNlTGlzdGVuZXJzKCkge1xyXG4gICAgaWYgKCF0aGlzLmRvY3VtZW50TW91c2VNb3ZlQm91bmQpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudE1vdXNlTW92ZUJvdW5kID0gdGhpcy5kb2N1bWVudE1vdXNlTW92ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kb2N1bWVudE1vdXNlVXBCb3VuZCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50TW91c2VVcEJvdW5kID0gdGhpcy5kb2N1bWVudE1vdXNlVXAuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmRvY3VtZW50TW91c2VNb3ZlQm91bmQsIGZhbHNlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmRvY3VtZW50TW91c2VVcEJvdW5kLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVtb3ZlRG9jdW1lbnRNb3VzZUxpc3RlbmVycygpIHtcclxuXHJcbiAgICBpZiAodGhpcy5kb2N1bWVudE1vdXNlTW92ZUJvdW5kKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuZG9jdW1lbnRNb3VzZU1vdmVCb3VuZCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRvY3VtZW50TW91c2VVcEJvdW5kKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmRvY3VtZW50TW91c2VVcEJvdW5kLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kb2N1bWVudE1vdXNlTW92ZUJvdW5kID0gbnVsbDtcclxuICAgIHRoaXMuZG9jdW1lbnRNb3VzZVVwQm91bmQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZFRvdWNoTGlzdGVuZXJzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLnJlbW92ZVRvdWNoTGlzdGVuZXJzKCk7XHJcbiAgICB0aGlzLnRvdWNoU3RhcnRCb3VuZCA9IHRoaXMudG91Y2hTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy50b3VjaEVuZEJvdW5kID0gdGhpcy50b3VjaEVuZC5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy50b3VjaENhbmNlbEJvdW5kID0gdGhpcy50b3VjaENhbmNlbC5iaW5kKHRoaXMpO1xyXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy50b3VjaFN0YXJ0Qm91bmQsIHtjYXB0dXJlOiBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSwgb25jZTogZmFsc2V9KTtcclxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnRvdWNoRW5kQm91bmQsIHtjYXB0dXJlOiBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSwgb25jZTogZmFsc2V9KTtcclxuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCB0aGlzLnRvdWNoQ2FuY2VsQm91bmQsIHtjYXB0dXJlOiBmYWxzZSwgcGFzc2l2ZTogdHJ1ZSwgb25jZTogZmFsc2V9KTtcclxuICAgIHRoaXMuX3RvdWNoTGlzdGVuZXIgPSBlbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlbW92ZVRvdWNoTGlzdGVuZXJzKCkge1xyXG4gICAgaWYgKHRoaXMudG91Y2hFbmRCb3VuZCkge1xyXG4gICAgICB0aGlzLl90b3VjaExpc3RlbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy50b3VjaEVuZEJvdW5kLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudG91Y2hTdGFydEJvdW5kKSB7XHJcbiAgICAgIHRoaXMuX3RvdWNoTGlzdGVuZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMudG91Y2hTdGFydEJvdW5kLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudG91Y2hDYW5jZWxCb3VuZCkge1xyXG4gICAgICB0aGlzLl90b3VjaExpc3RlbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgdGhpcy50b3VjaENhbmNlbEJvdW5kLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50b3VjaFN0YXJ0Qm91bmQgPSBudWxsO1xyXG4gICAgdGhpcy50b3VjaEVuZEJvdW5kID0gbnVsbDtcclxuICAgIHRoaXMudG91Y2hDYW5jZWxCb3VuZCA9IG51bGw7XHJcbiAgICB0aGlzLl90b3VjaExpc3RlbmVyID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZW1vdmVUb3VjaE1vdmVMaXN0ZW5lcnMoKSB7XHJcbiAgICAvLyByZW1vdmUgcHJldmlvdXMgbGlzdGVuZXJzXHJcbiAgICBpZiAodGhpcy50b3VjaE1vdmVMaXN0ZW5GdW5jKSB7XHJcbiAgICAgIHRoaXMudG91Y2hNb3ZlTGlzdGVuRnVuYygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudG91Y2hFbmRMaXN0ZW5GdW5jKSB7XHJcbiAgICAgIHRoaXMudG91Y2hFbmRMaXN0ZW5GdW5jKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50b3VjaENhbmNlbExpc3RlbkZ1bmMpIHtcclxuICAgICAgdGhpcy50b3VjaENhbmNlbExpc3RlbkZ1bmMoKTtcclxuICAgIH1cclxuICAgIHRoaXMudG91Y2hNb3ZlTGlzdGVuRnVuYyA9IG51bGw7XHJcbiAgICB0aGlzLnRvdWNoRW5kTGlzdGVuRnVuYyA9IG51bGw7XHJcbiAgICB0aGlzLnRvdWNoQ2FuY2VsTGlzdGVuRnVuYyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgd2luZG93UmVzaXplKGU6IGFueSkgeyB9XHJcblxyXG4gIHB1YmxpYyB0b3VjaFN0YXJ0KGU6IGFueSkgeyB9XHJcblxyXG4gIHB1YmxpYyB0b3VjaEVuZChlOiBhbnkpIHsgfVxyXG5cclxuICBwdWJsaWMgdG91Y2hDYW5jZWwoZTogYW55KSB7IH1cclxuXHJcbiAgcHJvdGVjdGVkIGRvY3VtZW50TW91c2VNb3ZlKGU6IE1vdXNlRXZlbnQpIHsgfVxyXG5cclxuICBwcm90ZWN0ZWQgZG9jdW1lbnRNb3VzZVVwKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZUxpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbkRyb3AobW91c2VBY3Rpb246IFVJQWN0aW9uLCBzaG93OiBib29sZWFuKTogYW55IHsgfVxyXG5cclxuICBwdWJsaWMgZHJhZ0luUHJvY2Vzcyh2YWx1ZTogYm9vbGVhbikgeyB9XHJcblxyXG4gIHB1YmxpYyByZXNpemVJblByb2Nlc3ModmFsdWU6IGJvb2xlYW4pIHsgfVxyXG5cclxuICBwdWJsaWMgc2hvd0hlYWRlckJ0bihmaWVsZE5hbWU6IHN0cmluZykgeyB9XHJcblxyXG4gIHB1YmxpYyBoaWRlSGVhZGVyQnRucygpIHsgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuXHJcbiAgICBpZiAodGhpcy53aW5kb3dSZXNpemVCb3VuZCkge1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy53aW5kb3dSZXNpemVCb3VuZCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMud2luZG93UmVzaXplQm91bmQgPSBudWxsO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRNb3VzZUxpc3RlbmVycygpO1xyXG4gICAgdGhpcy5yZW1vdmVUb3VjaE1vdmVMaXN0ZW5lcnMoKTtcclxuICAgIHRoaXMucmVtb3ZlVG91Y2hMaXN0ZW5lcnMoKTtcclxuICB9XHJcbn1cclxuIl19