@smarterplan/ngx-smarterplan-core 1.2.48 → 1.2.50
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/esm2020/lib/components/menu-bar/menu-bar.component.mjs +7 -5
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +3 -3
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +85 -83
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +81 -79
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/menu-bar/menu-bar.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -137,11 +137,11 @@ export class RangeDatePickerComponent {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
RangeDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, deps: [{ token: i1.NgbCalendar }, { token: i1.NgbDateParserFormatter }, { token: i2.FilterService }, { token: i3.AmplifyCacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
-
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<form class=\"form-inline\">\r\n <div class=\"
|
|
140
|
+
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<form class=\"form-inline p-0 m-0 flex-nowrap flex-column flex-sm-row\">\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control d-none\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-1\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>", styles: [".hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.confirmation-button{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem}.date-selector{max-width:160px}\n"], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "formatDateNumberToDigits": i6.FormatDateNumberToDigitsPipe, "translate": i7.TranslatePipe } });
|
|
141
141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, decorators: [{
|
|
142
142
|
type: Component,
|
|
143
|
-
args: [{ selector: 'lib-range-date-picker', template: "<form class=\"form-inline\">\r\n <div class=\"
|
|
143
|
+
args: [{ selector: 'lib-range-date-picker', template: "<form class=\"form-inline p-0 m-0 flex-nowrap flex-column flex-sm-row\">\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control d-none\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-1\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>", styles: [".hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.confirmation-button{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem}.date-selector{max-width:160px}\n"] }]
|
|
144
144
|
}], ctorParameters: function () { return [{ type: i1.NgbCalendar }, { type: i1.NgbDateParserFormatter }, { type: i2.FilterService }, { type: i3.AmplifyCacheService }]; }, propDecorators: { cacheName: [{
|
|
145
145
|
type: Input
|
|
146
146
|
}] } });
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL3JhbmdlLWRhdGUtcGlja2VyL3JhbmdlLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9yYW5nZS1kYXRlLXBpY2tlci9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVNwQyxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQ1UsUUFBcUIsRUFDdEIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFIakMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFsQjNDLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQVVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFRM0Isa0VBQWtFO1FBQ2xFLHFDQUFxQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3RDtR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QUMsS0FBSyxHQUFHLENBQUMsRUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2hCLENBQUM7WUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7O3NIQW5MVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixpR0NkckMsa25GQStDQTs0RkRqQ2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFXeEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiQ2FsZW5kYXIsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFtcGxpZnlDYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcmFuZ2UtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHVibGljIGZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBbXBsaWZ5Q2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmZyb21EYXRlID0gY2FsZW5kYXIuZ2V0UHJldihjYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgMzApO1xyXG4gICAgLy8gdGhpcy50b0RhdGUgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jYWNoZSkge1xyXG4gICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSB0cnVlO1xyXG4gICAgICBsZXQgeyBmcm9tLCB0byB9ID0gdGhpcy5jYWNoZTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKGZyb20pO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIGZyb20udG9TdHJpbmcoKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgdG8udG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbbmV3IERhdGUoZnJvbSksIG5ldyBEYXRlKHRvKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy9nZXQgY3VycmVudCB0aW1lc3RhbXBcclxuICAgICAgY29uc3QgdGhpcnR5RGF5c0Fnb0RhdGUgPSBjdXJyZW50RGF0ZSAtIDMwICogMjQgKiA2MCAqIDYwICogMTAwMDsgLy9zdWJzdHJhY3QgMzAgZGF5cyBpbiBtaWxpc2Vjb25kcyBmcm9tIHRoZSBjdXJyZW50IHRpbWVzdGFtcFxyXG5cclxuICAgICAgLy8gYWRkIGRhdGVzIHRvIGxvY2Fsc3RvcmFnZSBmb3IgcmV0b29sIHVybHNQYXJhbXNcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIHRoaXJ0eURheXNBZ29EYXRlLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIGN1cnJlbnREYXRlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgLy8gdXBkYXRlcyBkYXRlIHJhbmdlIGRhdGVzIHRvIGxhc3QgMzAgZGF5cyByYW5nZXMgZnJvbSB0b2RheVxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRoaXJ0eURheXNBZ29EYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUoY3VycmVudERhdGUpO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmRhdGVGaWx0ZXJVcGRhdGVkKFtcclxuICAgICAgICBuZXcgRGF0ZSh0aGlydHlEYXlzQWdvRGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgICBuZXcgRGF0ZShjdXJyZW50RGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ2JEYXRlKGRhdGU6IG51bWJlcik6IE5nYkRhdGUge1xyXG4gICAgbGV0IGR0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBkdC5zZXRNaW51dGVzKGR0LmdldE1pbnV0ZXMoKSAtIGR0LmdldFRpbWV6b25lT2Zmc2V0KCkpOyAvLyBjb252ZXJ0IHRvIFVUQ1xyXG4gICAgcmV0dXJuIG5ldyBOZ2JEYXRlKFxyXG4gICAgICBkdC5nZXRVVENGdWxsWWVhcigpLFxyXG4gICAgICBkdC5nZXRVVENNb250aCgpICsgMSxcclxuICAgICAgZHQuZ2V0VVRDRGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0aW9uKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIGlmICghdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICBkYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0RhdGVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVDaGFuZ2VkKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICF0aGlzLmZyb21EYXRlLmVxdWFscyh0aGlzLmdldE5nYkRhdGUodGhpcy5jYWNoZS5mcm9tKSkgfHxcclxuICAgICAgICAgICF0aGlzLnRvRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUudG8pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiZcclxuICAgICAgIXRoaXMudG9EYXRlICYmXHJcbiAgICAgIHRoaXMuaG92ZXJlZERhdGUgJiZcclxuICAgICAgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJlxyXG4gICAgICBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuICAgIHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKVxyXG4gICAgICA/IE5nYkRhdGUuZnJvbShwYXJzZWQpXHJcbiAgICAgIDogY3VycmVudFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZW1pdFJhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUueWVhcixcclxuICAgICAgICB0aGlzLmZyb21EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLmZyb21EYXRlLmRheVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB0byA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMudG9EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy50b0RhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLmRheSxcclxuICAgICAgICAyMyxcclxuICAgICAgICA1OVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5wdXRJbkNhY2hlKHRoaXMuY2FjaGVOYW1lLCB7XHJcbiAgICAgICAgZnJvbTogZnJvbS5nZXRUaW1lKCksXHJcbiAgICAgICAgdG86IHRvLmdldFRpbWUoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbZnJvbSwgdG9dKTtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhckRhdGVzKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjb25zb2xlLmxvZygndGVzdCBzZXRJdGVtIGZyb20gOiAnICsgc3RhcnREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvRGF0ZSkge1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy50b0RhdGUueWVhcixcclxuICAgICAgICB0aGlzLnRvRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy50b0RhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgZW5kRGF0ZS5nZXRUaW1lKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIGhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nYkRhdGVwaWNrZXIgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIiBbZGlzcGxheU1vbnRoc109XCIyXCIgW2RheVRlbXBsYXRlXT1cInRcIlxyXG4gICAgICAgICAgICAgICAgb3V0c2lkZURheXM9XCJoaWRkZW5cIiBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0IGxldC1kYXRlIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCIgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkRGF0ZSA9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwRnJvbURhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImRkL01NL3l5eXlcIiBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZnJvbURhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIlxyXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cImZyb21EYXRlID0gdmFsaWRhdGVJbnB1dChmcm9tRGF0ZSwgZHBGcm9tRGF0ZS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY2FsZW5kYXJcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zIG1zLTAgbXMtbWQtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJkZC9NTS95eXl5XCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0b0RhdGUgfCBmb3JtYXREYXRlTnVtYmVyVG9EaWdpdHNcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1idXR0b25cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25BcHBseSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNEYXRlRmlsdGVyQXBwbGllZCB8fCBkYXRlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGllZFRleHQgbXMtM1wiICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5XCIgZGF0YS1pY29uPVwiaW9uOmNoZWNrbWFya1wiIGRhdGEtd2lkdGg9XCIxNVwiIGRhdGEtaGVpZ2h0PVwiMTVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIHt7XCJBcHBsaWVkXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTNcIiAoY2xpY2spPVwib25DbGVhckRhdGVzKClcIj57eydDbGVhcicgfFxyXG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtYmFyL3JhbmdlLWRhdGUtcGlja2VyL3JhbmdlLWRhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWJhci9yYW5nZS1kYXRlLXBpY2tlci9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsT0FBTyxHQUdSLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQVNwQyxNQUFNLE9BQU8sd0JBQXdCO0lBZW5DLFlBQ1UsUUFBcUIsRUFDdEIsU0FBaUMsRUFDaEMsYUFBNEIsRUFDNUIsWUFBaUM7UUFIakMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFsQjNDLGdCQUFXLEdBQW1CLElBQUksQ0FBQztRQVVuQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFRM0Isa0VBQWtFO1FBQ2xFLHFDQUFxQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM3RDtR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QUMsS0FBSyxHQUFHLENBQUMsRUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ2hCLENBQUM7WUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7O3NIQW5MVSx3QkFBd0I7MEdBQXhCLHdCQUF3QixpR0NkckMsNG9GQTRDTzs0RkQ5Qk0sd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFXeEIsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE5nYkRhdGUsXHJcbiAgTmdiQ2FsZW5kYXIsXHJcbiAgTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEFtcGxpZnlDYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbXBsaWZ5LWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcmFuZ2UtZGF0ZS1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UtZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhbmdlRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICB0b0RhdGU6IE5nYkRhdGUgfCBudWxsO1xyXG5cclxuICBASW5wdXQoKSBjYWNoZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNhY2hlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbDtcclxuXHJcbiAgaXNEYXRlRmlsdGVyQXBwbGllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBkYXRlQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FsZW5kYXI6IE5nYkNhbGVuZGFyLFxyXG4gICAgcHVibGljIGZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlcixcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBBbXBsaWZ5Q2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmZyb21EYXRlID0gY2FsZW5kYXIuZ2V0UHJldihjYWxlbmRhci5nZXRUb2RheSgpLCBcImRcIiwgMzApO1xyXG4gICAgLy8gdGhpcy50b0RhdGUgPSBjYWxlbmRhci5nZXRUb2RheSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYWNoZU5hbWUpIHtcclxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldEZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jYWNoZSkge1xyXG4gICAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSB0cnVlO1xyXG4gICAgICBsZXQgeyBmcm9tLCB0byB9ID0gdGhpcy5jYWNoZTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUodG8pO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKGZyb20pO1xyXG5cclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIGZyb20udG9TdHJpbmcoKSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgdG8udG9TdHJpbmcoKSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbbmV3IERhdGUoZnJvbSksIG5ldyBEYXRlKHRvKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsgLy9nZXQgY3VycmVudCB0aW1lc3RhbXBcclxuICAgICAgY29uc3QgdGhpcnR5RGF5c0Fnb0RhdGUgPSBjdXJyZW50RGF0ZSAtIDMwICogMjQgKiA2MCAqIDYwICogMTAwMDsgLy9zdWJzdHJhY3QgMzAgZGF5cyBpbiBtaWxpc2Vjb25kcyBmcm9tIHRoZSBjdXJyZW50IHRpbWVzdGFtcFxyXG5cclxuICAgICAgLy8gYWRkIGRhdGVzIHRvIGxvY2Fsc3RvcmFnZSBmb3IgcmV0b29sIHVybHNQYXJhbXNcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXJ0RGF0ZScsIHRoaXJ0eURheXNBZ29EYXRlLnRvU3RyaW5nKCkpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZW5kRGF0ZScsIGN1cnJlbnREYXRlLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgLy8gdXBkYXRlcyBkYXRlIHJhbmdlIGRhdGVzIHRvIGxhc3QgMzAgZGF5cyByYW5nZXMgZnJvbSB0b2RheVxyXG4gICAgICB0aGlzLmZyb21EYXRlID0gdGhpcy5nZXROZ2JEYXRlKHRoaXJ0eURheXNBZ29EYXRlKTtcclxuICAgICAgdGhpcy50b0RhdGUgPSB0aGlzLmdldE5nYkRhdGUoY3VycmVudERhdGUpO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmRhdGVGaWx0ZXJVcGRhdGVkKFtcclxuICAgICAgICBuZXcgRGF0ZSh0aGlydHlEYXlzQWdvRGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgICBuZXcgRGF0ZShjdXJyZW50RGF0ZS50b1N0cmluZygpKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXROZ2JEYXRlKGRhdGU6IG51bWJlcik6IE5nYkRhdGUge1xyXG4gICAgbGV0IGR0ID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBkdC5zZXRNaW51dGVzKGR0LmdldE1pbnV0ZXMoKSAtIGR0LmdldFRpbWV6b25lT2Zmc2V0KCkpOyAvLyBjb252ZXJ0IHRvIFVUQ1xyXG4gICAgcmV0dXJuIG5ldyBOZ2JEYXRlKFxyXG4gICAgICBkdC5nZXRVVENGdWxsWWVhcigpLFxyXG4gICAgICBkdC5nZXRVVENNb250aCgpICsgMSxcclxuICAgICAgZHQuZ2V0VVRDRGF0ZSgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0aW9uKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIGlmICghdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmXHJcbiAgICAgICF0aGlzLnRvRGF0ZSAmJlxyXG4gICAgICBkYXRlICYmXHJcbiAgICAgIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0RhdGVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGVDaGFuZ2VkKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcclxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICF0aGlzLmZyb21EYXRlLmVxdWFscyh0aGlzLmdldE5nYkRhdGUodGhpcy5jYWNoZS5mcm9tKSkgfHxcclxuICAgICAgICAgICF0aGlzLnRvRGF0ZS5lcXVhbHModGhpcy5nZXROZ2JEYXRlKHRoaXMuY2FjaGUudG8pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiZcclxuICAgICAgIXRoaXMudG9EYXRlICYmXHJcbiAgICAgIHRoaXMuaG92ZXJlZERhdGUgJiZcclxuICAgICAgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJlxyXG4gICAgICBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuICAgIHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKVxyXG4gICAgICA/IE5nYkRhdGUuZnJvbShwYXJzZWQpXHJcbiAgICAgIDogY3VycmVudFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZW1pdFJhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgY29uc3QgZnJvbSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUueWVhcixcclxuICAgICAgICB0aGlzLmZyb21EYXRlLm1vbnRoIC0gMSxcclxuICAgICAgICB0aGlzLmZyb21EYXRlLmRheVxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB0byA9IG5ldyBEYXRlKFxyXG4gICAgICAgIHRoaXMudG9EYXRlLnllYXIsXHJcbiAgICAgICAgdGhpcy50b0RhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMudG9EYXRlLmRheSxcclxuICAgICAgICAyMyxcclxuICAgICAgICA1OVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5wdXRJbkNhY2hlKHRoaXMuY2FjaGVOYW1lLCB7XHJcbiAgICAgICAgZnJvbTogZnJvbS5nZXRUaW1lKCksXHJcbiAgICAgICAgdG86IHRvLmdldFRpbWUoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5kYXRlRmlsdGVyVXBkYXRlZChbZnJvbSwgdG9dKTtcclxuICAgICAgdGhpcy5pc0RhdGVGaWx0ZXJBcHBsaWVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGVhckRhdGVzKCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmlzRGF0ZUZpbHRlckFwcGxpZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlbW92ZUZyb21DYWNoZSh0aGlzLmNhY2hlTmFtZSk7XHJcbiAgICB0aGlzLmZpbHRlclNlcnZpY2UuZGF0ZUZpbHRlclVwZGF0ZWQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcGx5KCkge1xyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUgJiYgdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5lbWl0UmFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3RyYW5zZm9ybSBuZ2JEYXRlIHRvIGRhdGUgb2JqZXQgdGhlbiBwdXQgZGF0ZXMgaW4gdGltZXN0YW1wIGluIGxvY2FsU3RvcmFnZSB0byBzaGFyZSBpdCB3aXRoIFJldG9vbFxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy5mcm9tRGF0ZS55ZWFyLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUubW9udGggLSAxLFxyXG4gICAgICAgIHRoaXMuZnJvbURhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGFydERhdGUnLCBzdGFydERhdGUuZ2V0VGltZSgpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBjb25zb2xlLmxvZygndGVzdCBzZXRJdGVtIGZyb20gOiAnICsgc3RhcnREYXRlLmdldFRpbWUoKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRvRGF0ZSkge1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoXHJcbiAgICAgICAgdGhpcy50b0RhdGUueWVhcixcclxuICAgICAgICB0aGlzLnRvRGF0ZS5tb250aCAtIDEsXHJcbiAgICAgICAgdGhpcy50b0RhdGUuZGF5XHJcbiAgICAgICk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdlbmREYXRlJywgZW5kRGF0ZS5nZXRUaW1lKCkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcC0wIG0tMCBmbGV4LW5vd3JhcCBmbGV4LWNvbHVtbiBmbGV4LXNtLXJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm0tMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZHBGcm9tRGF0ZSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiZGQvTU0veXl5eVwiIG5hbWU9XCJkcEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmcm9tRGF0ZSB8IGZvcm1hdERhdGVOdW1iZXJUb0RpZ2l0c1wiXHJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwiZnJvbURhdGUgPSB2YWxpZGF0ZUlucHV0KGZyb21EYXRlLCBkcEZyb21EYXRlLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjYWxlbmRhclwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm0tMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkYXRlLXNlbGVjdG9yXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZHBUb0RhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cImRkL01NL3l5eXlcIiBuYW1lPVwiZHBUb0RhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInRvRGF0ZSB8IGZvcm1hdERhdGVOdW1iZXJUb0RpZ2l0c1wiIChpbnB1dCk9XCJ0b0RhdGUgPSB2YWxpZGF0ZUlucHV0KHRvRGF0ZSwgZHBUb0RhdGUudmFsdWUpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNhbGVuZGFyXCIgKGNsaWNrKT1cImRhdGVwaWNrZXIudG9nZ2xlKClcIiB0eXBlPVwiYnV0dG9uXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJ1dHRvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBkLW5vbmVcIiBuZ2JEYXRlcGlja2VyICNkYXRlcGlja2VyPVwibmdiRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCIgW2Rpc3BsYXlNb250aHNdPVwiMlwiIFtkYXlUZW1wbGF0ZV09XCJ0XCJcclxuICAgICAgICAgICAgICAgIG91dHNpZGVEYXlzPVwiaGlkZGVuXCIgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSFcIiB0YWJpbmRleD1cIi0xXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdCBsZXQtZGF0ZSBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRheVwiIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIiBbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZERhdGUgPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTFcIiAoY2xpY2spPVwib25BcHBseSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNEYXRlRmlsdGVyQXBwbGllZCB8fCBkYXRlQ2hhbmdlZFwiPlxyXG4gICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGllZFRleHQgbXMtMVwiICpuZ0lmPVwiaXNEYXRlRmlsdGVyQXBwbGllZCAmJiAhZGF0ZUNoYW5nZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5XCIgZGF0YS1pY29uPVwiaW9uOmNoZWNrbWFya1wiIGRhdGEtd2lkdGg9XCIxNVwiIGRhdGEtaGVpZ2h0PVwiMTVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIHt7XCJBcHBsaWVkXCIgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1zLTFcIiAoY2xpY2spPVwib25DbGVhckRhdGVzKClcIj57eydDbGVhcicgfFxyXG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT4iXX0=
|
|
@@ -8986,6 +8986,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
8986
8986
|
}]
|
|
8987
8987
|
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
|
|
8988
8988
|
|
|
8989
|
+
const cache = {};
|
|
8990
|
+
class AvatarComponent {
|
|
8991
|
+
constructor(userService, profileService) {
|
|
8992
|
+
this.userService = userService;
|
|
8993
|
+
this.profileService = profileService;
|
|
8994
|
+
this.size = 45;
|
|
8995
|
+
this.userSub = this.userService.isChanged.subscribe((connected) => {
|
|
8996
|
+
if (connected) {
|
|
8997
|
+
this.currentUser = this.userService.cu;
|
|
8998
|
+
this.setAvatar(this.currentUser);
|
|
8999
|
+
}
|
|
9000
|
+
});
|
|
9001
|
+
}
|
|
9002
|
+
ngOnInit() {
|
|
9003
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
9004
|
+
if (this.userID) {
|
|
9005
|
+
const profile = yield this.profileService.getProfile(this.userID);
|
|
9006
|
+
if (profile) {
|
|
9007
|
+
const user = new ProfileEntity(profile);
|
|
9008
|
+
this.setAvatar(user);
|
|
9009
|
+
}
|
|
9010
|
+
}
|
|
9011
|
+
else {
|
|
9012
|
+
this.currentUser = this.userService.cu;
|
|
9013
|
+
this.setAvatar(this.currentUser);
|
|
9014
|
+
}
|
|
9015
|
+
});
|
|
9016
|
+
}
|
|
9017
|
+
ngOnDestroy() {
|
|
9018
|
+
if (this.userSub) {
|
|
9019
|
+
this.userSub.unsubscribe();
|
|
9020
|
+
}
|
|
9021
|
+
}
|
|
9022
|
+
setAvatar(user) {
|
|
9023
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
9024
|
+
const { id, avatar, email } = user;
|
|
9025
|
+
// If avatar is not cached, check first if we have an avatar URL to fetch
|
|
9026
|
+
// from S3. If not, retrieve it from libravatar.
|
|
9027
|
+
// TODO use in a Service to be able to change/upload freely.
|
|
9028
|
+
if (!cache.hasOwnProperty(id)) {
|
|
9029
|
+
if (!avatar && email) {
|
|
9030
|
+
const md5 = new Md5();
|
|
9031
|
+
const md5hash = md5.appendStr(email).end();
|
|
9032
|
+
const avatar = `https://seccdn.libravatar.org/avatar/${md5hash}?s=${this.size}&default=identicon`;
|
|
9033
|
+
const url = yield fetch(avatar)
|
|
9034
|
+
.then((res) => res.blob())
|
|
9035
|
+
.then((blob) => {
|
|
9036
|
+
const file = new File([blob], "avatar.jpeg", {
|
|
9037
|
+
type: "image/jpeg",
|
|
9038
|
+
});
|
|
9039
|
+
return uploadFileToS3("avatars/", file, id);
|
|
9040
|
+
});
|
|
9041
|
+
yield this.profileService.updateProfile({ id, avatar: url });
|
|
9042
|
+
user.avatar = url;
|
|
9043
|
+
cache[id] = avatar;
|
|
9044
|
+
}
|
|
9045
|
+
if (avatar) {
|
|
9046
|
+
// TODO generating signed urls for avatar makes NO SENSE ($$$)
|
|
9047
|
+
// Sorry got to copypaste that, but really need to get rid of
|
|
9048
|
+
cache[id] = yield getSignedImageUrlForProfile(user);
|
|
9049
|
+
}
|
|
9050
|
+
}
|
|
9051
|
+
this.avatar = cache[id];
|
|
9052
|
+
});
|
|
9053
|
+
}
|
|
9054
|
+
}
|
|
9055
|
+
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AvatarComponent, deps: [{ token: BaseUserService }, { token: ProfileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9056
|
+
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AvatarComponent, selector: "lib-avatar", inputs: { size: "size", userID: "userID" }, ngImport: i0, template: `<img [src]="avatar" />`, isInline: true, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] });
|
|
9057
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
9058
|
+
type: Component,
|
|
9059
|
+
args: [{ selector: 'lib-avatar', template: `<img [src]="avatar" />`, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] }]
|
|
9060
|
+
}], ctorParameters: function () { return [{ type: BaseUserService }, { type: ProfileService }]; }, propDecorators: { size: [{
|
|
9061
|
+
type: Input
|
|
9062
|
+
}], userID: [{
|
|
9063
|
+
type: Input
|
|
9064
|
+
}] } });
|
|
9065
|
+
|
|
8989
9066
|
/* eslint-disable class-methods-use-this */
|
|
8990
9067
|
var CacheKeys;
|
|
8991
9068
|
(function (CacheKeys) {
|
|
@@ -9211,91 +9288,14 @@ class RangeDatePickerComponent {
|
|
|
9211
9288
|
}
|
|
9212
9289
|
}
|
|
9213
9290
|
RangeDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, deps: [{ token: i1$2.NgbCalendar }, { token: i1$2.NgbDateParserFormatter }, { token: FilterService }, { token: AmplifyCacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9214
|
-
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<form class=\"form-inline\">\r\n <div class=\"
|
|
9291
|
+
RangeDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: { cacheName: "cacheName" }, ngImport: i0, template: "<form class=\"form-inline p-0 m-0 flex-nowrap flex-column flex-sm-row\">\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control d-none\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-1\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>", styles: [".hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.confirmation-button{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem}.date-selector{max-width:160px}\n"], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "formatDateNumberToDigits": FormatDateNumberToDigitsPipe, "translate": i1.TranslatePipe } });
|
|
9215
9292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RangeDatePickerComponent, decorators: [{
|
|
9216
9293
|
type: Component,
|
|
9217
|
-
args: [{ selector: 'lib-range-date-picker', template: "<form class=\"form-inline\">\r\n <div class=\"
|
|
9294
|
+
args: [{ selector: 'lib-range-date-picker', template: "<form class=\"form-inline p-0 m-0 flex-nowrap flex-column flex-sm-row\">\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpFromDate\"\r\n [value]=\"fromDate | formatDateNumberToDigits\"\r\n (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"m-1\">\r\n <div class=\"input-group date-selector\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"dd/MM/yyyy\" name=\"dpToDate\"\r\n [value]=\"toDate | formatDateNumberToDigits\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"datepicker.toggle()\" type=\"button\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"confirmation-button\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control d-none\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\" [dayTemplate]=\"t\"\r\n outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\">\r\n <ng-template #t let-date let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.focused]=\"focused\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onApply()\"\r\n *ngIf=\"!isDateFilterApplied || dateChanged\">\r\n {{'Apply' | translate}}\r\n </button>\r\n <span class=\"appliedText ms-1\" *ngIf=\"isDateFilterApplied && !dateChanged\">\r\n <span class=\"iconify\" data-icon=\"ion:checkmark\" data-width=\"15\" data-height=\"15\"></span>\r\n {{\"Applied\" | translate}}\r\n </span>\r\n <button class=\"btn btn-outline-primary rounded-pill ms-1\" (click)=\"onClearDates()\">{{'Clear' |\r\n translate}}</button>\r\n </div>\r\n</form>", styles: [".hidden{width:0;margin:0;border:none;padding:0}.custom-day{text-align:center;padding:.185rem .25rem;display:inline-block;height:2rem;width:2rem}.custom-day.focused{background-color:#e6e6e6}.custom-day.range,.custom-day:hover{background-color:var(--smarterplan-primary-lighter);color:#fff}.custom-day.faded{background-color:var(--smarterplan-primary-transparent)}.calendar{height:100%}.appliedText,.appliedText span{color:var(--smarterplan-primary)}@media (max-width: 767px){.form-inline{flex-direction:column}}.hidden{opacity:0}.confirmation-button{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.5rem}.date-selector{max-width:160px}\n"] }]
|
|
9218
9295
|
}], ctorParameters: function () { return [{ type: i1$2.NgbCalendar }, { type: i1$2.NgbDateParserFormatter }, { type: FilterService }, { type: AmplifyCacheService }]; }, propDecorators: { cacheName: [{
|
|
9219
9296
|
type: Input
|
|
9220
9297
|
}] } });
|
|
9221
9298
|
|
|
9222
|
-
const cache = {};
|
|
9223
|
-
class AvatarComponent {
|
|
9224
|
-
constructor(userService, profileService) {
|
|
9225
|
-
this.userService = userService;
|
|
9226
|
-
this.profileService = profileService;
|
|
9227
|
-
this.size = 45;
|
|
9228
|
-
this.userSub = this.userService.isChanged.subscribe((connected) => {
|
|
9229
|
-
if (connected) {
|
|
9230
|
-
this.currentUser = this.userService.cu;
|
|
9231
|
-
this.setAvatar(this.currentUser);
|
|
9232
|
-
}
|
|
9233
|
-
});
|
|
9234
|
-
}
|
|
9235
|
-
ngOnInit() {
|
|
9236
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
9237
|
-
if (this.userID) {
|
|
9238
|
-
const profile = yield this.profileService.getProfile(this.userID);
|
|
9239
|
-
if (profile) {
|
|
9240
|
-
const user = new ProfileEntity(profile);
|
|
9241
|
-
this.setAvatar(user);
|
|
9242
|
-
}
|
|
9243
|
-
}
|
|
9244
|
-
else {
|
|
9245
|
-
this.currentUser = this.userService.cu;
|
|
9246
|
-
this.setAvatar(this.currentUser);
|
|
9247
|
-
}
|
|
9248
|
-
});
|
|
9249
|
-
}
|
|
9250
|
-
ngOnDestroy() {
|
|
9251
|
-
if (this.userSub) {
|
|
9252
|
-
this.userSub.unsubscribe();
|
|
9253
|
-
}
|
|
9254
|
-
}
|
|
9255
|
-
setAvatar(user) {
|
|
9256
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
9257
|
-
const { id, avatar, email } = user;
|
|
9258
|
-
// If avatar is not cached, check first if we have an avatar URL to fetch
|
|
9259
|
-
// from S3. If not, retrieve it from libravatar.
|
|
9260
|
-
// TODO use in a Service to be able to change/upload freely.
|
|
9261
|
-
if (!cache.hasOwnProperty(id)) {
|
|
9262
|
-
if (!avatar && email) {
|
|
9263
|
-
const md5 = new Md5();
|
|
9264
|
-
const md5hash = md5.appendStr(email).end();
|
|
9265
|
-
const avatar = `https://seccdn.libravatar.org/avatar/${md5hash}?s=${this.size}&default=identicon`;
|
|
9266
|
-
const url = yield fetch(avatar)
|
|
9267
|
-
.then((res) => res.blob())
|
|
9268
|
-
.then((blob) => {
|
|
9269
|
-
const file = new File([blob], "avatar.jpeg", {
|
|
9270
|
-
type: "image/jpeg",
|
|
9271
|
-
});
|
|
9272
|
-
return uploadFileToS3("avatars/", file, id);
|
|
9273
|
-
});
|
|
9274
|
-
yield this.profileService.updateProfile({ id, avatar: url });
|
|
9275
|
-
user.avatar = url;
|
|
9276
|
-
cache[id] = avatar;
|
|
9277
|
-
}
|
|
9278
|
-
if (avatar) {
|
|
9279
|
-
// TODO generating signed urls for avatar makes NO SENSE ($$$)
|
|
9280
|
-
// Sorry got to copypaste that, but really need to get rid of
|
|
9281
|
-
cache[id] = yield getSignedImageUrlForProfile(user);
|
|
9282
|
-
}
|
|
9283
|
-
}
|
|
9284
|
-
this.avatar = cache[id];
|
|
9285
|
-
});
|
|
9286
|
-
}
|
|
9287
|
-
}
|
|
9288
|
-
AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AvatarComponent, deps: [{ token: BaseUserService }, { token: ProfileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9289
|
-
AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AvatarComponent, selector: "lib-avatar", inputs: { size: "size", userID: "userID" }, ngImport: i0, template: `<img [src]="avatar" />`, isInline: true, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] });
|
|
9290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
9291
|
-
type: Component,
|
|
9292
|
-
args: [{ selector: 'lib-avatar', template: `<img [src]="avatar" />`, styles: ["img{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:50%}\n"] }]
|
|
9293
|
-
}], ctorParameters: function () { return [{ type: BaseUserService }, { type: ProfileService }]; }, propDecorators: { size: [{
|
|
9294
|
-
type: Input
|
|
9295
|
-
}], userID: [{
|
|
9296
|
-
type: Input
|
|
9297
|
-
}] } });
|
|
9298
|
-
|
|
9299
9299
|
class CaptureService {
|
|
9300
9300
|
constructor(apiInjected) {
|
|
9301
9301
|
this.API = apiInjected;
|
|
@@ -11832,10 +11832,10 @@ class NavigationBarComponent {
|
|
|
11832
11832
|
}
|
|
11833
11833
|
}
|
|
11834
11834
|
NavigationBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationBarComponent, deps: [{ token: 'currentAwsKinesisAnalyticsService' }, { token: i1$1.Router }, { token: SpaceService }, { token: BaseUserService }, { token: ZoneService }, { token: VisitService }, { token: ViewerService }, { token: NavigatorService }, { token: ZoneChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11835
|
-
NavigationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NavigationBarComponent, selector: "lib-navigation-bar", viewQueries: [{ propertyName: "navbarSelectMenu", first: true, predicate: ["navbarSelectMenu"], descendants: true }], ngImport: i0, template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex col-12\">\r\n <div #navbarSelectMenu class=\"collapse navbar-collapse\" id=\"nav-item-container-blue\">\r\n <div class=\"d-flex flex-column flex-md-row \">\r\n <select class=\"form-control flex-fill location select-menu\" [(ngModel)]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationClick()\">\r\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\r\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" (change)=\"onVisitClick($event)\"\r\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\r\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\r\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\r\n </option>\r\n </select>\r\n <select class=\"form-control flex-fill floor select-menu\" [(ngModel)]=\"selectedFloor\"\r\n (ngModelChange)=\"onFloorClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\r\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu zone\" [(ngModel)]=\"selectedZone\"\r\n (ngModelChange)=\"onZoneClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\r\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" [(ngModel)]=\"selectedChildZone\"\r\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\r\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\r\n </select>\r\n <!-- <select class=\"form-control flex-fill\">\r\n <option i18n>{{'Favorites' | translate}}</option>\r\n </select> -->\r\n </div>\r\n <div class=\"row\" style=\"margin-left: 0;\">\r\n <div class=\"outer_circle\">\r\n <button id='btn-icon' [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\"\r\n (click)=\"goTo()\"></button>\r\n </div>\r\n <button (click)=\"goTo()\" class=\"btn rounded-pill btn-3d\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">{{'3D visit' | translate}}</button>\r\n </div>\r\n </div>\r\n\r\n <h4 style=\"line-height: 29px;margin: 0;\" *ngIf=\"showLocation()\">\r\n {{ showLocation() }}\r\n </h4>\r\n </div>\r\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}.form-control{width:auto;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.btn-3d:active:hover:not([disabled]){color:var(--smarterplan-secondary)}.btn-3d[disabled]:hover{color:#fff}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}#btn-icon{width:30px;height:30px;background:url(../../../../../assets/icons/goTo3d.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../../assets/icons/goTo3d-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../../assets/icons/goTo3d.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}#btn-icon{width:20px;height:20px}}\n"], directives: [{ type: i1$2.NgbNavbar, selector: ".navbar" }, { type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
11835
|
+
NavigationBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NavigationBarComponent, selector: "lib-navigation-bar", viewQueries: [{ propertyName: "navbarSelectMenu", first: true, predicate: ["navbarSelectMenu"], descendants: true }], ngImport: i0, template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex w-100\">\r\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\r\n <div class=\"d-flex flex-column flex-md-row p-1\">\r\n <select class=\"form-control flex-fill location select-menu\" [(ngModel)]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationClick()\">\r\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\r\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" (change)=\"onVisitClick($event)\"\r\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\r\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\r\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\r\n </option>\r\n </select>\r\n <select class=\"form-control flex-fill floor select-menu\" [(ngModel)]=\"selectedFloor\"\r\n (ngModelChange)=\"onFloorClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\r\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu zone\" [(ngModel)]=\"selectedZone\"\r\n (ngModelChange)=\"onZoneClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\r\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" [(ngModel)]=\"selectedChildZone\"\r\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\r\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\r\n </select>\r\n <!-- <select class=\"form-control flex-fill\">\r\n <option i18n>{{'Favorites' | translate}}</option>\r\n </select> -->\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\r\n <p class=\"fw-bold lh-base align-middle text-center\">\r\n {{ showLocation() }}\r\n </p>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\">\r\n\r\n <div class=\"outer_circle w-auto m-1\">\r\n <button id='btn-icon' [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\"\r\n (click)=\"goTo()\"></button>\r\n </div>\r\n <button (click)=\"goTo()\" class=\"btn rounded-pill btn-3d w-auto m-1\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">{{'3D visit' | translate}}</button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.btn-3d:active:hover:not([disabled]){color:var(--smarterplan-secondary)}.btn-3d[disabled]:hover{color:#fff}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}#btn-icon{width:30px;height:30px;background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%23565656%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");border:none;vertical-align:middle}#btn-icon:hover{background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%234BA4A8%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}#btn-icon[disabled]:hover{background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%23565656%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"], directives: [{ type: i1$2.NgbNavbar, selector: ".navbar" }, { type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
11836
11836
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavigationBarComponent, decorators: [{
|
|
11837
11837
|
type: Component,
|
|
11838
|
-
args: [{ selector: 'lib-navigation-bar', template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex
|
|
11838
|
+
args: [{ selector: 'lib-navigation-bar', template: "<nav class=\"navbar navbar-expand-md navbar-dark navbar-inverse second-nav\">\r\n <div class=\"d-flex w-100\">\r\n <div #navbarSelectMenu class=\"w-100\" id=\"nav-item-container-blue\">\r\n <div class=\"d-flex flex-column flex-md-row p-1\">\r\n <select class=\"form-control flex-fill location select-menu\" [(ngModel)]=\"selectedLocation\"\r\n (ngModelChange)=\"onLocationClick()\">\r\n <option [ngValue]=\"null\" selected>{{ 'Location' | translate }}</option>\r\n <option *ngFor=\"let loc of locations; index as index\" [ngValue]=\"loc\"> {{ loc.name }}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" (change)=\"onVisitClick($event)\"\r\n *ngIf=\"visitsPerSpace && visitsPerSpace.length > 1\">\r\n <option value=\"default\" selected disabled hidden>{{'Visit' | translate}}</option>\r\n <option *ngFor=\"let visit of visitsPerSpace; index as index\" value=\"{{index}}\">{{ visit.name}}\r\n </option>\r\n </select>\r\n <select class=\"form-control flex-fill floor select-menu\" [(ngModel)]=\"selectedFloor\"\r\n (ngModelChange)=\"onFloorClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Floor' | translate}}</option>\r\n <option *ngFor=\"let floor of floorsPerSpace\" [ngValue]=\"floor\">{{ floor.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu zone\" [(ngModel)]=\"selectedZone\"\r\n (ngModelChange)=\"onZoneClick()\">\r\n <option [ngValue]=\"null\" selected>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of zonesPerFloor\" [ngValue]=\"zone\"><span\r\n *ngIf=\"zone.code_ref\">{{zone.code_ref}}_</span>{{zone.name}}</option>\r\n </select>\r\n <select class=\"form-control flex-fill select-menu\" [(ngModel)]=\"selectedChildZone\"\r\n *ngIf=\"childrenZones && childrenZones.length>0\" (ngModelChange)=\"onChildZoneClick()\">\r\n <option [ngValue]=\"null\" selected disabled>{{'Zone' | translate}}</option>\r\n <option *ngFor=\"let zone of childrenZones\" [ngValue]=\"zone\">{{ zone.name}}</option>\r\n </select>\r\n <!-- <select class=\"form-control flex-fill\">\r\n <option i18n>{{'Favorites' | translate}}</option>\r\n </select> -->\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\" *ngIf=\"showLocation()\">\r\n <p class=\"fw-bold lh-base align-middle text-center\">\r\n {{ showLocation() }}\r\n </p>\r\n </div>\r\n <div class=\"row align-items-center justify-content-center ml-0 p-1\">\r\n\r\n <div class=\"outer_circle w-auto m-1\">\r\n <button id='btn-icon' [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\"\r\n (click)=\"goTo()\"></button>\r\n </div>\r\n <button (click)=\"goTo()\" class=\"btn rounded-pill btn-3d w-auto m-1\"\r\n [disabled]=\"!selectedLocation || !selectedModel3d || !canGo()\">{{'3D visit' | translate}}</button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</nav>", styles: [":host{position:sticky;top:0;height:123px}.navbar{z-index:200;padding:.4rem 1rem}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0}.form-control{width:100%;min-width:80px;max-width:18%}.location{width:auto;max-width:35%}.floor,.zone{width:auto;max-width:30%}button{color:#fff;padding:5px 10px;font-size:1.1em}.btn-3d:active:hover:not([disabled]){color:var(--smarterplan-secondary)}.btn-3d[disabled]:hover{color:#fff}.navbar-toggler{margin-right:1em}.select-menu{max-width:inherit}#btn-icon{width:30px;height:30px;background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%23565656%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\");border:none;vertical-align:middle}#btn-icon:hover{background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%234BA4A8%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}#btn-icon[disabled]:hover{background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%0D%3C!-- Generator%3A Adobe Illustrator 25.2.0%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%0D%3Csvg version%3D%221.1%22 id%3D%22Calque_1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 x%3D%220px%22 y%3D%220px%22%0D%09 viewBox%3D%220 0 60 60%22 style%3D%22enable-background%3Anew 0 0 60 60%3B%22 xml%3Aspace%3D%22preserve%22%3E%0D%3Cstyle type%3D%22text%2Fcss%22%3E%0D%09.st0%7Bfill%3A%23565656%3B%7D%0D%3C%2Fstyle%3E%0D%3Cg%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M43.9%2C32.1V17.7c0-0.4-0.2-0.7-0.5-0.9l-12.8-8c-0.2-0.1-0.4-0.2-0.6-0.2c-0.2%2C0-0.4%2C0.1-0.6%2C0.2l-12.8%2C8%0D%09%09c-0.3%2C0.2-0.5%2C0.5-0.5%2C0.9v14.4c0%2C0.4%2C0.2%2C0.7%2C0.5%2C0.9l12.8%2C8c0.3%2C0.2%2C0.8%2C0.2%2C1.1%2C0l12.8-8C43.7%2C32.8%2C43.9%2C32.5%2C43.9%2C32.1z%0D%09%09 M28.9%2C38.2l-10.7-6.7v-12l10.7%2C6.7V38.2z M30%2C24.4l-10.8-6.8L30%2C10.9l10.8%2C6.8L30%2C24.4z M41.8%2C31.5l-10.7%2C6.7v-12l10.7-6.7V31.5z%22%0D%09%09%2F%3E%0D%09%3Cpath class%3D%22st0%22 d%3D%22M56.1%2C29.3l-10.3-6.8v2l1.4%2C1v0l0.8%2C0.5l0%2C0l7%2C4.8c0.3%2C0.2%2C0.4%2C0.5%2C0.4%2C0.8c0%2C0.3-0.2%2C0.6-0.4%2C0.8l-6.8%2C4.7%0D%09%09l0%2C0l-0.9%2C0.7v0l-2.9%2C2v0l-13.8%2C9.6c-0.3%2C0.2-0.8%2C0.2-1.1%2C0l-14.2-9.8l-2.6-1.8v0L5%2C32.4c-0.3-0.2-0.4-0.5-0.4-0.8%0D%09%09c0-0.3%2C0.2-0.6%2C0.4-0.8l0%2C0l7.3-5l0%2C0l0.5-0.3v0l1.4-1v-2L3.9%2C29.3c-0.8%2C0.5-1.2%2C1.4-1.2%2C2.4c0%2C0.9%2C0.5%2C1.8%2C1.2%2C2.4l8.8%2C6.1v0%0D%09%09l4.5%2C3.1l11.2%2C7.7c1%2C0.7%2C2.3%2C0.7%2C3.3%2C0l13.7-9.5l1.9-1.3v0l8.8-6.1c0.8-0.5%2C1.2-1.4%2C1.2-2.4S56.9%2C29.8%2C56.1%2C29.3z%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px}@media (max-width: 767px){.navbar{padding:.2rem .5rem}.form-control,.location,.floor,.zone{max-width:100%;margin-bottom:15px}input,select{margin-right:0;margin-bottom:15px}}\n"] }]
|
|
11839
11839
|
}], ctorParameters: function () {
|
|
11840
11840
|
return [{ type: undefined, decorators: [{
|
|
11841
11841
|
type: Inject,
|
|
@@ -11854,6 +11854,7 @@ class MenuBarComponent {
|
|
|
11854
11854
|
this.navigatorService = navigatorService;
|
|
11855
11855
|
this.supportService = supportService;
|
|
11856
11856
|
this.baseVisibilityService = baseVisibilityService;
|
|
11857
|
+
this.isCollapsed = true;
|
|
11857
11858
|
this.isVisitor = true;
|
|
11858
11859
|
this.isVisible = false;
|
|
11859
11860
|
this.isChangePositionVisible = false;
|
|
@@ -11924,13 +11925,14 @@ class MenuBarComponent {
|
|
|
11924
11925
|
}
|
|
11925
11926
|
onChangePositionClick() {
|
|
11926
11927
|
this.baseVisibilityService.isChangePositionVisible.next(!this.isChangePositionVisible);
|
|
11928
|
+
this.isCollapsed = !this.isCollapsed;
|
|
11927
11929
|
}
|
|
11928
11930
|
}
|
|
11929
11931
|
MenuBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MenuBarComponent, deps: [{ token: i1$1.Router }, { token: LocaleService }, { token: BaseUserService }, { token: NavigatorService }, { token: SupportService }, { token: BaseVisibilityService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11930
|
-
MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MenuBarComponent, selector: "lib-menu-bar", ngImport: i0, template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"\" src=\"../assets/images/logos/logo-
|
|
11932
|
+
MenuBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MenuBarComponent, selector: "lib-menu-bar", ngImport: i0, template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex flex-wrap justify-content-start align-items-start align-items-md-center\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1\" (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\r\n <div class=\"change-position-button align-self-end pb-2 align-self-md-center pb-md-0 flex-nowrap\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer\" (click)=\"onChangePositionClick()\" for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Hide\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;max-width:300px;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.search-button-container .btn{width:fit-content}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}.search-button-container{max-width:600px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}.search-button-container{max-width:500px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}.search-button-container{max-width:400px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container{max-width:200px}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}\n"], components: [{ type: AvatarComponent, selector: "lib-avatar", inputs: ["size", "userID"] }, { type: RangeDatePickerComponent, selector: "lib-range-date-picker", inputs: ["cacheName"] }, { type: NavigationBarComponent, selector: "lib-navigation-bar" }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.NgbNavbar, selector: ".navbar" }, { type: i1$1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1$2.NgbCollapse, selector: "[ngbCollapse]", inputs: ["animation", "ngbCollapse"], outputs: ["ngbCollapseChange", "shown", "hidden"], exportAs: ["ngbCollapse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe } });
|
|
11931
11933
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MenuBarComponent, decorators: [{
|
|
11932
11934
|
type: Component,
|
|
11933
|
-
args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"\" src=\"../assets/images/logos/logo-
|
|
11935
|
+
args: [{ selector: 'lib-menu-bar', template: "<div id=\"menu-bar\">\r\n <div *ngIf=\"!isVisitor\">\r\n <nav class=\"navbar navbar-expand-md navbar-light p-0\">\r\n <div class=\"container-fluid\" *ngIf=\"isVisible\">\r\n <div class=\"navbar-brand order-md-0\" [routerLink]=\"['/dashboard']\">\r\n <img alt=\"SmarterPlan\" src=\"../assets/images/logos/logo-immo.png\">\r\n </div>\r\n <div class=\"ms-auto nav-item dropdown profile_pic-container order-md-2\">\r\n <div class=\"profile_pic dropdown-toggle\" data-testid=\"dropdown-menu-button\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <p *ngIf=\"user && mission\" class=\"p-2\">\r\n <span class=\"username\">{{ user.displayName }}</span><br />\r\n <span class=\"user-role\">{{ mission.role }}</span><br />\r\n <span class=\"org\">{{ mission.organisation ? mission.organisation.name : \"No organisation\" |\r\n translate}}</span>\r\n </p>\r\n <div class=\"dropdown-divider\"></div>\r\n <!-- <a class=\"dropdown-item\" routerLink=\"/debug\" *ngIf=\"isManager\">Debug</a> -->\r\n <a class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/dashboard\">{{'Data management' | translate}}</a>\r\n <a class=\"dropdown-item\" data-testid=\"user-management-btn\" routerLink=\"/admin\" *ngIf=\"isManager\">\r\n {{'Users management' | translate}}</a>\r\n <a class=\"dropdown-item\" routerLink=\"/profile\">\r\n {{'Profile' | translate}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n <button class=\"navbar-toggler order-md-1\" (click)=\"navbarCollapse.toggle()\" type=\"button\"\r\n [attr.aria-expanded]=\"!isCollapsed\" aria-controls=\"navbar-collapse\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n <div class=\"navbar-collapse order-md-1\" #navbarCollapse=\"ngbCollapse\" [(ngbCollapse)]=\"isCollapsed\"\r\n [animation]=\"false\">\r\n <form\r\n class=\"form-inline m-0 mt-2 form-container d-flex flex-wrap justify-content-start align-items-start align-items-md-center\">\r\n <div class=\"input-group search-button-container d-flex flex-row flex-nowrap p-0 m-0\">\r\n <input class=\"form-control search-button m-1\" placeholder=\"keyword\" id=\"mainSearchBar\" type=\"text\">\r\n <button class=\"btn btn-outline-primary rounded-pill m-1\" (click)=\"onSubmit()\">{{'Search' |\r\n translate}}</button>\r\n </div>\r\n <lib-range-date-picker cacheName=\"mainDate\"></lib-range-date-picker>\r\n <div class=\"change-position-button align-self-end pb-2 align-self-md-center pb-md-0 flex-nowrap\">\r\n <input type=\"checkbox\" class=\"btn-check\" id=\"btn-check-outlined\" autocomplete=\"off\">\r\n <label class=\"link-primary cursor-pointer\" (click)=\"onChangePositionClick()\" for=\"btn-check-outlined\">{{\r\n (isChangePositionVisible ? \"Hide\" : \"Move to\") | translate }}</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </nav>\r\n <lib-navigation-bar *ngIf=\"isVisible && isChangePositionVisible\"></lib-navigation-bar>\r\n </div>\r\n <div *ngIf=\"isVisitor && isVisible\">\r\n <div class=\"visitor-div\">\r\n <div class=\"logo-container\" data-testid=\"dropdown-menu-button\">\r\n <img class=\"img-logo\" alt=\"SmarterPlanLogo\" src=\"../assets/images/logos/logo-reserve.png\">\r\n </div>\r\n <div class=\"avatar-container-menu\">\r\n <div class=\"profile_pic dropdown-toggle cursor-pointer\" data-bs-toggle=\"dropdown\">\r\n <lib-avatar></lib-avatar>\r\n </div>\r\n <div class=\"dropdown-menu dropdown-menu-right\">\r\n <button class=\"dropdown-item\" (click)=\"localeService.modal()\">{{'Language' | translate}}</button>\r\n <button class=\"dropdown-item\" (click)=\"openSupportForm()\">{{\"Help\" | translate}}</button>\r\n <button data-testid=\"logout-auth-btn\" class=\"dropdown-item\" (click)=\"signOut()\">{{\"Logout\" |\r\n translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["#menu-bar{position:sticky;top:0;z-index:200}.navbar{z-index:200}.navbar-brand{padding-top:5px;padding-bottom:5px;cursor:pointer}.navbar-brand img{height:70px}.profile_pic{border-radius:50%;height:45px;width:45px;margin:8px;border:.2px solid #969696}.navbar-nav .profile-pic-container .dropdown-menu{position:absolute}.navbar.second-nav{z-index:199;background-color:var(--smarterplan-primary)}.profile_pic.dropdown-toggle:after{display:none}.navbar-light{border-bottom:1px solid var(--smarterplan-primary);background-color:#fff}.navbar form{width:100%;margin:0;padding:0}input,select{margin-right:15px}.select{background:transparent;border:none;color:#fff;margin:6px 20px 0;width:auto}button{background-color:#fff;color:var(--smarterplan-primary);padding:5px 10px}button:disabled,button[disabled]{color:#c04f4f}.navbar-toggler{margin-right:1em}.icon{height:40px;width:40px;color:var(--smarterplan-primary)}.search-button-container{width:auto;max-width:300px;align-items:stretch;justify-items:start}.search-button-container .search-button{width:auto;border-radius:1rem!important}.search-button-container .btn{width:fit-content}.visitor-div{background-color:var(--smarterplan-primary);height:60px;display:flex;justify-content:space-between}.profile_pic-container{margin-right:1em}.logo-container,.img-logo{height:100%}.change-position-button{margin-left:2rem}.change-position-button label,.change-position-button .btn-check:checked,.change-position-button .btn-check:focus,.change-position-button .btn-outline-primary,.change-position-button .btn{box-shadow:none!important;outline:0}.change-position-button label{border-radius:16px}.change-position-button .btn-check:checked+.btn{background-color:var(--smarterplan-primary);color:#fff!important}@media (min-width: 1200px){.navbar-brand img{height:100px}.profile_pic{height:60px;width:60px;margin:15px}.search-button-container{max-width:600px}}@media (min-width: 992px) and (max-width: 1199.98px){.navbar-brand img{height:80px}.profile_pic{height:50px;width:50px;margin:12px}.search-button-container{max-width:500px}}@media (min-width: 768px) and (max-width: 991.98px){.navbar-brand img{height:60px}.profile_pic{height:40px;width:40px;margin:10px}.search-button-container{max-width:400px}}@media (max-width: 767.98px){.navbar-brand img{height:50px}.profile_pic{height:30px;width:30px;margin:8px}.search-button-container{max-width:200px}}.form-container{margin:.5rem 0}.navbar-collapse.show{display:flex;padding-bottom:.5rem}\n"] }]
|
|
11934
11936
|
}], ctorParameters: function () { return [{ type: i1$1.Router }, { type: LocaleService }, { type: BaseUserService }, { type: NavigatorService }, { type: SupportService }, { type: BaseVisibilityService }]; } });
|
|
11935
11937
|
|
|
11936
11938
|
class NgxSmarterplanCoreModule {
|