kwikid-agent-dashboard
Version:
KwikID's EKYC Agent Map View Module.
111 lines • 16.3 kB
JavaScript
import { __awaiter, __decorate } from "tslib";
import { Component, ViewChild } from "@angular/core";
import { logMethod } from "kwikid-toolkit";
import * as i0 from "@angular/core";
import * as i1 from "@taiga-ui/core";
import * as i2 from "@angular/common";
export class BottomSheetComponent {
constructor() {
this.isSwipeActive = false;
this.swipeDirection = null;
this.height = 320; // Initial height of the bottom sheet
this.minHeight = 54; // Initial height of the bottom sheet
}
ngOnInit() {
return __awaiter(this, void 0, void 0, function* () { });
}
onMouseStart(event) {
event.preventDefault();
this.isSwipeActive = true;
this.startY = event.clientY;
this.startHeight = this.parentElement.nativeElement.clientHeight;
}
onMouseMove(event) {
if (this.isSwipeActive) {
this.resize(event.clientY);
}
}
onMouseEnd(event) {
this.isSwipeActive = false;
}
onTouchStart(event) {
event.preventDefault();
this.isSwipeActive = true;
this.startY = event.touches[0].clientY;
this.startHeight = this.parentElement.nativeElement.clientHeight;
}
onTouchMove(event) {
event.preventDefault(); // Prevent scrolling while dragging
if (this.isSwipeActive) {
this.resize(event.touches[0].clientY);
}
}
onTouchEnd(event) {
this.isSwipeActive = false;
}
resize(clientY) {
const deltaY = clientY - this.startY;
const newHeight = this.startHeight - deltaY;
if (newHeight > this.startHeight) {
this.swipeDirection = "UP";
}
if (newHeight < this.startHeight) {
this.swipeDirection = "DOWN";
}
const maxHeight = window.innerHeight - 180;
if (newHeight >= this.minHeight && newHeight <= maxHeight) {
// this.height = newHeight;
this.parentElement.nativeElement.style.height = `${newHeight}px`;
}
else if (newHeight < this.minHeight) {
this.parentElement.nativeElement.style.height = `${this.minHeight}px`;
}
else if (newHeight > maxHeight) {
this.parentElement.nativeElement.style.height = `${maxHeight}px`;
}
}
preventMouseOrTouchEvents(event) {
event.stopPropagation();
return undefined;
}
removeEventListeners() {
document.removeEventListener("mousedown", this.onMouseStart.bind(this));
document.removeEventListener("mousemove", this.onMouseMove.bind(this));
document.removeEventListener("mouseup", this.onMouseEnd.bind(this));
document.removeEventListener("touchend", this.onTouchMove.bind(this));
document.removeEventListener("touchmove", this.onTouchEnd.bind(this));
document.removeEventListener("touchstart", this.onTouchEnd.bind(this));
}
}
/** @nocollapse */ BottomSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BottomSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ BottomSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BottomSheetComponent, selector: "bottom-sheet", viewQueries: [{ propertyName: "parentElement", first: true, predicate: ["parentElement"], descendants: true, static: true }], ngImport: i0, template: "<div\n #parentElement\n class=\"bottom-sheet\"\n [style.height.px]=\"height\"\n>\n <div\n class=\"top-holder\"\n (mousedown)=\"onMouseStart($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseup)=\"onMouseEnd($event)\"\n (touchend)=\"onTouchEnd($event)\"\n (touchmove)=\"onTouchMove($event)\"\n (touchstart)=\"onTouchStart($event)\"\n >\n <tui-svg\n *ngIf=\"isSwipeActive && swipeDirection == 'UP'\"\n src=\"tuiIconChevronUpLarge\"\n ></tui-svg>\n <tui-svg\n *ngIf=\"isSwipeActive && swipeDirection == 'DOWN'\"\n src=\"tuiIconChevronDownLarge\"\n ></tui-svg>\n <tui-svg\n *ngIf=\"!isSwipeActive\"\n src=\"tuiIconHrLarge\"\n ></tui-svg>\n </div>\n <!-- Use ng-content to project content into the component -->\n <div class=\"bottom-sheet-content-container\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".bottom-sheet{position:absolute;bottom:0;left:0;width:100%;background-color:#fff;box-shadow:0 -2px 6px #0000001a;overflow:auto;resize:vertical;border-top-right-radius:1rem;border-top-left-radius:1rem;display:flex;flex-direction:column;z-index:5;padding-top:1rem}.top-holder{width:100%;height:40px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;cursor:grab;z-index:1}.top-holder:focus,.top-holder:focus-within,.top-holder:active{cursor:grabbing}.resize-handle{position:absolute;bottom:0;left:0;width:100%;height:10px;cursor:ns-resize;background-color:transparent}.bottom-sheet-content-container{width:100%;height:100%;position:relative;z-index:1;overflow:auto}\n"], components: [{ type: i1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
__decorate([
logMethod
], BottomSheetComponent.prototype, "onMouseStart", null);
__decorate([
logMethod
], BottomSheetComponent.prototype, "onMouseEnd", null);
__decorate([
logMethod
], BottomSheetComponent.prototype, "onTouchStart", null);
__decorate([
logMethod
], BottomSheetComponent.prototype, "onTouchMove", null);
__decorate([
logMethod
], BottomSheetComponent.prototype, "onTouchEnd", null);
__decorate([
logMethod
], BottomSheetComponent.prototype, "preventMouseOrTouchEvents", null);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BottomSheetComponent, decorators: [{
type: Component,
args: [{
selector: "bottom-sheet",
templateUrl: "./bottom-sheet.component.html",
styleUrls: ["./bottom-sheet.component.scss"]
}]
}], ctorParameters: function () { return []; }, propDecorators: { parentElement: [{
type: ViewChild,
args: ["parentElement", { static: true }]
}], onMouseStart: [], onMouseEnd: [], onTouchStart: [], onTouchMove: [], onTouchEnd: [], preventMouseOrTouchEvents: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQvc3JjL2xpYi92Mi9jb21wb25lbnRzL2JvdHRvbS1zaGVldC9ib3R0b20tc2hlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YyL2NvbXBvbmVudHMvYm90dG9tLXNoZWV0L2JvdHRvbS1zaGVldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU8zQyxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CO1FBSUEsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFdEIsbUJBQWMsR0FBa0IsSUFBSSxDQUFDO1FBTXJDLFdBQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxxQ0FBcUM7UUFFbkQsY0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztJQWR0QyxDQUFDO0lBRVYsUUFBUTs4REFBSSxDQUFDO0tBQUE7SUFlbkIsWUFBWSxDQUFDLEtBQWlCO1FBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDbkUsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFB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QUFDLENBQUMsQ0FBQztRQUN0RSxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7O3FJQXBHVSxvQkFBb0I7eUhBQXBCLG9CQUFvQixrTENSakMsMjNCQWdDQTtBREhFO0lBREMsU0FBUzt3REFRVDtBQVNEO0lBREMsU0FBUztzREFHVDtBQUdEO0lBREMsU0FBUzt3REFRVDtBQUdEO0lBREMsU0FBUzt1REFNVDtBQUdEO0lBREMsU0FBUztzREFHVDtBQXlCRDtJQURDLFNBQVM7cUVBS1Q7NEZBM0ZVLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsU0FBUyxFQUFFLENBQUMsK0JBQStCLENBQUM7aUJBQzdDOzBFQUdDLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9CNUMsWUFBWSxNQWdCWixVQUFVLE1BS1YsWUFBWSxNQVVaLFdBQVcsTUFRWCxVQUFVLE1BMkJWLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbG9nTWV0aG9kIH0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJib3R0b20tc2hlZXRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9ib3R0b20tc2hlZXQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2JvdHRvbS1zaGVldC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBCb3R0b21TaGVldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoXCJwYXJlbnRFbGVtZW50XCIsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHBhcmVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge31cblxuICBpc1N3aXBlQWN0aXZlID0gZmFsc2U7XG5cbiAgc3dpcGVEaXJlY3Rpb246IFwiVVBcIiB8IFwiRE9XTlwiID0gbnVsbDtcblxuICBzdGFydFk6IG51bWJlcjtcblxuICBzdGFydEhlaWdodDogbnVtYmVyO1xuXG4gIGhlaWdodCA9IDMyMDsgLy8gSW5pdGlhbCBoZWlnaHQgb2YgdGhlIGJvdHRvbSBzaGVldFxuXG4gIG1pbkhlaWdodCA9IDU0OyAvLyBJbml0aWFsIGhlaWdodCBvZiB0aGUgYm90dG9tIHNoZWV0XG5cbiAgQGxvZ01ldGhvZFxuICBvbk1vdXNlU3RhcnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy5pc1N3aXBlQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuY2xpZW50WTtcbiAgICB0aGlzLnN0YXJ0SGVpZ2h0ID0gdGhpcy5wYXJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1N3aXBlQWN0aXZlKSB7XG4gICAgICB0aGlzLnJlc2l6ZShldmVudC5jbGllbnRZKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG9uTW91c2VFbmQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmlzU3dpcGVBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgb25Ub3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuaXNTd2lwZUFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICB0aGlzLnN0YXJ0SGVpZ2h0ID0gdGhpcy5wYXJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBvblRvdWNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIFByZXZlbnQgc2Nyb2xsaW5nIHdoaWxlIGRyYWdnaW5nXG4gICAgaWYgKHRoaXMuaXNTd2lwZUFjdGl2ZSkge1xuICAgICAgdGhpcy5yZXNpemUoZXZlbnQudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzU3dpcGVBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2l6ZShjbGllbnRZOiBudW1iZXIpIHtcbiAgICBjb25zdCBkZWx0YVkgPSBjbGllbnRZIC0gdGhpcy5zdGFydFk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gdGhpcy5zdGFydEhlaWdodCAtIGRlbHRhWTtcblxuICAgIGlmIChuZXdIZWlnaHQgPiB0aGlzLnN0YXJ0SGVpZ2h0KSB7XG4gICAgICB0aGlzLnN3aXBlRGlyZWN0aW9uID0gXCJVUFwiO1xuICAgIH1cbiAgICBpZiAobmV3SGVpZ2h0IDwgdGhpcy5zdGFydEhlaWdodCkge1xuICAgICAgdGhpcy5zd2lwZURpcmVjdGlvbiA9IFwiRE9XTlwiO1xuICAgIH1cblxuICAgIGNvbnN0IG1heEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDE4MDtcbiAgICBpZiAobmV3SGVpZ2h0ID49IHRoaXMubWluSGVpZ2h0ICYmIG5ld0hlaWdodCA8PSBtYXhIZWlnaHQpIHtcbiAgICAgIC8vIHRoaXMuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7bmV3SGVpZ2h0fXB4YDtcbiAgICB9IGVsc2UgaWYgKG5ld0hlaWdodCA8IHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHt0aGlzLm1pbkhlaWdodH1weGA7XG4gICAgfSBlbHNlIGlmIChuZXdIZWlnaHQgPiBtYXhIZWlnaHQpIHtcbiAgICAgIHRoaXMucGFyZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwcmV2ZW50TW91c2VPclRvdWNoRXZlbnRzKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbk1vdXNlU3RhcnQuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcykpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25Nb3VzZUVuZC5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgdGhpcy5vblRvdWNoTW92ZS5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRoaXMub25Ub3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCB0aGlzLm9uVG91Y2hFbmQuYmluZCh0aGlzKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3BhcmVudEVsZW1lbnRcbiAgY2xhc3M9XCJib3R0b20tc2hlZXRcIlxuICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRvcC1ob2xkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25Nb3VzZVN0YXJ0KCRldmVudClcIlxuICAgIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwib25Nb3VzZUVuZCgkZXZlbnQpXCJcbiAgICAodG91Y2hlbmQpPVwib25Ub3VjaEVuZCgkZXZlbnQpXCJcbiAgICAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIlxuICAgICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCJcbiAgPlxuICAgIDx0dWktc3ZnXG4gICAgICAqbmdJZj1cImlzU3dpcGVBY3RpdmUgJiYgc3dpcGVEaXJlY3Rpb24gPT0gJ1VQJ1wiXG4gICAgICBzcmM9XCJ0dWlJY29uQ2hldnJvblVwTGFyZ2VcIlxuICAgID48L3R1aS1zdmc+XG4gICAgPHR1aS1zdmdcbiAgICAgICpuZ0lmPVwiaXNTd2lwZUFjdGl2ZSAmJiBzd2lwZURpcmVjdGlvbiA9PSAnRE9XTidcIlxuICAgICAgc3JjPVwidHVpSWNvbkNoZXZyb25Eb3duTGFyZ2VcIlxuICAgID48L3R1aS1zdmc+XG4gICAgPHR1aS1zdmdcbiAgICAgICpuZ0lmPVwiIWlzU3dpcGVBY3RpdmVcIlxuICAgICAgc3JjPVwidHVpSWNvbkhyTGFyZ2VcIlxuICAgID48L3R1aS1zdmc+XG4gIDwvZGl2PlxuICA8IS0tIFVzZSBuZy1jb250ZW50IHRvIHByb2plY3QgY29udGVudCBpbnRvIHRoZSBjb21wb25lbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJib3R0b20tc2hlZXQtY29udGVudC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=