ngx-mat-cdk
Version:
Extra Components for Angular Material including Filters,Drag Drop File, MatSelect Mobile Version
102 lines • 12.1 kB
JavaScript
import { Directive, ElementRef, EventEmitter, Inject, Output, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from "@angular/common";
export class NgxCdkTouchDetectDirective {
constructor(el, plateFormId) {
this.el = el;
this.plateFormId = plateFormId;
this.swipeLeft = new EventEmitter();
this.swipeUp = new EventEmitter();
this.swipeRight = new EventEmitter();
this.swipeDown = new EventEmitter();
this.swipe = new EventEmitter();
this.xDown = null;
this.yDown = null;
}
getTouches(evt) {
return evt.touches || // browser API
evt.originalEvent.touches; // jQuery
}
ngAfterViewInit() {
if (isPlatformBrowser(this.plateFormId)) {
this._addEvents();
}
}
_handleTouchStartFunc(evt) {
const firstTouch = this.getTouches(evt)[0];
this.xDown = firstTouch.clientX;
this.yDown = firstTouch.clientY;
}
_handleTouchMoveFunc(evt) {
if (!this.xDown || !this.yDown) {
return;
}
let xUp = evt.touches[0].clientX;
let yUp = evt.touches[0].clientY;
let xDiff = this.xDown - xUp;
let yDiff = this.yDown - yUp;
let direction = 'up';
if (Math.abs(xDiff) > Math.abs(yDiff)) { /*most significant*/
if (xDiff > 0) {
/* left swipe */
this.swipeLeft.emit(evt);
direction = 'left';
}
else {
/* right swipe */
this.swipeRight.emit(evt);
direction = 'right';
}
}
else {
if (yDiff > 0) {
/* up swipe */
this.swipeUp.emit(evt);
direction = 'up';
}
else {
/* down swipe */
this.swipeDown.emit(evt);
direction = 'down';
}
}
this.swipe.emit({ event: evt, direction });
/* reset values */
this.xDown = null;
this.yDown = null;
}
;
_addEvents() {
this._handleTouchMove = this._handleTouchMoveFunc.bind(this);
this._handleTouchStart = this._handleTouchStartFunc.bind(this);
this.el.nativeElement.addEventListener('touchstart', this._handleTouchStart, false);
this.el.nativeElement.addEventListener('touchmove', this._handleTouchMove, false);
}
_removeEvents() {
this.el.nativeElement.removeEventListener('touchstart', this._handleTouchStart, false);
this.el.nativeElement.removeEventListener('touchmove', this._handleTouchMove, false);
}
ngOnDestroy() {
if (isPlatformBrowser(this.plateFormId)) {
this._removeEvents();
}
}
}
NgxCdkTouchDetectDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngxCdkTouchDetect]'
},] }
];
NgxCdkTouchDetectDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
NgxCdkTouchDetectDirective.propDecorators = {
swipeLeft: [{ type: Output }],
swipeUp: [{ type: Output }],
swipeRight: [{ type: Output }],
swipeDown: [{ type: Output }],
swipe: [{ type: Output }]
};
export class NgxCdkTouchResult {
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNkay10b3VjaC1kZXRlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL0FsaXJlemEgTW9oYW1tYWRpL3NvdXJjZS9yZXBvcy9NeUxpYnJhcnkvQW5ndWxhci5MaWJyYXJ5L2xpYnMvcHJvamVjdHMvbmd4LW1hdC1jZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9kaXJlY3RpdmVzL25neC1jZGstdG91Y2gtZGV0ZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFBRSxZQUFZLEVBRXhCLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBS2xELE1BQU0sT0FBTywwQkFBMEI7SUFPckMsWUFBb0IsRUFBYyxFQUErQixXQUFnQjtRQUE3RCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQStCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBTnZFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzNDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3pDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzVDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzNDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBcUIsQ0FBQztRQU14RCxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsVUFBSyxHQUFHLElBQUksQ0FBQztJQUhiLENBQUM7SUFNRCxVQUFVLENBQUMsR0FBRztRQUNaLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBZ0IsY0FBYztZQUM5QyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVM7SUFDeEMsQ0FBQztJQUdELGVBQWU7UUFDYixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxX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RUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV2RixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUVILENBQUM7OztZQXBHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjthQUNoQzs7O1lBWEMsVUFBVTs0Q0FtQjJCLE1BQU0sU0FBQyxXQUFXOzs7d0JBTnRELE1BQU07c0JBQ04sTUFBTTt5QkFDTixNQUFNO3dCQUNOLE1BQU07b0JBQ04sTUFBTTs7QUFnR1QsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBQTEFURk9STV9JRFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2lzUGxhdGZvcm1Ccm93c2VyfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tuZ3hDZGtUb3VjaERldGVjdF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hDZGtUb3VjaERldGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIHN3aXBlTGVmdCA9IG5ldyBFdmVudEVtaXR0ZXI8VG91Y2hFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgc3dpcGVVcCA9IG5ldyBFdmVudEVtaXR0ZXI8VG91Y2hFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgc3dpcGVSaWdodCA9IG5ldyBFdmVudEVtaXR0ZXI8VG91Y2hFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgc3dpcGVEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxUb3VjaEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBzd2lwZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd4Q2RrVG91Y2hSZXN1bHQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGVGb3JtSWQ6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIHhEb3duID0gbnVsbDtcclxuICB5RG93biA9IG51bGw7XHJcblxyXG5cclxuICBnZXRUb3VjaGVzKGV2dCk6IGFueSB7XHJcbiAgICByZXR1cm4gZXZ0LnRvdWNoZXMgfHwgICAgICAgICAgICAgLy8gYnJvd3NlciBBUElcclxuICAgICAgZXZ0Lm9yaWdpbmFsRXZlbnQudG91Y2hlczsgLy8galF1ZXJ5XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGVGb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuX2FkZEV2ZW50cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlVG91Y2hTdGFydDogYW55O1xyXG5cclxuICBwcml2YXRlIF9oYW5kbGVUb3VjaFN0YXJ0RnVuYyhldnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpcnN0VG91Y2ggPSB0aGlzLmdldFRvdWNoZXMoZXZ0KVswXTtcclxuICAgIHRoaXMueERvd24gPSBmaXJzdFRvdWNoLmNsaWVudFg7XHJcbiAgICB0aGlzLnlEb3duID0gZmlyc3RUb3VjaC5jbGllbnRZO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlVG91Y2hNb3ZlOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVRvdWNoTW92ZUZ1bmMoZXZ0KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMueERvd24gfHwgIXRoaXMueURvd24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB4VXAgPSBldnQudG91Y2hlc1swXS5jbGllbnRYO1xyXG4gICAgbGV0IHlVcCA9IGV2dC50b3VjaGVzWzBdLmNsaWVudFk7XHJcblxyXG4gICAgbGV0IHhEaWZmID0gdGhpcy54RG93biAtIHhVcDtcclxuICAgIGxldCB5RGlmZiA9IHRoaXMueURvd24gLSB5VXA7XHJcbiAgICBsZXQgZGlyZWN0aW9uOiBzdHJpbmcgPSAndXAnO1xyXG4gICAgaWYgKE1hdGguYWJzKHhEaWZmKSA+IE1hdGguYWJzKHlEaWZmKSkgey8qbW9zdCBzaWduaWZpY2FudCovXHJcbiAgICAgIGlmICh4RGlmZiA+IDApIHtcclxuICAgICAgICAvKiBsZWZ0IHN3aXBlICovXHJcbiAgICAgICAgdGhpcy5zd2lwZUxlZnQuZW1pdChldnQpO1xyXG4gICAgICAgIGRpcmVjdGlvbiA9ICdsZWZ0JztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvKiByaWdodCBzd2lwZSAqL1xyXG4gICAgICAgIHRoaXMuc3dpcGVSaWdodC5lbWl0KGV2dCk7XHJcbiAgICAgICAgZGlyZWN0aW9uID0gJ3JpZ2h0JztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHlEaWZmID4gMCkge1xyXG4gICAgICAgIC8qIHVwIHN3aXBlICovXHJcbiAgICAgICAgdGhpcy5zd2lwZVVwLmVtaXQoZXZ0KTtcclxuICAgICAgICBkaXJlY3Rpb24gPSAndXAnO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvKiBkb3duIHN3aXBlICovXHJcbiAgICAgICAgdGhpcy5zd2lwZURvd24uZW1pdChldnQpO1xyXG4gICAgICAgIGRpcmVjdGlvbiA9ICdkb3duJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zd2lwZS5lbWl0KHtldmVudDogZXZ0LCBkaXJlY3Rpb259KTtcclxuICAgIC8qIHJlc2V0IHZhbHVlcyAqL1xyXG4gICAgdGhpcy54RG93biA9IG51bGw7XHJcbiAgICB0aGlzLnlEb3duID0gbnVsbDtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9hZGRFdmVudHMoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5faGFuZGxlVG91Y2hNb3ZlID0gdGhpcy5faGFuZGxlVG91Y2hNb3ZlRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgdGhpcy5faGFuZGxlVG91Y2hTdGFydCA9IHRoaXMuX2hhbmRsZVRvdWNoU3RhcnRGdW5jLmJpbmQodGhpcyk7XHJcblxyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LCBmYWxzZSk7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5faGFuZGxlVG91Y2hNb3ZlLCBmYWxzZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LCBmYWxzZSk7XHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5faGFuZGxlVG91Y2hNb3ZlLCBmYWxzZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0ZUZvcm1JZCkpIHtcclxuICAgICAgdGhpcy5fcmVtb3ZlRXZlbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOZ3hDZGtUb3VjaFJlc3VsdCB7XHJcbiAgZXZlbnQ6IFRvdWNoRXZlbnQ7XHJcbiAgZGlyZWN0aW9uOiBzdHJpbmc7XHJcbn1cclxuIl19