adb-shared 1.0.8 → 1.0.12
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/{lib/adb-header.component.d.ts → adb-header.component.d.ts} +0 -0
- package/{lib/adb-header.module.d.ts → adb-header.module.d.ts} +0 -0
- package/bundles/adb-shared.umd.js +1 -1
- package/bundles/adb-shared.umd.js.map +1 -1
- package/{lib/click-outside.directive.d.ts → click-outside.directive.d.ts} +0 -0
- package/{lib/environment.service.d.ts → environment.service.d.ts} +0 -0
- package/esm2015/adb-header.component.js +101 -0
- package/esm2015/adb-header.module.js +48 -0
- package/esm2015/adb-shared.js +1 -1
- package/esm2015/click-outside.directive.js +28 -0
- package/esm2015/{lib/environment.service.js → environment.service.js} +1 -1
- package/esm2015/navigation.model.js +2 -0
- package/esm2015/public-api.js +3 -3
- package/fesm2015/adb-shared.js +1 -1
- package/fesm2015/adb-shared.js.map +1 -1
- package/{lib/navigation.model.d.ts → navigation.model.d.ts} +0 -0
- package/package.json +6 -5
- package/public-api.d.ts +2 -2
- package/esm2015/lib/adb-header.component.js +0 -101
- package/esm2015/lib/adb-header.module.js +0 -48
- package/esm2015/lib/click-outside.directive.js +0 -28
- package/esm2015/lib/navigation.model.js +0 -2
|
File without changes
|
|
File without changes
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
return ADBHeaderComponent;
|
|
156
156
|
}());
|
|
157
157
|
/** @nocollapse */ ADBHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderComponent, deps: [{ token: i1__namespace.HttpClient }, { token: EnvironmentService }, { token: i3__namespace.TranslateService }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
158
|
-
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0__namespace, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">{{'ADB_HEADER.DEV_INFO'|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3__namespace.TranslatePipe } });
|
|
158
|
+
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0__namespace, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3__namespace.TranslatePipe } });
|
|
159
159
|
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderComponent, decorators: [{
|
|
160
160
|
type: i0.Component,
|
|
161
161
|
args: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb-shared.umd.js","sources":["../../../projects/artdata-shared/src/lib/environment.service.ts","../../../projects/artdata-shared/src/lib/click-outside.directive.ts","../../../projects/artdata-shared/src/lib/adb-header.component.ts","../../../projects/artdata-shared/src/lib/adb-header.component.html","../../../projects/artdata-shared/src/lib/adb-header.module.ts","../../../projects/artdata-shared/src/public-api.ts","../../../projects/artdata-shared/src/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\nimport { take } from 'rxjs/operators';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n translationFinished = false;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n if (this.trans.store.translations[this.trans.currentLang]) {\r\n this.loadTranslation(baseUrl, this.trans.currentLang);\r\n }\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(event: any, transId: string): void {\r\n event.preventDefault(); event.stopPropagation();\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // private initAllTranslations(baseUrl: string): void {\r\n // const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n // this.subscription.add(trans$.subscribe(result => {\r\n // this.trans.setTranslation('en', result[0], true);\r\n // this.trans.setTranslation('sv', result[1], true);\r\n // }));\r\n // }\r\n}\r\n\r\n","<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">{{'ADB_HEADER.DEV_INFO'|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\nexport * from './lib/adb-header.component';\r\nexport * from './lib/adb-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Inject","EventEmitter","Directive","Output","HostListener","Subscription","Component","Input","CommonModule","HttpClientModule","RouterModule","TranslateModule","NgModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adb-shared.umd.js","sources":["../../../projects/artdata-shared/src/adb-header/environment.service.ts","../../../projects/artdata-shared/src/adb-header/click-outside.directive.ts","../../../projects/artdata-shared/src/adb-header/adb-header.component.ts","../../../projects/artdata-shared/src/adb-header/adb-header.component.html","../../../projects/artdata-shared/src/adb-header/adb-header.module.ts","../../../projects/artdata-shared/src/adb-header/public-api.ts","../../../projects/artdata-shared/src/adb-header/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { HttpClient} from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n translationFinished = false;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n if (this.trans.store.translations[this.trans.currentLang]) {\r\n this.loadTranslation(baseUrl, this.trans.currentLang);\r\n }\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(event: any, transId: string): void {\r\n event.preventDefault(); event.stopPropagation();\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // private initAllTranslations(baseUrl: string): void {\r\n // const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n // this.subscription.add(trans$.subscribe(result => {\r\n // this.trans.setTranslation('en', result[0], true);\r\n // this.trans.setTranslation('sv', result[1], true);\r\n // }));\r\n // }\r\n}\r\n\r\n","<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\nexport * from './adb-header.component';\r\nexport * from './adb-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Inject","EventEmitter","Directive","Output","HostListener","Subscription","Component","Input","CommonModule","HttpClientModule","RouterModule","TranslateModule","NgModule"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "./environment.service";
|
|
6
|
+
import * as i3 from "@ngx-translate/core";
|
|
7
|
+
import * as i4 from "./click-outside.directive";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
9
|
+
export class ADBHeaderComponent {
|
|
10
|
+
constructor(httpClient, envService, trans) {
|
|
11
|
+
this.httpClient = httpClient;
|
|
12
|
+
this.envService = envService;
|
|
13
|
+
this.trans = trans;
|
|
14
|
+
this.subscription = new Subscription();
|
|
15
|
+
this.loginClicked = new EventEmitter();
|
|
16
|
+
this.logoutClicked = new EventEmitter();
|
|
17
|
+
this.dropMenuChange = new EventEmitter();
|
|
18
|
+
this.translationFinished = false;
|
|
19
|
+
this.showMenu = false;
|
|
20
|
+
this.showUserMenu = false;
|
|
21
|
+
}
|
|
22
|
+
set userName(fullName) {
|
|
23
|
+
this.fullName = fullName;
|
|
24
|
+
const splitted = fullName.split(' ');
|
|
25
|
+
if (splitted && splitted.length > 1) {
|
|
26
|
+
const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);
|
|
27
|
+
this.initials = initials.toUpperCase();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.url = window.location.href;
|
|
33
|
+
const baseUrl = this.envService.environment.resourceUrl;
|
|
34
|
+
this.subscription.add(this.httpClient.get(baseUrl + '/assets/links.json').subscribe(result => {
|
|
35
|
+
this.navigation = result;
|
|
36
|
+
}));
|
|
37
|
+
this.initTranslations(baseUrl);
|
|
38
|
+
}
|
|
39
|
+
initTranslations(baseUrl) {
|
|
40
|
+
if (this.trans.store.translations[this.trans.currentLang]) {
|
|
41
|
+
this.loadTranslation(baseUrl, this.trans.currentLang);
|
|
42
|
+
}
|
|
43
|
+
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
44
|
+
this.translationFinished = false;
|
|
45
|
+
this.loadTranslation(baseUrl, event.lang);
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
loadTranslation(baseUrl, lang) {
|
|
49
|
+
//TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
|
|
50
|
+
this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {
|
|
51
|
+
this.trans.setTranslation(lang, translations, true);
|
|
52
|
+
this.translationFinished = true;
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
showMenuDropdown(show) {
|
|
56
|
+
if (this.showMenu !== show) {
|
|
57
|
+
this.showMenu = show;
|
|
58
|
+
this.dropMenuChange.emit(show);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
setLanguage(lang) {
|
|
62
|
+
this.trans.use(lang);
|
|
63
|
+
//TODO: set localstorage/cookies or probaly event to main app
|
|
64
|
+
}
|
|
65
|
+
onExpandLink(event, transId) {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
event.stopPropagation();
|
|
68
|
+
if (this.expandedLink === transId) {
|
|
69
|
+
this.expandedLink = null;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.expandedLink = transId;
|
|
73
|
+
}
|
|
74
|
+
login() {
|
|
75
|
+
this.loginClicked.emit();
|
|
76
|
+
}
|
|
77
|
+
logout() {
|
|
78
|
+
this.logoutClicked.emit();
|
|
79
|
+
}
|
|
80
|
+
ngOnDestroy() {
|
|
81
|
+
this.subscription.unsubscribe();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** @nocollapse */ ADBHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
+
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: i4.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{
|
|
89
|
+
selector: 'adb-header2',
|
|
90
|
+
templateUrl: './adb-header.component.html'
|
|
91
|
+
}]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.TranslateService }]; }, propDecorators: { loginClicked: [{
|
|
93
|
+
type: Output
|
|
94
|
+
}], logoutClicked: [{
|
|
95
|
+
type: Output
|
|
96
|
+
}], dropMenuChange: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}], userName: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}] } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvYWRiLWhlYWRlci9hZGItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9hZGItaGVhZGVyL2FkYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFHLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQU9yQyxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUNVLFVBQXNCLEVBQ3RCLFVBQThCLEVBQy9CLEtBQXVCO1FBRnRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUF2QnhCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV2RCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFVNUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQVFyQixDQUFDO0lBbEJELElBQWEsUUFBUSxDQUFDLFFBQWdCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFD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QUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7bUlBckZVLGtCQUFrQjt1SEFBbEIsa0JBQWtCLGtNQ1YvQixpOFRBdUpBOzRGRDdJYSxrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFdBQVcsRUFBRSw2QkFBNkI7aUJBQzNDO2lLQUdXLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUdNLFFBQVE7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7ICBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi5tb2RlbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWRiLWhlYWRlcjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGItaGVhZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBPdXRwdXQoKSBsb2dpbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvZ291dENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyb3BNZW51Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgdHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCB1c2VyTmFtZShmdWxsTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZ1bGxOYW1lID0gZnVsbE5hbWU7XHJcbiAgICBjb25zdCBzcGxpdHRlZCA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3BsaXR0ZWQgJiYgc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBpbml0aWFscyA9IHNwbGl0dGVkLnNoaWZ0KCkuY2hhckF0KDApICsgc3BsaXR0ZWQucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB0aGlzLmluaXRpYWxzID0gaW5pdGlhbHMudG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGluaXRpYWxzOiBzdHJpbmc7XHJcbiAgc2hvd01lbnUgPSBmYWxzZTtcclxuICBzaG93VXNlck1lbnUgPSBmYWxzZTtcclxuICBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIGV4cGFuZGVkTGluazogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBlbnZTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnM6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmVudlNlcnZpY2UuZW52aXJvbm1lbnQucmVzb3VyY2VVcmw7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5odHRwQ2xpZW50LmdldDxOYXZpZ2F0aW9uPihiYXNlVXJsICsgJy9hc3NldHMvbGlua3MuanNvbicpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb24gPSByZXN1bHQ7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmluaXRUcmFuc2xhdGlvbnMoYmFzZVVybCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50cmFucy5zdG9yZS50cmFuc2xhdGlvbnNbdGhpcy50cmFucy5jdXJyZW50TGFuZ10pIHtcclxuICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgdGhpcy50cmFucy5jdXJyZW50TGFuZyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50cmFucy5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgZXZlbnQubGFuZyk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRUcmFuc2xhdGlvbihiYXNlVXJsOiBzdHJpbmcsIGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy9UT0RPOiBQcmVwYXJlIGZvciBkaWZmZW50cyBsYW5nIHRoZW4gZW4gc3YgKGVuLUdCKSBvciBhZGQgbW9yZSBmaWxlcyBpbiBkZXZjb21wb25lbnRzZXJ2ZXIgOilcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmh0dHBDbGllbnQuZ2V0KGJhc2VVcmwgKyBgL2Fzc2V0cy9pMThuLyR7bGFuZ30uanNvbmApLnN1YnNjcmliZSh0cmFuc2xhdGlvbnMgPT4ge1xyXG4gICAgICB0aGlzLnRyYW5zLnNldFRyYW5zbGF0aW9uKGxhbmcsIHRyYW5zbGF0aW9ucywgdHJ1ZSk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25GaW5pc2hlZCA9IHRydWU7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBzaG93TWVudURyb3Bkb3duKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3dNZW51ICE9PSBzaG93KSB7XHJcbiAgICAgIHRoaXMuc2hvd01lbnUgPSBzaG93O1xyXG4gICAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoc2hvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zLnVzZShsYW5nKTtcclxuICAgIC8vVE9ETzogc2V0IGxvY2Fsc3RvcmFnZS9jb29raWVzIG9yIHByb2JhbHkgZXZlbnQgdG8gbWFpbiBhcHBcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kTGluayhldmVudDogYW55LCB0cmFuc0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRMaW5rID09PSB0cmFuc0lkKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRMaW5rID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRlZExpbmsgPSB0cmFuc0lkO1xyXG4gIH1cclxuXHJcbiAgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ2luQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ291dENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBpbml0QWxsVHJhbnNsYXRpb25zKGJhc2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgdHJhbnMkID0gZm9ya0pvaW4oW3RoaXMuaHR0cENsaWVudC5nZXQoYmFzZVVybCArICcvYXNzZXRzL2kxOG4vZW4uanNvbicpLCB0aGlzLmh0dHBDbGllbnQuZ2V0KGJhc2VVcmwgKyAnL2Fzc2V0cy9pMThuL3N2Lmpzb24nKV0pXHJcbiAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodHJhbnMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gIC8vICAgICB0aGlzLnRyYW5zLnNldFRyYW5zbGF0aW9uKCdlbicsIHJlc3VsdFswXSwgdHJ1ZSk7XHJcbiAgLy8gICAgIHRoaXMudHJhbnMuc2V0VHJhbnNsYXRpb24oJ3N2JywgcmVzdWx0WzFdLCB0cnVlKTtcclxuICAvLyAgIH0pKTtcclxuICAvLyB9XHJcbn1cclxuXHJcbiIsIjxoZWFkZXIgaWQ9XCJ0b3AtaGVhZGVyXCIgKGNsaWNrT3V0c2lkZSk9XCJzaG93VXNlck1lbnU9ZmFsc2U7c2hvd01lbnVEcm9wZG93bihmYWxzZSk7XCI+XHJcbiAgICA8bmF2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4ganVzdGlmeS1jb250ZW50LW1kLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgc3R5bGU9XCJoZWlnaHQ6IDMuMnJlbTtcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIHBzLTIgZC1zbS1ibG9jayBkLW1kLW5vbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvX3NtX3doaXRlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImJpZ2dlclwiPkFydGZha3RhPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cImQtbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXIgZC1sZy1mbGV4IHBlLTQgZ2FwLTRcIiAqbmdJZj1cIm5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiICpuZ0lmPVwibGluay50b3BMaW5rXCIgW25nQ2xhc3NdPVwieydkLW5vbmUgZC14bC1ibG9jayc6bGluay50cmFuc0lkPT09J0FEQl9IRUFERVIuT0JTRVJWQVRJT04nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBweS0xIHB4LTIgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd1VzZXJNZW51ID0gZmFsc2U7c2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy0xIGZhc1wiIFtuZ0NsYXNzXT1cInNob3dNZW51PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIHBzLTRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbml0aWFsc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBpbml0aWFsc1wiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCI+e3tpbml0aWFsc319PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluaXRpYWxzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd1VzZXJNZW51XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtYm9keSBiZy13aGl0ZSBwLTNcIiBzdHlsZT1cIndpZHRoOjE1cmVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbml0aWFsc1wiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7ZnVsbE5hbWV9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC1uMyB0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHQgbWUtMVwiPjwvaT57eydBREJfSEVBREVSLkxPR09VVCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibG9naW4oKVwiIGlkPVwic3RhcnQtbG9naW5cIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm5hdmlnYXRpb25cIiBjbGFzcz1cImQtYmxvY2sgbXQtM1wiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd01lbnVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1ib2R5XCIgKm5nSWY9XCJuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB0LTMgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LXdyYXAgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1tZC1ub25lIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1ub25lXCIgKm5nSWY9XCIhaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dpbigpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImxvZ2luXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dJTid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5jcmVhdGVBY2NvdW50TGlua319P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319JnJldHVyblVybD17e3VybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cInRyYW5zLmN1cnJlbnRMYW5nPT09J2VuJ1wiIChjbGljayk9XCJzZXRMYW5ndWFnZSgnc3YnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuSU5fU1dFRElTSCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdlbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5JTl9FTkdMSVNIJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5TRVJWSUNFUyd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzcGxhc2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbXMtMCBtYi0wIHBzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWItMSBsaXN0LWdyb3VwLWl0ZW0gcC0wIHJvdW5kZWRcIiAqbmdGb3I9XCJsZXQgbGluayBvZiBuYXZpZ2F0aW9uLmxpbmtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rP3RydWU6ZmFsc2VcIiByb2xlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2xpbmsudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ncm93LTEgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZhLXN0YWNrIG1lLTFcIiAqbmdJZj1cImxpbmsuaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IHRleHQtcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXN0YWNrLTF4IGZhLWludmVyc2VcIiBbbmdDbGFzc109XCJsaW5rLmljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGluay50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWV4cGFuZCBtZS0yXCIgKm5nSWY9XCJsaW5rLmNoaWxkcmVuPy5sZW5ndGg+MFwiIChjbGljayk9XCJvbkV4cGFuZExpbmsoJGV2ZW50LGxpbmsudHJhbnNJZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi11cFwiIFtuZ0NsYXNzXT1cImxpbmsudHJhbnNJZD09PWV4cGFuZGVkTGluaz8nZC1ibG9jayAnOidkLW5vbmUnXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIiBbbmdDbGFzc109XCJsaW5rLnRyYW5zSWQhPT1leHBhbmRlZExpbms/J2QtYmxvY2sgJzonZC1ub25lJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiIFtuZ0NsYXNzXT1cImxpbmsudHJhbnNJZD09PWV4cGFuZGVkTGluaz8nZC1ibG9jayc6J2Qtbm9uZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJweS0xIG0tMFwiIFtjbGFzcy5wdC0wXT1cImZpcnN0XCIgKm5nRm9yPVwibGV0IHN1Ykxpbmsgb2YgbGluay5jaGlsZHJlbjtsZXQgZmlyc3QgPSBmaXJzdFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OjNyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidy0xMDAgZC1ibG9ja1wiIGhyZWY9XCJ7e3N1YkxpbmsudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3ViTGluay50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJuYXZpZ2F0aW9uLmFib3V0XCIgY2xhc3M9XCJtdC0yIG1iLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTFcIj57eydBREJfSEVBREVSLkNPTlRBQ1QnfHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xIHJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC0yIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2tcIiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXQuaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IHRleHQtcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXN0YWNrLTF4IGZhLWludmVyc2UgZmEtZW52ZWxvcGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYmctd2hpdGUgcC0yXCIgaHJlZj1cIm1haWx0bzphcnRmYWt0YUBhcnRkYXRhYmFua2VuLnNlXCI+YXJ0ZmFrdGFAYXJ0ZGF0YWJhbmtlbi5zZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC0yIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2tcIiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXQuaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IHRleHQtcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXN0YWNrLTF4IGZhLWludmVyc2VcIiBbbmdDbGFzc109XCJuYXZpZ2F0aW9uLmFib3V0Lmljb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm5hdmlnYXRpb24uYWJvdXQudXJsXCI+e3tuYXZpZ2F0aW9uLmFib3V0LnRyYW5zSWR8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImhlaWdodDoxMHJlbVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuREVWRUxPUEVEX0JZJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cInRleHQtd2hpdGVcIj48dT57eydBREJfSEVBREVSLkFSVERBVEFCQU5LRU4nfHRyYW5zbGF0ZX19PC91PjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2hlYWRlcj5cclxuIl19
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { ADBHeaderComponent } from './adb-header.component';
|
|
5
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
6
|
+
import { EnvironmentService } from './environment.service';
|
|
7
|
+
import { RouterModule } from '@angular/router';
|
|
8
|
+
import { ClickOutsideDirective } from './click-outside.directive';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ADBHeaderModule {
|
|
11
|
+
static forRoot(environment) {
|
|
12
|
+
return {
|
|
13
|
+
ngModule: ADBHeaderModule,
|
|
14
|
+
providers: [
|
|
15
|
+
EnvironmentService,
|
|
16
|
+
{
|
|
17
|
+
provide: 'env',
|
|
18
|
+
useValue: environment
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** @nocollapse */ ADBHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
+
/** @nocollapse */ ADBHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, declarations: [ADBHeaderComponent, ClickOutsideDirective], imports: [CommonModule,
|
|
26
|
+
HttpClientModule,
|
|
27
|
+
RouterModule,
|
|
28
|
+
TranslateModule], exports: [ADBHeaderComponent] });
|
|
29
|
+
/** @nocollapse */ ADBHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, imports: [[
|
|
30
|
+
CommonModule,
|
|
31
|
+
HttpClientModule,
|
|
32
|
+
RouterModule,
|
|
33
|
+
TranslateModule
|
|
34
|
+
]] });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, decorators: [{
|
|
36
|
+
type: NgModule,
|
|
37
|
+
args: [{
|
|
38
|
+
declarations: [ADBHeaderComponent, ClickOutsideDirective],
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
HttpClientModule,
|
|
42
|
+
RouterModule,
|
|
43
|
+
TranslateModule
|
|
44
|
+
],
|
|
45
|
+
exports: [ADBHeaderComponent]
|
|
46
|
+
}]
|
|
47
|
+
}] });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvYWRiLWhlYWRlci9hZGItaGVhZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFhbEUsTUFBTSxPQUFPLGVBQWU7SUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFnQjtRQUNwQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNULGtCQUFrQjtnQkFDbEI7b0JBQ0UsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0lBWlUsZUFBZTtpSUFBZixlQUFlLGlCQVRYLGtCQUFrQixFQUFFLHFCQUFxQixhQUV0RCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixlQUFlLGFBRVAsa0JBQWtCO2lJQUVqQixlQUFlLFlBUmpCO1lBQ1AsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osZUFBZTtTQUNoQjs0RkFHVSxlQUFlO2tCQVYzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDO29CQUN6RCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEFEQkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vYWRiLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0FEQkhlYWRlckNvbXBvbmVudCwgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbQURCSGVhZGVyQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCSGVhZGVyTW9kdWxlIHtcclxuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoZW52aXJvbm1lbnQ6IGFueSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QURCSGVhZGVyTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQURCSGVhZGVyTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogJ2VudicsIC8vIHlvdSBjYW4gYWxzbyB1c2UgSW5qZWN0aW9uVG9rZW5cclxuICAgICAgICAgIHVzZVZhbHVlOiBlbnZpcm9ubWVudFxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|
package/esm2015/adb-shared.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLXNoYXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9hZGItaGVhZGVyL2FkYi1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Directive, Output, EventEmitter, HostListener } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ClickOutsideDirective {
|
|
4
|
+
constructor(elementRef) {
|
|
5
|
+
this.elementRef = elementRef;
|
|
6
|
+
this.clickOutside = new EventEmitter();
|
|
7
|
+
}
|
|
8
|
+
onClick(target) {
|
|
9
|
+
const clickedInside = this.elementRef.nativeElement.contains(target);
|
|
10
|
+
if (!clickedInside) {
|
|
11
|
+
this.clickOutside.emit();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** @nocollapse */ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
/** @nocollapse */ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
18
|
+
type: Directive,
|
|
19
|
+
args: [{
|
|
20
|
+
selector: '[clickOutside]',
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { clickOutside: [{
|
|
23
|
+
type: Output
|
|
24
|
+
}], onClick: [{
|
|
25
|
+
type: HostListener,
|
|
26
|
+
args: ['document:click', ['$event.target']]
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvYWRiLWhlYWRlci9jbGljay1vdXRzaWRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFTLE1BQU0sRUFBRSxZQUFZLEVBQWMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUlqRyxNQUFNLE9BQU8scUJBQXFCO0lBRTlCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ0osQ0FBQztJQUd4QyxPQUFPLENBQUMsTUFBVztRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQzs7c0lBVlEscUJBQXFCOzBIQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUM3QjtpR0FFYSxZQUFZO3NCQUFyQixNQUFNO2dCQUlBLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjbGlja091dHNpZGVdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWNrT3V0c2lkZURpcmVjdGl2ZSB7XHJcbiAgICBAT3V0cHV0KCkgY2xpY2tPdXRzaWRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxyXG4gICAgcHVibGljIG9uQ2xpY2sodGFyZ2V0OiBhbnkpIHtcclxuICAgICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KTtcclxuICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jbGlja091dHNpZGUuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -13,4 +13,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
13
13
|
type: Inject,
|
|
14
14
|
args: ['env']
|
|
15
15
|
}] }]; } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9hZGItaGVhZGVyL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsWUFBa0MsV0FBVztRQUFYLGdCQUFXLEdBQVgsV0FBVyxDQUFBO0lBQzdDLENBQUM7O21JQUZRLGtCQUFrQixrQkFDUCxLQUFLO3VJQURoQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVTs7MEJBRU0sTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50U2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KCdlbnYnKSBwdWJsaWMgZW52aXJvbm1lbnQpIHtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9hZGItaGVhZGVyL25hdmlnYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvbiB7XHJcbiAgICBhYm91dDogTGluaztcclxuICAgIGxpbmtzOiBMaW5rW107XHJcbiAgICBjcmVhdGVBY2NvdW50TGluazogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xyXG4gICAgdHJhbnNJZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICB0b3BMaW5rPzogYm9vbGVhbjtcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBjaGlsZHJlbj86IExpbmtbXTtcclxufSJdfQ==
|
package/esm2015/public-api.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of artdata-shared
|
|
3
3
|
*/
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export * from './adb-header.component';
|
|
5
|
+
export * from './adb-header.module';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9hZGItaGVhZGVyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXJ0ZGF0YS1zaGFyZWRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2FkYi1oZWFkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hZGItaGVhZGVyLm1vZHVsZSc7XHJcbiJdfQ==
|
package/fesm2015/adb-shared.js
CHANGED
|
@@ -125,7 +125,7 @@ class ADBHeaderComponent {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
/** @nocollapse */ ADBHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, deps: [{ token: i1.HttpClient }, { token: EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
-
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">{{'ADB_HEADER.DEV_INFO'|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
128
|
+
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
129
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, decorators: [{
|
|
130
130
|
type: Component,
|
|
131
131
|
args: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb-shared.js","sources":["../../../projects/artdata-shared/src/lib/environment.service.ts","../../../projects/artdata-shared/src/lib/click-outside.directive.ts","../../../projects/artdata-shared/src/lib/adb-header.component.ts","../../../projects/artdata-shared/src/lib/adb-header.component.html","../../../projects/artdata-shared/src/lib/adb-header.module.ts","../../../projects/artdata-shared/src/public-api.ts","../../../projects/artdata-shared/src/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\nimport { take } from 'rxjs/operators';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n translationFinished = false;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n if (this.trans.store.translations[this.trans.currentLang]) {\r\n this.loadTranslation(baseUrl, this.trans.currentLang);\r\n }\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(event: any, transId: string): void {\r\n event.preventDefault(); event.stopPropagation();\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // private initAllTranslations(baseUrl: string): void {\r\n // const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n // this.subscription.add(trans$.subscribe(result => {\r\n // this.trans.setTranslation('en', result[0], true);\r\n // this.trans.setTranslation('sv', result[1], true);\r\n // }));\r\n // }\r\n}\r\n\r\n","<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">{{'ADB_HEADER.DEV_INFO'|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\nexport * from './lib/adb-header.component';\r\nexport * from './lib/adb-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;MAGa,kBAAkB;IAC3B,YAAkC,WAAW;QAAX,gBAAW,GAAX,WAAW,CAAA;KAC5C;;mIAFQ,kBAAkB,kBACP,KAAK;uIADhB,kBAAkB;4FAAlB,kBAAkB;kBAD9B,UAAU;;0BAEM,MAAM;2BAAC,KAAK;;;MCAhB,qBAAqB;IAE9B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QADhC,iBAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;KACH;IAGxC,OAAO,CAAC,MAAW;QACtB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC5B;KACJ;;sIAVQ,qBAAqB;0HAArB,qBAAqB;4FAArB,qBAAqB;kBAHjC,SAAS;mBAAC;oBACP,QAAQ,EAAE,gBAAgB;iBAC7B;iGAEa,YAAY;sBAArB,MAAM;gBAIA,OAAO;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC;;;MCGxC,kBAAkB;IAqB7B,YACU,UAAsB,EACtB,UAA8B,EAC/B,KAAuB;QAFtB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAoB;QAC/B,UAAK,GAAL,KAAK,CAAkB;QAvBxB,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAClC,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,mBAAc,GAAG,IAAI,YAAY,EAAW,CAAC;QAEvD,wBAAmB,GAAG,KAAK,CAAC;QAU5B,aAAQ,GAAG,KAAK,CAAC;QACjB,iBAAY,GAAG,KAAK,CAAC;KAQpB;IAlBD,IAAa,QAAQ,CAAC,QAAgB;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;SACxC;KACF;;IAaD,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,OAAO,GAAG,oBAAoB,CAAC,CAAC,SAAS,CAAC,MAAM;YACpG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;SAC1B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;KAChC;IAEO,gBAAgB,CAAC,OAAe;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACzD,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK;YAC5D,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC3C,CAAC,CAAC,CAAC;KACL;IAEO,eAAe,CAAC,OAAe,EAAE,IAAY;;QAEnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,GAAG,gBAAgB,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,YAAY;YACrG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC,CAAC,CAAC,CAAC;KACL;IAED,gBAAgB,CAAC,IAAa;QAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;KACF;IAED,WAAW,CAAC,IAAI;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;KAEtB;IAED,YAAY,CAAC,KAAU,EAAE,OAAe;QACtC,KAAK,CAAC,cAAc,EAAE,CAAC;QAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO;SACR;QACD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;KAC7B;IAED,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,WAAW;QACT,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;;mIArFU,kBAAkB;uHAAlB,kBAAkB,kMCX/B,87TAwJA;4FD7Ia,kBAAkB;kBAJ9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,WAAW,EAAE,6BAA6B;iBAC3C;8JAGW,YAAY;sBAArB,MAAM;gBACG,aAAa;sBAAtB,MAAM;gBACG,cAAc;sBAAvB,MAAM;gBAGM,QAAQ;sBAApB,KAAK;;;MEGK,eAAe;IACnB,OAAO,OAAO,CAAC,WAAgB;QACpC,OAAO;YACL,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE;gBACT,kBAAkB;gBAClB;oBACE,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,WAAW;iBACtB;aACF;SACF,CAAC;KACH;;gIAZU,eAAe;iIAAf,eAAe,iBATX,kBAAkB,EAAE,qBAAqB,aAEtD,YAAY;QACZ,gBAAgB;QAChB,YAAY;QACZ,eAAe,aAEP,kBAAkB;iIAEjB,eAAe,YARjB;YACP,YAAY;YACZ,gBAAgB;YAChB,YAAY;YACZ,eAAe;SAChB;4FAGU,eAAe;kBAV3B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;oBACzD,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,YAAY;wBACZ,eAAe;qBAChB;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B;;;ACpBD;;;;ACAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"adb-shared.js","sources":["../../../projects/artdata-shared/src/adb-header/environment.service.ts","../../../projects/artdata-shared/src/adb-header/click-outside.directive.ts","../../../projects/artdata-shared/src/adb-header/adb-header.component.ts","../../../projects/artdata-shared/src/adb-header/adb-header.component.html","../../../projects/artdata-shared/src/adb-header/adb-header.module.ts","../../../projects/artdata-shared/src/adb-header/public-api.ts","../../../projects/artdata-shared/src/adb-header/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { HttpClient} from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n translationFinished = false;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initTranslations(baseUrl);\r\n }\r\n\r\n private initTranslations(baseUrl: string): void {\r\n if (this.trans.store.translations[this.trans.currentLang]) {\r\n this.loadTranslation(baseUrl, this.trans.currentLang);\r\n }\r\n this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n this.translationFinished = false;\r\n this.loadTranslation(baseUrl, event.lang);\r\n }));\r\n }\r\n\r\n private loadTranslation(baseUrl: string, lang: string): void {\r\n //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {\r\n this.trans.setTranslation(lang, translations, true);\r\n this.translationFinished = true;\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(event: any, transId: string): void {\r\n event.preventDefault(); event.stopPropagation();\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n // private initAllTranslations(baseUrl: string): void {\r\n // const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n // this.subscription.add(trans$.subscribe(result => {\r\n // this.trans.setTranslation('en', result[0], true);\r\n // this.trans.setTranslation('sv', result[1], true);\r\n // }));\r\n // }\r\n}\r\n\r\n","<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"d-flex align-items-center gap-2 text-dark\">\r\n <span class=\"initials\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3 text-muted\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0 rounded\" *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2 rounded\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\nexport * from './adb-header.component';\r\nexport * from './adb-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adb-shared",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"author": "ADB",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@angular/common": "12
|
|
8
|
-
"@angular/core": "12
|
|
9
|
-
"@
|
|
10
|
-
"@ngx-translate/
|
|
7
|
+
"@angular/common": "12.x || 13.x",
|
|
8
|
+
"@angular/core": "12.x || 13.x",
|
|
9
|
+
"@angular/router": "12.x || 13.x",
|
|
10
|
+
"@ngx-translate/core": "12.x || 13.x",
|
|
11
|
+
"@ngx-translate/http-loader": "6.x || 7.x"
|
|
11
12
|
},
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"tslib": "^2.3.0"
|
package/public-api.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
1
|
+
export * from './adb-header.component';
|
|
2
|
+
export * from './adb-header.module';
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { Subscription } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common/http";
|
|
5
|
-
import * as i2 from "./environment.service";
|
|
6
|
-
import * as i3 from "@ngx-translate/core";
|
|
7
|
-
import * as i4 from "./click-outside.directive";
|
|
8
|
-
import * as i5 from "@angular/common";
|
|
9
|
-
export class ADBHeaderComponent {
|
|
10
|
-
constructor(httpClient, envService, trans) {
|
|
11
|
-
this.httpClient = httpClient;
|
|
12
|
-
this.envService = envService;
|
|
13
|
-
this.trans = trans;
|
|
14
|
-
this.subscription = new Subscription();
|
|
15
|
-
this.loginClicked = new EventEmitter();
|
|
16
|
-
this.logoutClicked = new EventEmitter();
|
|
17
|
-
this.dropMenuChange = new EventEmitter();
|
|
18
|
-
this.translationFinished = false;
|
|
19
|
-
this.showMenu = false;
|
|
20
|
-
this.showUserMenu = false;
|
|
21
|
-
}
|
|
22
|
-
set userName(fullName) {
|
|
23
|
-
this.fullName = fullName;
|
|
24
|
-
const splitted = fullName.split(' ');
|
|
25
|
-
if (splitted && splitted.length > 1) {
|
|
26
|
-
const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);
|
|
27
|
-
this.initials = initials.toUpperCase();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
;
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.url = window.location.href;
|
|
33
|
-
const baseUrl = this.envService.environment.resourceUrl;
|
|
34
|
-
this.subscription.add(this.httpClient.get(baseUrl + '/assets/links.json').subscribe(result => {
|
|
35
|
-
this.navigation = result;
|
|
36
|
-
}));
|
|
37
|
-
this.initTranslations(baseUrl);
|
|
38
|
-
}
|
|
39
|
-
initTranslations(baseUrl) {
|
|
40
|
-
if (this.trans.store.translations[this.trans.currentLang]) {
|
|
41
|
-
this.loadTranslation(baseUrl, this.trans.currentLang);
|
|
42
|
-
}
|
|
43
|
-
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
44
|
-
this.translationFinished = false;
|
|
45
|
-
this.loadTranslation(baseUrl, event.lang);
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
loadTranslation(baseUrl, lang) {
|
|
49
|
-
//TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
|
|
50
|
-
this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {
|
|
51
|
-
this.trans.setTranslation(lang, translations, true);
|
|
52
|
-
this.translationFinished = true;
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
showMenuDropdown(show) {
|
|
56
|
-
if (this.showMenu !== show) {
|
|
57
|
-
this.showMenu = show;
|
|
58
|
-
this.dropMenuChange.emit(show);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
setLanguage(lang) {
|
|
62
|
-
this.trans.use(lang);
|
|
63
|
-
//TODO: set localstorage/cookies or probaly event to main app
|
|
64
|
-
}
|
|
65
|
-
onExpandLink(event, transId) {
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
event.stopPropagation();
|
|
68
|
-
if (this.expandedLink === transId) {
|
|
69
|
-
this.expandedLink = null;
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
this.expandedLink = transId;
|
|
73
|
-
}
|
|
74
|
-
login() {
|
|
75
|
-
this.loginClicked.emit();
|
|
76
|
-
}
|
|
77
|
-
logout() {
|
|
78
|
-
this.logoutClicked.emit();
|
|
79
|
-
}
|
|
80
|
-
ngOnDestroy() {
|
|
81
|
-
this.subscription.unsubscribe();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/** @nocollapse */ ADBHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
/** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div *ngIf=\"translationFinished\" class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item p-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <a href=\"{{link.url}}?lang={{trans.currentLang}}\" class=\"d-flex align-items-center flex-grow-1 p-2\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n {{link.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-expand me-2\" *ngIf=\"link.children?.length>0\" (click)=\"onExpandLink($event,link.transId)\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </button>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" [class.pt-0]=\"first\" *ngFor=\"let subLink of link.children;let first = first\" style=\"padding-left:3rem;\">\r\n <a class=\"w-100 d-block\" href=\"{{subLink.url}}?lang={{trans.currentLang}}\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div class=\"mb-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">{{'ADB_HEADER.DEV_INFO'|translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: i4.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderComponent, decorators: [{
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{
|
|
89
|
-
selector: 'adb-header2',
|
|
90
|
-
templateUrl: './adb-header.component.html'
|
|
91
|
-
}]
|
|
92
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.TranslateService }]; }, propDecorators: { loginClicked: [{
|
|
93
|
-
type: Output
|
|
94
|
-
}], logoutClicked: [{
|
|
95
|
-
type: Output
|
|
96
|
-
}], dropMenuChange: [{
|
|
97
|
-
type: Output
|
|
98
|
-
}], userName: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2FkYi1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9hZGItaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBWSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFROUMsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0IsWUFDVSxVQUFzQixFQUN0QixVQUE4QixFQUMvQixLQUF1QjtRQUZ0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBdkJ4QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFdkQsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBVTVCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFRckIsQ0FBQztJQWxCRCxJQUFhLFFBQVEsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdB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O1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O21JQXJGVSxrQkFBa0I7dUhBQWxCLGtCQUFrQixrTUNYL0IsODdUQXdKQTs0RkQ3SWEsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsNkJBQTZCO2lCQUMzQztpS0FHVyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFHTSxRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWRiLWhlYWRlcjInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGItaGVhZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBPdXRwdXQoKSBsb2dpbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvZ291dENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyb3BNZW51Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgdHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCB1c2VyTmFtZShmdWxsTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZ1bGxOYW1lID0gZnVsbE5hbWU7XHJcbiAgICBjb25zdCBzcGxpdHRlZCA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoc3BsaXR0ZWQgJiYgc3BsaXR0ZWQubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBpbml0aWFscyA9IHNwbGl0dGVkLnNoaWZ0KCkuY2hhckF0KDApICsgc3BsaXR0ZWQucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB0aGlzLmluaXRpYWxzID0gaW5pdGlhbHMudG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGluaXRpYWxzOiBzdHJpbmc7XHJcbiAgc2hvd01lbnUgPSBmYWxzZTtcclxuICBzaG93VXNlck1lbnUgPSBmYWxzZTtcclxuICBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uO1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIGV4cGFuZGVkTGluazogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBlbnZTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdHJhbnM6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmVudlNlcnZpY2UuZW52aXJvbm1lbnQucmVzb3VyY2VVcmw7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5odHRwQ2xpZW50LmdldDxOYXZpZ2F0aW9uPihiYXNlVXJsICsgJy9hc3NldHMvbGlua3MuanNvbicpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb24gPSByZXN1bHQ7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmluaXRUcmFuc2xhdGlvbnMoYmFzZVVybCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50cmFucy5zdG9yZS50cmFuc2xhdGlvbnNbdGhpcy50cmFucy5jdXJyZW50TGFuZ10pIHtcclxuICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgdGhpcy50cmFucy5jdXJyZW50TGFuZyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50cmFucy5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgZXZlbnQubGFuZyk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRUcmFuc2xhdGlvbihiYXNlVXJsOiBzdHJpbmcsIGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy9UT0RPOiBQcmVwYXJlIGZvciBkaWZmZW50cyBsYW5nIHRoZW4gZW4gc3YgKGVuLUdCKSBvciBhZGQgbW9yZSBmaWxlcyBpbiBkZXZjb21wb25lbnRzZXJ2ZXIgOilcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmh0dHBDbGllbnQuZ2V0KGJhc2VVcmwgKyBgL2Fzc2V0cy9pMThuLyR7bGFuZ30uanNvbmApLnN1YnNjcmliZSh0cmFuc2xhdGlvbnMgPT4ge1xyXG4gICAgICB0aGlzLnRyYW5zLnNldFRyYW5zbGF0aW9uKGxhbmcsIHRyYW5zbGF0aW9ucywgdHJ1ZSk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25GaW5pc2hlZCA9IHRydWU7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBzaG93TWVudURyb3Bkb3duKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3dNZW51ICE9PSBzaG93KSB7XHJcbiAgICAgIHRoaXMuc2hvd01lbnUgPSBzaG93O1xyXG4gICAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoc2hvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zLnVzZShsYW5nKTtcclxuICAgIC8vVE9ETzogc2V0IGxvY2Fsc3RvcmFnZS9jb29raWVzIG9yIHByb2JhbHkgZXZlbnQgdG8gbWFpbiBhcHBcclxuICB9XHJcblxyXG4gIG9uRXhwYW5kTGluayhldmVudDogYW55LCB0cmFuc0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRMaW5rID09PSB0cmFuc0lkKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWRMaW5rID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5leHBhbmRlZExpbmsgPSB0cmFuc0lkO1xyXG4gIH1cclxuXHJcbiAgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ2luQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ291dENsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBpbml0QWxsVHJhbnNsYXRpb25zKGJhc2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgdHJhbnMkID0gZm9ya0pvaW4oW3RoaXMuaHR0cENsaWVudC5nZXQoYmFzZVVybCArICcvYXNzZXRzL2kxOG4vZW4uanNvbicpLCB0aGlzLmh0dHBDbGllbnQuZ2V0KGJhc2VVcmwgKyAnL2Fzc2V0cy9pMThuL3N2Lmpzb24nKV0pXHJcbiAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodHJhbnMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gIC8vICAgICB0aGlzLnRyYW5zLnNldFRyYW5zbGF0aW9uKCdlbicsIHJlc3VsdFswXSwgdHJ1ZSk7XHJcbiAgLy8gICAgIHRoaXMudHJhbnMuc2V0VHJhbnNsYXRpb24oJ3N2JywgcmVzdWx0WzFdLCB0cnVlKTtcclxuICAvLyAgIH0pKTtcclxuICAvLyB9XHJcbn1cclxuXHJcbiIsIjxoZWFkZXIgaWQ9XCJ0b3AtaGVhZGVyXCIgKGNsaWNrT3V0c2lkZSk9XCJzaG93VXNlck1lbnU9ZmFsc2U7c2hvd01lbnVEcm9wZG93bihmYWxzZSk7XCI+XHJcbiAgICA8bmF2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBweC0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4ganVzdGlmeS1jb250ZW50LW1kLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgc3R5bGU9XCJoZWlnaHQ6IDMuMnJlbTtcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIHBzLTIgZC1zbS1ibG9jayBkLW1kLW5vbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvX3NtX3doaXRlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImJpZ2dlclwiPkFydGZha3RhPC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cImQtbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXIgZC1sZy1mbGV4IHBlLTQgZ2FwLTRcIiAqbmdJZj1cIm5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiICpuZ0lmPVwibGluay50b3BMaW5rXCIgW25nQ2xhc3NdPVwieydkLW5vbmUgZC14bC1ibG9jayc6bGluay50cmFuc0lkPT09J0FEQl9IRUFERVIuT0JTRVJWQVRJT04nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBweS0xIHB4LTIgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd1VzZXJNZW51ID0gZmFsc2U7c2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy0xIGZhc1wiIFtuZ0NsYXNzXT1cInNob3dNZW51PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIHBzLTRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbml0aWFsc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBpbml0aWFsc1wiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCI+e3tpbml0aWFsc319PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluaXRpYWxzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd1VzZXJNZW51XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtYm9keSBiZy13aGl0ZSBwLTNcIiBzdHlsZT1cIndpZHRoOjE1cmVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7ZnVsbE5hbWV9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC1uM1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9nb3V0KClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc2lnbi1vdXQtYWx0IG1lLTFcIj48L2k+e3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImxvZ2luKClcIiBpZD1cInN0YXJ0LWxvZ2luXCI+e3snQURCX0hFQURFUi5MT0dJTid8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJuYXZpZ2F0aW9uXCIgY2xhc3M9XCJkLWJsb2NrIG10LTNcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmNyZWF0ZUFjY291bnRMaW5rfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX0mcmV0dXJuVXJsPXt7dXJsfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1lbnVcIiAqbmdJZj1cInNob3dNZW51XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtYm9keVwiICpuZ0lmPVwibmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMyBwdC0zIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC13cmFwIGdhcC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGQtbWQtbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIiAqbmdJZj1cImluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluaXRpYWxzIG1lLTJcIj57e2luaXRpYWxzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTE9HT1VUJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGQtbWQtbm9uZVwiICpuZ0lmPVwiIWluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9naW4oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaWQ9XCJsb2dpblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTE9HSU4nfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidHJhbnMuY3VycmVudExhbmc9PT0nZW4nXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdzdicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5JTl9TV0VESVNIJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJ0cmFucy5jdXJyZW50TGFuZz09PSdzdidcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoJ2VuJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLklOX0VOR0xJU0gnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLlNFUlZJQ0VTJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInNwbGFzaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBtcy0wIG1iLTAgcHMtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0xIGxpc3QtZ3JvdXAtaXRlbSBwLTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwb2ludGVyIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24nOmxpbmsuY2hpbGRyZW4mJmxpbmsuY2hpbGRyZW4ubGVuZ3RoPjB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJsaW5rLnRyYW5zSWQ9PT1leHBhbmRlZExpbms/dHJ1ZTpmYWxzZVwiIHJvbGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2sgbWUtMVwiICpuZ0lmPVwibGluay5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZVwiIFtuZ0NsYXNzXT1cImxpbmsuaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZXhwYW5kIG1lLTJcIiAqbmdJZj1cImxpbmsuY2hpbGRyZW4/Lmxlbmd0aD4wXCIgKGNsaWNrKT1cIm9uRXhwYW5kTGluaygkZXZlbnQsbGluay50cmFuc0lkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXVwXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrICc6J2Qtbm9uZSdcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiIFtuZ0NsYXNzXT1cImxpbmsudHJhbnNJZCE9PWV4cGFuZGVkTGluaz8nZC1ibG9jayAnOidkLW5vbmUnXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrJzonZC1ub25lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTEgbS0wXCIgW2NsYXNzLnB0LTBdPVwiZmlyc3RcIiAqbmdGb3I9XCJsZXQgc3ViTGluayBvZiBsaW5rLmNoaWxkcmVuO2xldCBmaXJzdCA9IGZpcnN0XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6M3JlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ3LTEwMCBkLWJsb2NrXCIgaHJlZj1cInt7c3ViTGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJMaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXRcIiBjbGFzcz1cIm10LTIgbWItYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMVwiPnt7J0FEQl9IRUFERVIuQ09OVEFDVCd8dHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2tcIiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXQuaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2lyY2xlIGZhLXN0YWNrLTJ4IHRleHQtcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXN0YWNrLTF4IGZhLWludmVyc2UgZmEtZW52ZWxvcGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYmctd2hpdGUgcC0yXCIgaHJlZj1cIm1haWx0bzphcnRmYWt0YUBhcnRkYXRhYmFua2VuLnNlXCI+YXJ0ZmFrdGFAYXJ0ZGF0YWJhbmtlbi5zZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZhLXN0YWNrXCIgKm5nSWY9XCJuYXZpZ2F0aW9uLmFib3V0Lmljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLWNpcmNsZSBmYS1zdGFjay0yeCB0ZXh0LXByaW1hcnlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1zdGFjay0xeCBmYS1pbnZlcnNlXCIgW25nQ2xhc3NdPVwibmF2aWdhdGlvbi5hYm91dC5pY29uXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJuYXZpZ2F0aW9uLmFib3V0LnVybFwiPnt7bmF2aWdhdGlvbi5hYm91dC50cmFuc0lkfHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6MTByZW1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cInRleHQtd2hpdGVcIj57eydBREJfSEVBREVSLkRFVl9JTkZPJ3x0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2hlYWRlcj5cclxuIl19
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { ADBHeaderComponent } from './adb-header.component';
|
|
5
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
6
|
-
import { EnvironmentService } from './environment.service';
|
|
7
|
-
import { RouterModule } from '@angular/router';
|
|
8
|
-
import { ClickOutsideDirective } from './click-outside.directive';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class ADBHeaderModule {
|
|
11
|
-
static forRoot(environment) {
|
|
12
|
-
return {
|
|
13
|
-
ngModule: ADBHeaderModule,
|
|
14
|
-
providers: [
|
|
15
|
-
EnvironmentService,
|
|
16
|
-
{
|
|
17
|
-
provide: 'env',
|
|
18
|
-
useValue: environment
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/** @nocollapse */ ADBHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
-
/** @nocollapse */ ADBHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, declarations: [ADBHeaderComponent, ClickOutsideDirective], imports: [CommonModule,
|
|
26
|
-
HttpClientModule,
|
|
27
|
-
RouterModule,
|
|
28
|
-
TranslateModule], exports: [ADBHeaderComponent] });
|
|
29
|
-
/** @nocollapse */ ADBHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, imports: [[
|
|
30
|
-
CommonModule,
|
|
31
|
-
HttpClientModule,
|
|
32
|
-
RouterModule,
|
|
33
|
-
TranslateModule
|
|
34
|
-
]] });
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ADBHeaderModule, decorators: [{
|
|
36
|
-
type: NgModule,
|
|
37
|
-
args: [{
|
|
38
|
-
declarations: [ADBHeaderComponent, ClickOutsideDirective],
|
|
39
|
-
imports: [
|
|
40
|
-
CommonModule,
|
|
41
|
-
HttpClientModule,
|
|
42
|
-
RouterModule,
|
|
43
|
-
TranslateModule
|
|
44
|
-
],
|
|
45
|
-
exports: [ADBHeaderComponent]
|
|
46
|
-
}]
|
|
47
|
-
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2FkYi1oZWFkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFhbEUsTUFBTSxPQUFPLGVBQWU7SUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFnQjtRQUNwQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNULGtCQUFrQjtnQkFDbEI7b0JBQ0UsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0lBWlUsZUFBZTtpSUFBZixlQUFlLGlCQVRYLGtCQUFrQixFQUFFLHFCQUFxQixhQUV0RCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixlQUFlLGFBRVAsa0JBQWtCO2lJQUVqQixlQUFlLFlBUmpCO1lBQ1AsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osZUFBZTtTQUNoQjs0RkFHVSxlQUFlO2tCQVYzQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixDQUFDO29CQUN6RCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQURCSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hZGItaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbQURCSGVhZGVyQ29tcG9uZW50LCBDbGlja091dHNpZGVEaXJlY3RpdmVdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEh0dHBDbGllbnRNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtBREJIZWFkZXJDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBREJIZWFkZXJNb2R1bGUge1xyXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChlbnZpcm9ubWVudDogYW55KTogTW9kdWxlV2l0aFByb3ZpZGVyczxBREJIZWFkZXJNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBREJIZWFkZXJNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIEVudmlyb25tZW50U2VydmljZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiAnZW52JywgLy8geW91IGNhbiBhbHNvIHVzZSBJbmplY3Rpb25Ub2tlblxyXG4gICAgICAgICAgdXNlVmFsdWU6IGVudmlyb25tZW50XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Directive, Output, EventEmitter, HostListener } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class ClickOutsideDirective {
|
|
4
|
-
constructor(elementRef) {
|
|
5
|
-
this.elementRef = elementRef;
|
|
6
|
-
this.clickOutside = new EventEmitter();
|
|
7
|
-
}
|
|
8
|
-
onClick(target) {
|
|
9
|
-
const clickedInside = this.elementRef.nativeElement.contains(target);
|
|
10
|
-
if (!clickedInside) {
|
|
11
|
-
this.clickOutside.emit();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
/** @nocollapse */ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
-
/** @nocollapse */ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
18
|
-
type: Directive,
|
|
19
|
-
args: [{
|
|
20
|
-
selector: '[clickOutside]',
|
|
21
|
-
}]
|
|
22
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { clickOutside: [{
|
|
23
|
-
type: Output
|
|
24
|
-
}], onClick: [{
|
|
25
|
-
type: HostListener,
|
|
26
|
-
args: ['document:click', ['$event.target']]
|
|
27
|
-
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVMsTUFBTSxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSWpHLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQURoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDSixDQUFDO0lBR3hDLE9BQU8sQ0FBQyxNQUFXO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDOztzSUFWUSxxQkFBcUI7MEhBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzdCO2lHQUVhLFlBQVk7c0JBQXJCLE1BQU07Z0JBSUEsT0FBTztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2NsaWNrT3V0c2lkZV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIHtcclxuICAgIEBPdXRwdXQoKSBjbGlja091dHNpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgICBwdWJsaWMgb25DbGljayh0YXJnZXQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsaWNrT3V0c2lkZS5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvbmF2aWdhdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uIHtcclxuICAgIGFib3V0OiBMaW5rO1xyXG4gICAgbGlua3M6IExpbmtbXTtcclxuICAgIGNyZWF0ZUFjY291bnRMaW5rOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XHJcbiAgICB0cmFuc0lkOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxuICAgIHRvcExpbms/OiBib29sZWFuO1xyXG4gICAgaWNvbj86IHN0cmluZztcclxuICAgIGNoaWxkcmVuPzogTGlua1tdO1xyXG59Il19
|