@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
97 lines • 12.8 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { Directive, ElementRef, Inject, Input, NgZone, Output, OnInit, OnDestroy, } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Subject, fromEvent, animationFrameScheduler, interval } from 'rxjs';
import { map, switchMap, takeUntil, throttle } from 'rxjs/operators';
/**
* @hidden
* @internal
*/
let IgxColumnResizerDirective = class IgxColumnResizerDirective {
constructor(element, document, zone) {
this.element = element;
this.document = document;
this.zone = zone;
this.restrictHResizeMin = Number.MIN_SAFE_INTEGER;
this.restrictHResizeMax = Number.MAX_SAFE_INTEGER;
this.resizeEnd = new Subject();
this.resizeStart = new Subject();
this.resize = new Subject();
this._destroy = new Subject();
this.resizeStart.pipe(map((event) => event.clientX), takeUntil(this._destroy), switchMap((offset) => this.resize.pipe(map((event) => event.clientX - offset), takeUntil(this.resizeEnd), takeUntil(this._destroy)))).subscribe((pos) => {
const left = this._left + pos;
const min = this._left - this.restrictHResizeMin;
const max = this._left + this.restrictHResizeMax;
this.left = left < min ? min : left;
if (left > max) {
this.left = max;
}
});
}
ngOnInit() {
this.zone.runOutsideAngular(() => {
fromEvent(this.document.defaultView, 'mousemove').pipe(throttle(() => interval(0, animationFrameScheduler)), takeUntil(this._destroy)).subscribe((res) => this.onMousemove(res));
fromEvent(this.document.defaultView, 'mouseup').pipe(takeUntil(this._destroy))
.subscribe((res) => this.onMouseup(res));
});
}
ngOnDestroy() {
this._destroy.next(true);
this._destroy.complete();
}
set left(val) {
requestAnimationFrame(() => this.element.nativeElement.style.left = val + 'px');
}
set top(val) {
requestAnimationFrame(() => this.element.nativeElement.style.top = val + 'px');
}
onMouseup(event) {
this.resizeEnd.next(event);
this.resizeEnd.complete();
}
onMousedown(event) {
event.preventDefault();
const parent = this.element.nativeElement.parentElement.parentElement;
this.left = this._left = event.clientX - parent.getBoundingClientRect().left;
this.top = event.target.getBoundingClientRect().top - parent.getBoundingClientRect().top;
this.resizeStart.next(event);
}
onMousemove(event) {
event.preventDefault();
this.resize.next(event);
}
};
IgxColumnResizerDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: NgZone }
];
__decorate([
Input(),
__metadata("design:type", Number)
], IgxColumnResizerDirective.prototype, "restrictHResizeMin", void 0);
__decorate([
Input(),
__metadata("design:type", Number)
], IgxColumnResizerDirective.prototype, "restrictHResizeMax", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxColumnResizerDirective.prototype, "resizeEnd", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxColumnResizerDirective.prototype, "resizeStart", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxColumnResizerDirective.prototype, "resize", void 0);
IgxColumnResizerDirective = __decorate([
Directive({
selector: '[igxResizer]'
}),
__param(1, Inject(DOCUMENT)),
__metadata("design:paramtypes", [ElementRef, Object, NgZone])
], IgxColumnResizerDirective);
export { IgxColumnResizerDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2dyaWRzL3Jlc2l6aW5nL3Jlc2l6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRTs7O0dBR0c7QUFJSCxJQUFhLHlCQUF5QixHQUF0QyxNQUFhLHlCQUF5QjtJQW9CbEMsWUFBbUIsT0FBbUIsRUFBMkIsUUFBUSxFQUFTLElBQVk7UUFBM0UsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUEyQixhQUFRLEdBQVIsUUFBUSxDQUFBO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWpCdkYsdUJBQWtCLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBR3JELHVCQUFrQixHQUFXLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUdyRCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUcvQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHakMsV0FBTSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHM0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFJdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ2pCLEdBQUcsQ0FBQyxDQUFD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Q0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBRXRFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLElBQUksQ0FBQztRQUM3RSxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO1FBRXpGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNiLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0osQ0FBQTs7WUF0RStCLFVBQVU7NENBQUcsTUFBTSxTQUFDLFFBQVE7WUFBZ0MsTUFBTTs7QUFqQjlGO0lBREMsS0FBSyxFQUFFOztxRUFDb0Q7QUFHNUQ7SUFEQyxLQUFLLEVBQUU7O3FFQUNvRDtBQUc1RDtJQURDLE1BQU0sRUFBRTs7NERBQzZCO0FBR3RDO0lBREMsTUFBTSxFQUFFOzs4REFDK0I7QUFHeEM7SUFEQyxNQUFNLEVBQUU7O3lEQUMwQjtBQWYxQix5QkFBeUI7SUFIckMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGNBQWM7S0FDM0IsQ0FBQztJQXFCMkMsV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7cUNBQTdCLFVBQVUsVUFBa0QsTUFBTTtHQXBCckYseUJBQXlCLENBMEZyQztTQTFGWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3V0cHV0LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRocm90dGxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSZXNpemVyXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uUmVzaXplckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlc3RyaWN0SFJlc2l6ZU1pbjogbnVtYmVyID0gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXN0cmljdEhSZXNpemVNYXg6IG51bWJlciA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlc2l6ZUVuZCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZXNpemVTdGFydCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZXNpemUgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBwcml2YXRlIF9sZWZ0O1xuICAgIHByaXZhdGUgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIEBJbmplY3QoRE9DVU1FTlQpIHB1YmxpYyBkb2N1bWVudCwgcHVibGljIHpvbmU6IE5nWm9uZSkge1xuXG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmNsaWVudFgpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvZmZzZXQpID0+IHRoaXMucmVzaXplLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuY2xpZW50WCAtIG9mZnNldCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucmVzaXplRW5kKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSlcbiAgICAgICAgICAgICkpXG4gICAgICAgICkuc3Vic2NyaWJlKChwb3MpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMuX2xlZnQgKyBwb3M7XG5cbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuX2xlZnQgLSB0aGlzLnJlc3RyaWN0SFJlc2l6ZU1pbjtcbiAgICAgICAgICAgIGNvbnN0IG1heCA9IHRoaXMuX2xlZnQgKyB0aGlzLnJlc3RyaWN0SFJlc2l6ZU1heDtcblxuICAgICAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdCA8IG1pbiA/IG1pbiA6IGxlZnQ7XG5cbiAgICAgICAgICAgIGlmIChsZWZ0ID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0ID0gbWF4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcsICdtb3VzZW1vdmUnKS5waXBlKFxuICAgICAgICAgICAgICAgIHRocm90dGxlKCgpID0+IGludGVydmFsKDAsIGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgocmVzKSA9PiB0aGlzLm9uTW91c2Vtb3ZlKHJlcykpO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldywgJ21vdXNldXAnKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHRoaXMub25Nb3VzZXVwKHJlcykpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBsZWZ0KHZhbCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IHZhbCArICdweCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdG9wKHZhbCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gdmFsICsgJ3B4Jyk7XG4gICAgfVxuXG4gICAgb25Nb3VzZXVwKGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplRW5kLm5leHQoZXZlbnQpO1xuICAgICAgICB0aGlzLnJlc2l6ZUVuZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9uTW91c2Vkb3duKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgICAgICB0aGlzLmxlZnQgPSB0aGlzLl9sZWZ0ID0gZXZlbnQuY2xpZW50WCAtIHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICB0aGlzLnRvcCA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgLSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgb25Nb3VzZW1vdmUoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5yZXNpemUubmV4dChldmVudCk7XG4gICAgfVxufVxuIl19