@smarterplan/ngx-smarterplan-locations 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/locations/map/map-popup/map-popup.component.mjs +11 -9
- package/esm2022/lib/components/locations/map/map.component.mjs +60 -39
- package/fesm2022/smarterplan-ngx-smarterplan-locations.mjs +69 -46
- package/fesm2022/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/lib/components/locations/map/map.component.d.ts +7 -4
- package/package.json +2 -2
|
@@ -27,12 +27,14 @@ export class MapPopupComponent {
|
|
|
27
27
|
this.marker.openPopup();
|
|
28
28
|
this.isOnPopup = false;
|
|
29
29
|
this.popuparea = document.querySelector(".leaflet-popup");
|
|
30
|
-
this.popuparea
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
|
|
30
|
+
if (this.popuparea) {
|
|
31
|
+
this.popuparea.addEventListener("mouseleave", () => {
|
|
32
|
+
this.closePopup();
|
|
33
|
+
});
|
|
34
|
+
this.popuparea.addEventListener("mouseover", () => {
|
|
35
|
+
this.isOnPopup = true;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
36
38
|
this.marker.on("mouseout", () => {
|
|
37
39
|
this.closePopup();
|
|
38
40
|
});
|
|
@@ -62,10 +64,10 @@ export class MapPopupComponent {
|
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
66
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapPopupComponent, deps: [{ token: i1.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapPopupComponent, selector: "lib-map-popup", ngImport: i0, template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
67
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapPopupComponent, selector: "lib-map-popup", ngImport: i0, template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [":host{display:none!important}:host-context(.leaflet-popup-content){display:block!important}.map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
66
68
|
}
|
|
67
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapPopupComponent, decorators: [{
|
|
68
70
|
type: Component,
|
|
69
|
-
args: [{ selector: 'lib-map-popup', template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"] }]
|
|
71
|
+
args: [{ selector: 'lib-map-popup', template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [":host{display:none!important}:host-context(.leaflet-popup-content){display:block!important}.map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"] }]
|
|
70
72
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i0.NgZone }] });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLXBvcHVwL21hcC1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvY29tcG9uZW50cy9sb2NhdGlvbnMvbWFwL21hcC1wb3B1cC9tYXAtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7Ozs7QUFVMUQsTUFBTSxPQUFPLGlCQUFpQjtJQVlOO0lBQXdCO0lBVjVDLEtBQUssQ0FBUTtJQUViLE1BQU0sQ0FBUztJQUVmLFNBQVMsQ0FBYztJQUV2QixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRWxCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFFcEIsWUFBb0IsTUFBYyxFQUFVLE1BQWM7UUFBdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBSSxDQUFDO0lBRS9ELFFBQVE7UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFnQixDQUFDO1FBRXpFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsc0NBQXNDO1FBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFZO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTthQUMxQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBcEVRLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ1Y5QixpbkJBV0E7OzRGRERhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBOZ1pvbmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tICdsZWFmbGV0JztcclxuaW1wb3J0IHsgU3BhY2UsIFZpc2l0IH0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW1hcC1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLXBvcHVwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcFBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBzcGFjZTogU3BhY2U7XHJcblxyXG4gICAgbWFya2VyOiBNYXJrZXI7XHJcblxyXG4gICAgcG9wdXBhcmVhOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpc09uUG9wdXAgPSBmYWxzZTtcclxuXHJcbiAgICBpc011c2V1bVVzZXIgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMubWFya2VyLm9uKFwiY2xpY2tcIiwgKCkgPT4gdGhpcy5vbkNsaWNrVmlzaXRGaXJzdCgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5tYXJrZXIub24oXCJtb3VzZW92ZXJcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzT25Qb3B1cCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5tYXJrZXIuaXNQb3B1cE9wZW4oKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5Qb3B1cCgpIHtcclxuICAgICAgICB0aGlzLm1hcmtlci5vcGVuUG9wdXAoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc09uUG9wdXAgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvcHVwYXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubGVhZmxldC1wb3B1cFwiKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9wdXBhcmVhKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdXBhcmVhLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3B1cCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5wb3B1cGFyZWEuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3ZlclwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzT25Qb3B1cCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hcmtlci5vbihcIm1vdXNlb3V0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcHVwKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQb3B1cCgpIHtcclxuICAgICAgICB0aGlzLmlzT25Qb3B1cCA9IGZhbHNlO1xyXG4gICAgICAgIC8qKiBXZSB3YW50IHRvIHdhaXQgdG8gYXZvaWQgZ2xpdGNoICovXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09uUG9wdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFya2VyLmNsb3NlUG9wdXAoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja1Zpc2l0Rmlyc3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BhY2UudmlzaXRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk5vIHNwYWNlIHRvIHZpc2l0ICFcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vblZpc2l0Q2xpY2sodGhpcy5zcGFjZS52aXNpdHNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblZpc2l0Q2xpY2sodmlzaXQ6IFZpc2l0KSB7XHJcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1widmlzaXRcIiwgdGhpcy5zcGFjZS5pZF0sIHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IG1vZGVsM0Q6IHZpc2l0Lm1vZGVsM2QgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgaWQ9XCJtYXAtcG9wdXBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYXAtcG9wdXAtaGVhZGVyXCIgKGNsaWNrKT1cIm9uQ2xpY2tWaXNpdEZpcnN0KClcIiBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiPlxyXG4gICAgICAgIDxpbWcgW3NyY109XCJzcGFjZS5hbm5leGVzXCIgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1hcC1wb3B1cC1kZXRhaWxzXCI+XHJcbiAgICA8aDEgKGNsaWNrKT1cIm9uQ2xpY2tWaXNpdEZpcnN0KClcIiBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiPnt7c3BhY2UubmFtZX19PC9oMT5cclxuICAgIDxzcGFuIGNsYXNzPVwibWFwLXBvcHVwLWFkZHJlc3NcIj57e3NwYWNlLmFkZHJlc3Nlc319PC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nRm9yPVwibGV0IHZpc2l0IG9mIHNwYWNlLnZpc2l0c1wiIGNsYXNzPVwibWFwLXBvcHVwLXZpc2l0XCIgKGNsaWNrKT1cIm9uVmlzaXRDbGljayh2aXNpdClcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiPuKepCB7eyB2aXNpdC5uYW1lID8gdmlzaXQubmFtZSA6IHNwYWNlLm5hbWV9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, ViewContainerRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { latLng, marker, tileLayer, latLngBounds, point, Marker, icon, } from "leaflet";
|
|
3
3
|
import { MapPopupComponent } from './map-popup/map-popup.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -18,11 +18,9 @@ const iconDefault = icon({
|
|
|
18
18
|
});
|
|
19
19
|
Marker.prototype.options.icon = iconDefault;
|
|
20
20
|
export class MapComponent {
|
|
21
|
-
|
|
22
|
-
constructor(viewContainerRef) {
|
|
23
|
-
this.viewContainerRef = viewContainerRef;
|
|
24
|
-
}
|
|
21
|
+
constructor() { }
|
|
25
22
|
spaces;
|
|
23
|
+
popupContainer;
|
|
26
24
|
options = {
|
|
27
25
|
layers: [
|
|
28
26
|
tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
|
@@ -35,57 +33,80 @@ export class MapComponent {
|
|
|
35
33
|
};
|
|
36
34
|
layers = [];
|
|
37
35
|
map;
|
|
36
|
+
isViewInitialized = false;
|
|
38
37
|
ngOnChanges(changes) {
|
|
39
38
|
if (changes.spaces) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!changes.spaces.currentValue) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
// Filtering out spaces without lat/longitudes
|
|
46
|
-
for (const s of changes.spaces.currentValue) {
|
|
47
|
-
if (s.latitude === null || s.longitude === null) {
|
|
48
|
-
console.log(`${s.name} has not coordinates for ${s.addresses}`);
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
// We use the popup system from leaflet, as it packs a few improvements
|
|
52
|
-
// on using bootstrap: autoclose other popups, closing option.
|
|
53
|
-
const m = marker([s.latitude, s.longitude]);
|
|
54
|
-
m.bindPopup(this.createPopupComponent(s, m));
|
|
55
|
-
nm.push(m);
|
|
56
|
-
bd.push(latLng(s.latitude, s.longitude));
|
|
39
|
+
if (this.isViewInitialized) {
|
|
40
|
+
this.rebuildLayers();
|
|
57
41
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this.isViewInitialized = true;
|
|
46
|
+
this.rebuildLayers();
|
|
47
|
+
}
|
|
48
|
+
rebuildLayers() {
|
|
49
|
+
if (!this.spaces) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const nm = [];
|
|
53
|
+
const bd = [];
|
|
54
|
+
// Clear previous components to avoid leakage.
|
|
55
|
+
// this.viewContainerRef.clear(); // Removed as we use the dedicated container
|
|
56
|
+
if (this.popupContainer) {
|
|
57
|
+
this.popupContainer.clear();
|
|
58
|
+
}
|
|
59
|
+
// Filtering out spaces without lat/longitudes
|
|
60
|
+
for (const s of this.spaces) {
|
|
61
|
+
if (s.latitude === null || s.longitude === null) {
|
|
62
|
+
console.log(`${s.name} has not coordinates for ${s.addresses}`);
|
|
63
|
+
continue;
|
|
69
64
|
}
|
|
65
|
+
// We use the popup system from leaflet, as it packs a few improvements
|
|
66
|
+
// on using bootstrap: autoclose other popups, closing option.
|
|
67
|
+
const m = marker([s.latitude, s.longitude]);
|
|
68
|
+
m.bindPopup(this.createPopupComponent(s, m));
|
|
69
|
+
nm.push(m);
|
|
70
|
+
bd.push(latLng(s.latitude, s.longitude));
|
|
71
|
+
}
|
|
72
|
+
// Note how we set the layers in one assignment, in order to have leaflet
|
|
73
|
+
// detects the change correctly
|
|
74
|
+
// We also set the bounds afterward, for the map to be properly zoomed and
|
|
75
|
+
// centered
|
|
76
|
+
this.layers = nm;
|
|
77
|
+
if (this.map && bd.length > 0) {
|
|
78
|
+
this.map.fitBounds(latLngBounds(bd), {
|
|
79
|
+
padding: point(48, 48),
|
|
80
|
+
maxZoom: 12,
|
|
81
|
+
animate: true,
|
|
82
|
+
});
|
|
70
83
|
}
|
|
71
84
|
}
|
|
85
|
+
// Previous ngOnChanges logic was moved to rebuildLayers()
|
|
72
86
|
onMapReady(map) {
|
|
73
87
|
this.map = map;
|
|
74
88
|
}
|
|
75
89
|
createPopupComponent(space, marker) {
|
|
76
|
-
|
|
90
|
+
if (!this.popupContainer) {
|
|
91
|
+
console.warn("Popup container not ready yet");
|
|
92
|
+
return "";
|
|
93
|
+
}
|
|
94
|
+
const comp = this.popupContainer.createComponent(MapPopupComponent);
|
|
77
95
|
comp.instance.space = space;
|
|
78
96
|
comp.instance.marker = marker;
|
|
79
97
|
comp.changeDetectorRef.detectChanges();
|
|
80
98
|
return comp.location.nativeElement;
|
|
81
99
|
}
|
|
82
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, deps: [
|
|
83
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapComponent, selector: "lib-map", inputs: { spaces: "spaces" }, usesOnChanges: true, ngImport: i0, template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapComponent, selector: "lib-map", inputs: { spaces: "spaces" }, viewQueries: [{ propertyName: "popupContainer", first: true, predicate: ["popupContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\n\n<!-- Hidden container for popup components to avoid display leakage and manage lifecycle -->\n<div style=\"display: none\">\n <div #popupContainer></div>\n</div>", styles: [":host ::ng-deep lib-map-popup{display:none!important}:host ::ng-deep .leaflet-popup-content lib-map-popup{display:block!important}\n"], dependencies: [{ kind: "directive", type: i1.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i1.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }] });
|
|
84
102
|
}
|
|
85
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, decorators: [{
|
|
86
104
|
type: Component,
|
|
87
|
-
args: [{ selector: 'lib-map', template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\
|
|
88
|
-
}], ctorParameters: () => [
|
|
105
|
+
args: [{ selector: 'lib-map', template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\n\n<!-- Hidden container for popup components to avoid display leakage and manage lifecycle -->\n<div style=\"display: none\">\n <div #popupContainer></div>\n</div>", styles: [":host ::ng-deep lib-map-popup{display:none!important}:host ::ng-deep .leaflet-popup-content lib-map-popup{display:block!important}\n"] }]
|
|
106
|
+
}], ctorParameters: () => [], propDecorators: { spaces: [{
|
|
89
107
|
type: Input
|
|
108
|
+
}], popupContainer: [{
|
|
109
|
+
type: ViewChild,
|
|
110
|
+
args: ['popupContainer', { read: ViewContainerRef, static: true }]
|
|
90
111
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFzRCxNQUFNLGVBQWUsQ0FBQztBQUUvRyxPQUFPLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxHQUNQLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFJcEUsTUFBTSxhQUFhLEdBQUcsMkJBQTJCLENBQUM7QUFDbEQsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUM7QUFDekMsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUM7QUFDN0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLGFBQWE7SUFDYixPQUFPO0lBQ1AsU0FBUztJQUNULFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDckIsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hCLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDdkIsQ0FBQyxDQUFDO0FB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QixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQzt3R0F0RVEsWUFBWTs0RkFBWixZQUFZLGtHQ25DekIsc01BQ2dFOzs0RkRrQ25ELFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0ksU0FBUztxRkFRVixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BhY2UgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgbGF0TG5nLFxyXG4gICAgbWFya2VyLFxyXG4gICAgdGlsZUxheWVyLFxyXG4gICAgTWFwLFxyXG4gICAgbGF0TG5nQm91bmRzLFxyXG4gICAgcG9pbnQsXHJcbiAgICBNYXJrZXIsXHJcbiAgICBpY29uLFxyXG59IGZyb20gXCJsZWFmbGV0XCI7XHJcbmltcG9ydCB7IE1hcFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtcG9wdXAvbWFwLXBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5cclxuY29uc3QgaWNvblJldGluYVVybCA9IFwiYXNzZXRzL21hcmtlci1pY29uLTJ4LnBuZ1wiO1xyXG5jb25zdCBpY29uVXJsID0gXCJhc3NldHMvbWFya2VyLWljb24ucG5nXCI7XHJcbmNvbnN0IHNoYWRvd1VybCA9IFwiYXNzZXRzL21hcmtlci1zaGFkb3cucG5nXCI7XHJcbmNvbnN0IGljb25EZWZhdWx0ID0gaWNvbih7XHJcbiAgICBpY29uUmV0aW5hVXJsLFxyXG4gICAgaWNvblVybCxcclxuICAgIHNoYWRvd1VybCxcclxuICAgIGljb25TaXplOiBbMjUsIDQxXSxcclxuICAgIGljb25BbmNob3I6IFsxMiwgNDFdLFxyXG4gICAgcG9wdXBBbmNob3I6IFsxLCAtMzRdLFxyXG4gICAgdG9vbHRpcEFuY2hvcjogWzE2LCAtMjhdLFxyXG4gICAgc2hhZG93U2l6ZTogWzQxLCA0MV0sXHJcbn0pO1xyXG5NYXJrZXIucHJvdG90eXBlLm9wdGlvbnMuaWNvbiA9IGljb25EZWZhdWx0O1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLW1hcCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL21hcC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikgeyB9XHJcblxyXG4gICAgQElucHV0KCkgc3BhY2VzOiBTcGFjZVtdO1xyXG5cclxuICAgIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbGF5ZXJzOiBbXHJcbiAgICAgICAgICAgIHRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmdcIiwge1xyXG4gICAgICAgICAgICAgICAgbWF4Wm9vbTogMTgsXHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbjogXCIuLi5cIixcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgXSxcclxuICAgICAgICB6b29tOiA1LjUsXHJcbiAgICAgICAgY2VudGVyOiBsYXRMbmcoNDcuMDYzOTQsIDIuNzc3MzYpLFxyXG4gICAgfTtcclxuXHJcbiAgICBsYXllcnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbWFwOiBhbnk7XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLnNwYWNlcykge1xyXG4gICAgICAgICAgICBjb25zdCBubSA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBiZCA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoIWNoYW5nZXMuc3BhY2VzLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEZpbHRlcmluZyBvdXQgc3BhY2VzIHdpdGhvdXQgbGF0L2xvbmdpdHVkZXNcclxuICAgICAgICAgICAgZm9yIChjb25zdCBzIG9mIGNoYW5nZXMuc3BhY2VzLmN1cnJlbnRWYWx1ZSBhcyBTcGFjZVtdKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocy5sYXRpdHVkZSA9PT0gbnVsbCB8fCBzLmxvbmdpdHVkZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtzLm5hbWV9IGhhcyBub3QgY29vcmRpbmF0ZXMgZm9yICR7cy5hZGRyZXNzZXN9YCxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSBwb3B1cCBzeXN0ZW0gZnJvbSBsZWFmbGV0LCBhcyBpdCBwYWNrcyBhIGZldyBpbXByb3ZlbWVudHNcclxuICAgICAgICAgICAgICAgIC8vIG9uIHVzaW5nIGJvb3RzdHJhcDogYXV0b2Nsb3NlIG90aGVyIHBvcHVwcywgY2xvc2luZyBvcHRpb24uXHJcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gbWFya2VyKFtzLmxhdGl0dWRlLCBzLmxvbmdpdHVkZV0pO1xyXG5cclxuICAgICAgICAgICAgICAgIG0uYmluZFBvcHVwKHRoaXMuY3JlYXRlUG9wdXBDb21wb25lbnQocywgbSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIG5tLnB1c2gobSk7XHJcbiAgICAgICAgICAgICAgICBiZC5wdXNoKGxhdExuZyhzLmxhdGl0dWRlLCBzLmxvbmdpdHVkZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIE5vdGUgaG93IHdlIHNldCB0aGUgbGF5ZXJzIGluIG9uZSBhc3NpZ25tZW50LCBpbiBvcmRlciB0byBoYXZlIGxlYWZsZXRcclxuICAgICAgICAgICAgLy8gZGV0ZWN0cyB0aGUgY2hhbmdlIGNvcnJlY3RseVxyXG4gICAgICAgICAgICAvLyBXZSBhbHNvIHNldCB0aGUgYm91bmRzIGFmdGVyd2FyZCwgZm9yIHRoZSBtYXAgdG8gYmUgcHJvcGVybHkgem9vbWVkIGFuZFxyXG4gICAgICAgICAgICAvLyBjZW50ZXJlZFxyXG4gICAgICAgICAgICB0aGlzLmxheWVycyA9IG5tO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXAgJiYgYmQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGxhdExuZ0JvdW5kcyhiZCksIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBwb2ludCg0OCwgNDgpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heFpvb206IDEyLFxyXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbk1hcFJlYWR5KG1hcDogTWFwKSB7XHJcbiAgICAgICAgdGhpcy5tYXAgPSBtYXA7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlUG9wdXBDb21wb25lbnQoc3BhY2U6IFNwYWNlLCBtYXJrZXI6IE1hcmtlcikge1xyXG4gICAgICAgIGNvbnN0IGNvbXAgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KE1hcFBvcHVwQ29tcG9uZW50KTtcclxuICAgICAgICBjb21wLmluc3RhbmNlLnNwYWNlID0gc3BhY2U7XHJcbiAgICAgICAgY29tcC5pbnN0YW5jZS5tYXJrZXIgPSBtYXJrZXI7XHJcbiAgICAgICAgY29tcC5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgcmV0dXJuIGNvbXAubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBbbGVhZmxldExheWVyc109XCJsYXllcnNcIiBbbGVhZmxldE9wdGlvbnNdPVwib3B0aW9uc1wiIChsZWFmbGV0TWFwUmVhZHkpPVwib25NYXBSZWFkeSgkYW55KCRldmVudCkpXCIgaWQ9XCJtYXBcIiBsZWFmbGV0XHJcbiAgICBzdHlsZT1cImhlaWdodDogNTAwcHg7IG1hcmdpbi10b3A6IDMwcHg7IHotaW5kZXg6IDE5NVwiPjwvZGl2PiJdfQ==
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1sb2NhdGlvbnMvc3JjL2xpYi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFvQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXpJLE9BQU8sRUFDSCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEdBQ1AsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQUlwRSxNQUFNLGFBQWEsR0FBRywyQkFBMkIsQ0FBQztBQUNsRCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztBQUN6QyxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQztBQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDckIsYUFBYTtJQUNiLE9BQU87SUFDUCxTQUFTO0lBQ1QsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQixhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEIsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUs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Q0wsQ0FBQztJQUVELDBEQUEwRDtJQUUxRCxVQUFVLENBQUMsR0FBUTtRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUM5QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQzt3R0FqR1EsWUFBWTs0RkFBWixZQUFZLDBLQUtnQixnQkFBZ0IsZ0VDeEN6RCw0V0FNTTs7NEZENkJPLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0ksU0FBUzt3REFRVixNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lFLGNBQWM7c0JBQXBGLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NvbnRhaW5lclJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNwYWNlIH0gZnJvbSAnQHNtYXJ0ZXJwbGFuL25neC1zbWFydGVycGxhbi1jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIGxhdExuZyxcclxuICAgIG1hcmtlcixcclxuICAgIHRpbGVMYXllcixcclxuICAgIE1hcCxcclxuICAgIGxhdExuZ0JvdW5kcyxcclxuICAgIHBvaW50LFxyXG4gICAgTWFya2VyLFxyXG4gICAgaWNvbixcclxufSBmcm9tIFwibGVhZmxldFwiO1xyXG5pbXBvcnQgeyBNYXBQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vbWFwLXBvcHVwL21hcC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuXHJcbmNvbnN0IGljb25SZXRpbmFVcmwgPSBcImFzc2V0cy9tYXJrZXItaWNvbi0yeC5wbmdcIjtcclxuY29uc3QgaWNvblVybCA9IFwiYXNzZXRzL21hcmtlci1pY29uLnBuZ1wiO1xyXG5jb25zdCBzaGFkb3dVcmwgPSBcImFzc2V0cy9tYXJrZXItc2hhZG93LnBuZ1wiO1xyXG5jb25zdCBpY29uRGVmYXVsdCA9IGljb24oe1xyXG4gICAgaWNvblJldGluYVVybCxcclxuICAgIGljb25VcmwsXHJcbiAgICBzaGFkb3dVcmwsXHJcbiAgICBpY29uU2l6ZTogWzI1LCA0MV0sXHJcbiAgICBpY29uQW5jaG9yOiBbMTIsIDQxXSxcclxuICAgIHBvcHVwQW5jaG9yOiBbMSwgLTM0XSxcclxuICAgIHRvb2x0aXBBbmNob3I6IFsxNiwgLTI4XSxcclxuICAgIHNoYWRvd1NpemU6IFs0MSwgNDFdLFxyXG59KTtcclxuTWFya2VyLnByb3RvdHlwZS5vcHRpb25zLmljb24gPSBpY29uRGVmYXVsdDtcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1tYXAnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYXAuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIEBJbnB1dCgpIHNwYWNlczogU3BhY2VbXTtcclxuICAgIEBWaWV3Q2hpbGQoJ3BvcHVwQ29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcG9wdXBDb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gICAgb3B0aW9ucyA9IHtcclxuICAgICAgICBsYXllcnM6IFtcclxuICAgICAgICAgICAgdGlsZUxheWVyKFwiaHR0cDovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICBtYXhab29tOiAxOCxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uOiBcIi4uLlwiLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIHpvb206IDUuNSxcclxuICAgICAgICBjZW50ZXI6IGxhdExuZyg0Ny4wNjM5NCwgMi43NzczNiksXHJcbiAgICB9O1xyXG5cclxuICAgIGxheWVyczogYW55W10gPSBbXTtcclxuXHJcbiAgICBtYXA6IGFueTtcclxuICAgIHByaXZhdGUgaXNWaWV3SW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXMuc3BhY2VzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlYnVpbGRMYXllcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pc1ZpZXdJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkTGF5ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWJ1aWxkTGF5ZXJzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zcGFjZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgbm0gPSBbXTtcclxuICAgICAgICBjb25zdCBiZCA9IFtdO1xyXG5cclxuICAgICAgICAvLyBDbGVhciBwcmV2aW91cyBjb21wb25lbnRzIHRvIGF2b2lkIGxlYWthZ2UuIFxyXG4gICAgICAgIC8vIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpOyAvLyBSZW1vdmVkIGFzIHdlIHVzZSB0aGUgZGVkaWNhdGVkIGNvbnRhaW5lclxyXG4gICAgICAgIGlmICh0aGlzLnBvcHVwQ29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9wdXBDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZpbHRlcmluZyBvdXQgc3BhY2VzIHdpdGhvdXQgbGF0L2xvbmdpdHVkZXNcclxuICAgICAgICBmb3IgKGNvbnN0IHMgb2YgdGhpcy5zcGFjZXMpIHtcclxuICAgICAgICAgICAgaWYgKHMubGF0aXR1ZGUgPT09IG51bGwgfHwgcy5sb25naXR1ZGUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3MubmFtZX0gaGFzIG5vdCBjb29yZGluYXRlcyBmb3IgJHtzLmFkZHJlc3Nlc31gLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgcG9wdXAgc3lzdGVtIGZyb20gbGVhZmxldCwgYXMgaXQgcGFja3MgYSBmZXcgaW1wcm92ZW1lbnRzXHJcbiAgICAgICAgICAgIC8vIG9uIHVzaW5nIGJvb3RzdHJhcDogYXV0b2Nsb3NlIG90aGVyIHBvcHVwcywgY2xvc2luZyBvcHRpb24uXHJcbiAgICAgICAgICAgIGNvbnN0IG0gPSBtYXJrZXIoW3MubGF0aXR1ZGUsIHMubG9uZ2l0dWRlXSk7XHJcblxyXG4gICAgICAgICAgICBtLmJpbmRQb3B1cCh0aGlzLmNyZWF0ZVBvcHVwQ29tcG9uZW50KHMsIG0pKTtcclxuXHJcbiAgICAgICAgICAgIG5tLnB1c2gobSk7XHJcbiAgICAgICAgICAgIGJkLnB1c2gobGF0TG5nKHMubGF0aXR1ZGUsIHMubG9uZ2l0dWRlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE5vdGUgaG93IHdlIHNldCB0aGUgbGF5ZXJzIGluIG9uZSBhc3NpZ25tZW50LCBpbiBvcmRlciB0byBoYXZlIGxlYWZsZXRcclxuICAgICAgICAvLyBkZXRlY3RzIHRoZSBjaGFuZ2UgY29ycmVjdGx5XHJcbiAgICAgICAgLy8gV2UgYWxzbyBzZXQgdGhlIGJvdW5kcyBhZnRlcndhcmQsIGZvciB0aGUgbWFwIHRvIGJlIHByb3Blcmx5IHpvb21lZCBhbmRcclxuICAgICAgICAvLyBjZW50ZXJlZFxyXG4gICAgICAgIHRoaXMubGF5ZXJzID0gbm07XHJcbiAgICAgICAgaWYgKHRoaXMubWFwICYmIGJkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGxhdExuZ0JvdW5kcyhiZCksIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHBvaW50KDQ4LCA0OCksXHJcbiAgICAgICAgICAgICAgICBtYXhab29tOiAxMixcclxuICAgICAgICAgICAgICAgIGFuaW1hdGU6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBQcmV2aW91cyBuZ09uQ2hhbmdlcyBsb2dpYyB3YXMgbW92ZWQgdG8gcmVidWlsZExheWVycygpXHJcblxyXG4gICAgb25NYXBSZWFkeShtYXA6IE1hcCkge1xyXG4gICAgICAgIHRoaXMubWFwID0gbWFwO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVBvcHVwQ29tcG9uZW50KHNwYWNlOiBTcGFjZSwgbWFya2VyOiBNYXJrZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMucG9wdXBDb250YWluZXIpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiUG9wdXAgY29udGFpbmVyIG5vdCByZWFkeSB5ZXRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb21wID0gdGhpcy5wb3B1cENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoTWFwUG9wdXBDb21wb25lbnQpO1xyXG4gICAgICAgIGNvbXAuaW5zdGFuY2Uuc3BhY2UgPSBzcGFjZTtcclxuICAgICAgICBjb21wLmluc3RhbmNlLm1hcmtlciA9IG1hcmtlcjtcclxuICAgICAgICBjb21wLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICByZXR1cm4gY29tcC5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IFtsZWFmbGV0TGF5ZXJzXT1cImxheWVyc1wiIFtsZWFmbGV0T3B0aW9uc109XCJvcHRpb25zXCIgKGxlYWZsZXRNYXBSZWFkeSk9XCJvbk1hcFJlYWR5KCRhbnkoJGV2ZW50KSlcIiBpZD1cIm1hcFwiIGxlYWZsZXRcbiAgICBzdHlsZT1cImhlaWdodDogNTAwcHg7IG1hcmdpbi10b3A6IDMwcHg7IHotaW5kZXg6IDE5NVwiPjwvZGl2PlxuXG48IS0tIEhpZGRlbiBjb250YWluZXIgZm9yIHBvcHVwIGNvbXBvbmVudHMgdG8gYXZvaWQgZGlzcGxheSBsZWFrYWdlIGFuZCBtYW5hZ2UgbGlmZWN5Y2xlIC0tPlxuPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj5cbiAgICA8ZGl2ICNwb3B1cENvbnRhaW5lcj48L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, EventEmitter, Input, Output, Component, ViewChild, Pipe, HostListener, NgModule } from '@angular/core';
|
|
2
|
+
import { Injectable, EventEmitter, Input, Output, Component, ViewContainerRef, ViewChild, Pipe, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@smarterplan/ngx-smarterplan-core';
|
|
4
4
|
import { enumToArray, LevelStatus, textValidator, noEmptyValidator, floatValidator, uploadFileToS3, deleteFromS3, PropertyType, getSignedImageUrlForSpace, SearchObjectType, SpaceStatus, getMetaForImage, getSignedFile, downloadFileAsObject, downloadBlob, CaptureViewer, showScanPointsOnPlanInDiv, getCoefficientsForImage, CommentType, SpModule, wait, InventoryStatus, NgxSmarterplanCoreModule } from '@smarterplan/ngx-smarterplan-core';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
@@ -96,12 +96,14 @@ class MapPopupComponent {
|
|
|
96
96
|
this.marker.openPopup();
|
|
97
97
|
this.isOnPopup = false;
|
|
98
98
|
this.popuparea = document.querySelector(".leaflet-popup");
|
|
99
|
-
this.popuparea
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this.
|
|
104
|
-
|
|
99
|
+
if (this.popuparea) {
|
|
100
|
+
this.popuparea.addEventListener("mouseleave", () => {
|
|
101
|
+
this.closePopup();
|
|
102
|
+
});
|
|
103
|
+
this.popuparea.addEventListener("mouseover", () => {
|
|
104
|
+
this.isOnPopup = true;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
105
107
|
this.marker.on("mouseout", () => {
|
|
106
108
|
this.closePopup();
|
|
107
109
|
});
|
|
@@ -131,11 +133,11 @@ class MapPopupComponent {
|
|
|
131
133
|
});
|
|
132
134
|
}
|
|
133
135
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapPopupComponent, deps: [{ token: i1.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
134
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapPopupComponent, selector: "lib-map-popup", ngImport: i0, template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
136
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapPopupComponent, selector: "lib-map-popup", ngImport: i0, template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [":host{display:none!important}:host-context(.leaflet-popup-content){display:block!important}.map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
135
137
|
}
|
|
136
138
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapPopupComponent, decorators: [{
|
|
137
139
|
type: Component,
|
|
138
|
-
args: [{ selector: 'lib-map-popup', template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [".map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"] }]
|
|
140
|
+
args: [{ selector: 'lib-map-popup', template: "<div id=\"map-popup\">\r\n <div class=\"map-popup-header\" (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">\r\n <img [src]=\"space.annexes\" />\r\n </div>\r\n <div class=\"map-popup-details\">\r\n <h1 (click)=\"onClickVisitFirst()\" [style.cursor]=\"'pointer'\">{{space.name}}</h1>\r\n <span class=\"map-popup-address\">{{space.addresses}}</span>\r\n <span *ngFor=\"let visit of space.visits\" class=\"map-popup-visit\" (click)=\"onVisitClick(visit)\"\r\n [style.cursor]=\"'pointer'\">\u27A4 {{ visit.name ? visit.name : space.name}}</span>\r\n </div>\r\n</div>\r\n", styles: [":host{display:none!important}:host-context(.leaflet-popup-content){display:block!important}.map-popup-header{height:120px;overflow:hidden;border-top-right-radius:20px;border-top-left-radius:20px}.map-popup-header img{width:100%;position:relative;top:50%;transform:translateY(-50%)}.map-popup-details{padding:5px 10px 10px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;background-color:#fff;color:#000}.map-popup-details{display:flex;flex-direction:column}.map-popup-details h1{font-size:1.5rem;font-weight:700;margin-bottom:0;color:var(--smarterplan-primary)}.map-popup-address{align-self:flex-end;margin-bottom:10px}.map-popup-visit{color:var(--smarterplan-primary);font-size:1.15rem}.map-popup-visit:hover{color:var(--smarterplan-primary)}\n"] }]
|
|
139
141
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i0.NgZone }] });
|
|
140
142
|
|
|
141
143
|
const iconRetinaUrl = "assets/marker-icon-2x.png";
|
|
@@ -153,11 +155,9 @@ const iconDefault = icon({
|
|
|
153
155
|
});
|
|
154
156
|
Marker.prototype.options.icon = iconDefault;
|
|
155
157
|
class MapComponent {
|
|
156
|
-
|
|
157
|
-
constructor(viewContainerRef) {
|
|
158
|
-
this.viewContainerRef = viewContainerRef;
|
|
159
|
-
}
|
|
158
|
+
constructor() { }
|
|
160
159
|
spaces;
|
|
160
|
+
popupContainer;
|
|
161
161
|
options = {
|
|
162
162
|
layers: [
|
|
163
163
|
tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
|
@@ -170,58 +170,81 @@ class MapComponent {
|
|
|
170
170
|
};
|
|
171
171
|
layers = [];
|
|
172
172
|
map;
|
|
173
|
+
isViewInitialized = false;
|
|
173
174
|
ngOnChanges(changes) {
|
|
174
175
|
if (changes.spaces) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (!changes.spaces.currentValue) {
|
|
178
|
-
return;
|
|
176
|
+
if (this.isViewInitialized) {
|
|
177
|
+
this.rebuildLayers();
|
|
179
178
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
animate: true,
|
|
203
|
-
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
ngAfterViewInit() {
|
|
182
|
+
this.isViewInitialized = true;
|
|
183
|
+
this.rebuildLayers();
|
|
184
|
+
}
|
|
185
|
+
rebuildLayers() {
|
|
186
|
+
if (!this.spaces) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const nm = [];
|
|
190
|
+
const bd = [];
|
|
191
|
+
// Clear previous components to avoid leakage.
|
|
192
|
+
// this.viewContainerRef.clear(); // Removed as we use the dedicated container
|
|
193
|
+
if (this.popupContainer) {
|
|
194
|
+
this.popupContainer.clear();
|
|
195
|
+
}
|
|
196
|
+
// Filtering out spaces without lat/longitudes
|
|
197
|
+
for (const s of this.spaces) {
|
|
198
|
+
if (s.latitude === null || s.longitude === null) {
|
|
199
|
+
console.log(`${s.name} has not coordinates for ${s.addresses}`);
|
|
200
|
+
continue;
|
|
204
201
|
}
|
|
202
|
+
// We use the popup system from leaflet, as it packs a few improvements
|
|
203
|
+
// on using bootstrap: autoclose other popups, closing option.
|
|
204
|
+
const m = marker([s.latitude, s.longitude]);
|
|
205
|
+
m.bindPopup(this.createPopupComponent(s, m));
|
|
206
|
+
nm.push(m);
|
|
207
|
+
bd.push(latLng(s.latitude, s.longitude));
|
|
208
|
+
}
|
|
209
|
+
// Note how we set the layers in one assignment, in order to have leaflet
|
|
210
|
+
// detects the change correctly
|
|
211
|
+
// We also set the bounds afterward, for the map to be properly zoomed and
|
|
212
|
+
// centered
|
|
213
|
+
this.layers = nm;
|
|
214
|
+
if (this.map && bd.length > 0) {
|
|
215
|
+
this.map.fitBounds(latLngBounds(bd), {
|
|
216
|
+
padding: point(48, 48),
|
|
217
|
+
maxZoom: 12,
|
|
218
|
+
animate: true,
|
|
219
|
+
});
|
|
205
220
|
}
|
|
206
221
|
}
|
|
222
|
+
// Previous ngOnChanges logic was moved to rebuildLayers()
|
|
207
223
|
onMapReady(map) {
|
|
208
224
|
this.map = map;
|
|
209
225
|
}
|
|
210
226
|
createPopupComponent(space, marker) {
|
|
211
|
-
|
|
227
|
+
if (!this.popupContainer) {
|
|
228
|
+
console.warn("Popup container not ready yet");
|
|
229
|
+
return "";
|
|
230
|
+
}
|
|
231
|
+
const comp = this.popupContainer.createComponent(MapPopupComponent);
|
|
212
232
|
comp.instance.space = space;
|
|
213
233
|
comp.instance.marker = marker;
|
|
214
234
|
comp.changeDetectorRef.detectChanges();
|
|
215
235
|
return comp.location.nativeElement;
|
|
216
236
|
}
|
|
217
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, deps: [
|
|
218
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapComponent, selector: "lib-map", inputs: { spaces: "spaces" }, usesOnChanges: true, ngImport: i0, template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\
|
|
237
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
238
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MapComponent, selector: "lib-map", inputs: { spaces: "spaces" }, viewQueries: [{ propertyName: "popupContainer", first: true, predicate: ["popupContainer"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\n\n<!-- Hidden container for popup components to avoid display leakage and manage lifecycle -->\n<div style=\"display: none\">\n <div #popupContainer></div>\n</div>", styles: [":host ::ng-deep lib-map-popup{display:none!important}:host ::ng-deep .leaflet-popup-content lib-map-popup{display:block!important}\n"], dependencies: [{ kind: "directive", type: i1$1.LeafletDirective, selector: "[leaflet]", inputs: ["leafletFitBoundsOptions", "leafletPanOptions", "leafletZoomOptions", "leafletZoomPanOptions", "leafletOptions", "leafletZoom", "leafletCenter", "leafletFitBounds", "leafletMaxBounds", "leafletMinZoom", "leafletMaxZoom"], outputs: ["leafletMapReady", "leafletZoomChange", "leafletCenterChange", "leafletClick", "leafletDoubleClick", "leafletMouseDown", "leafletMouseUp", "leafletMouseMove", "leafletMouseOver", "leafletMouseOut", "leafletMapMove", "leafletMapMoveStart", "leafletMapMoveEnd", "leafletMapZoom", "leafletMapZoomStart", "leafletMapZoomEnd"] }, { kind: "directive", type: i1$1.LeafletLayersDirective, selector: "[leafletLayers]", inputs: ["leafletLayers"] }] });
|
|
219
239
|
}
|
|
220
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MapComponent, decorators: [{
|
|
221
241
|
type: Component,
|
|
222
|
-
args: [{ selector: 'lib-map', template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\
|
|
223
|
-
}], ctorParameters: () => [
|
|
242
|
+
args: [{ selector: 'lib-map', template: "<div [leafletLayers]=\"layers\" [leafletOptions]=\"options\" (leafletMapReady)=\"onMapReady($any($event))\" id=\"map\" leaflet\n style=\"height: 500px; margin-top: 30px; z-index: 195\"></div>\n\n<!-- Hidden container for popup components to avoid display leakage and manage lifecycle -->\n<div style=\"display: none\">\n <div #popupContainer></div>\n</div>", styles: [":host ::ng-deep lib-map-popup{display:none!important}:host ::ng-deep .leaflet-popup-content lib-map-popup{display:block!important}\n"] }]
|
|
243
|
+
}], ctorParameters: () => [], propDecorators: { spaces: [{
|
|
224
244
|
type: Input
|
|
245
|
+
}], popupContainer: [{
|
|
246
|
+
type: ViewChild,
|
|
247
|
+
args: ['popupContainer', { read: ViewContainerRef, static: true }]
|
|
225
248
|
}] } });
|
|
226
249
|
|
|
227
250
|
class FormLocationComponent {
|