adb-shared 1.0.21 → 2.0.1

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.
Files changed (43) hide show
  1. package/{esm2015/adb-shared.js → esm2020/adb-shared.mjs} +0 -0
  2. package/esm2020/lib/components/adb-header/adb-header.component.mjs +102 -0
  3. package/{esm2015/lib/components/adb-header/adb-header.module.js → esm2020/lib/components/adb-header/adb-header.module.mjs} +5 -5
  4. package/{esm2015/lib/components/adb-header/environment.service.js → esm2020/lib/components/adb-header/environment.service.mjs} +4 -4
  5. package/{esm2015/lib/components/adb-header/navigation.model.js → esm2020/lib/components/adb-header/navigation.model.mjs} +0 -0
  6. package/esm2020/lib/components/date-picker/adb-date-picker.component.mjs +137 -0
  7. package/esm2020/lib/components/date-picker/adb-date-picker.directive.mjs +117 -0
  8. package/esm2020/lib/components/date-picker/adb-date-picker.module.mjs +24 -0
  9. package/esm2020/lib/components/date-picker/adb-date-picker.service.mjs +28 -0
  10. package/{esm2015/lib/components/pagers/infinite-scroll.component.js → esm2020/lib/components/pagers/infinite-scroll.component.mjs} +4 -4
  11. package/{esm2015/lib/components/pagers/pager-base.directive.js → esm2020/lib/components/pagers/pager-base.directive.mjs} +4 -4
  12. package/esm2020/lib/components/pagers/pager.mjs +31 -0
  13. package/{esm2015/lib/components/pagers/pagers.module.js → esm2020/lib/components/pagers/pagers.module.mjs} +5 -5
  14. package/esm2020/lib/directives/click-outside.directive.mjs +28 -0
  15. package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
  16. package/{esm2015/lib/directives/focus.directive.js → esm2020/lib/directives/focus.directive.mjs} +4 -4
  17. package/esm2020/lib/pipes/date.pipe.mjs +22 -0
  18. package/{esm2015/lib/pipes/highlight.pipe.js → esm2020/lib/pipes/highlight.pipe.mjs} +4 -4
  19. package/{esm2015/lib/pipes/number-spacing.pipe.js → esm2020/lib/pipes/number-spacing.pipe.mjs} +4 -4
  20. package/esm2020/lib/pipes/pipes.module.mjs +19 -0
  21. package/esm2020/public-api.mjs +19 -0
  22. package/fesm2015/adb-shared.mjs +727 -0
  23. package/fesm2015/adb-shared.mjs.map +1 -0
  24. package/fesm2020/adb-shared.mjs +724 -0
  25. package/fesm2020/adb-shared.mjs.map +1 -0
  26. package/lib/components/date-picker/adb-date-picker.component.d.ts +54 -0
  27. package/lib/components/date-picker/adb-date-picker.directive.d.ts +33 -0
  28. package/lib/components/date-picker/adb-date-picker.module.d.ts +12 -0
  29. package/lib/components/date-picker/adb-date-picker.service.d.ts +20 -0
  30. package/lib/directives/click-outside.directive.d.ts +1 -1
  31. package/lib/pipes/date.pipe.d.ts +10 -0
  32. package/lib/pipes/pipes.module.d.ts +2 -1
  33. package/package.json +25 -11
  34. package/public-api.d.ts +4 -0
  35. package/bundles/adb-shared.umd.js +0 -831
  36. package/bundles/adb-shared.umd.js.map +0 -1
  37. package/esm2015/lib/components/adb-header/adb-header.component.js +0 -104
  38. package/esm2015/lib/components/pagers/pager.js +0 -34
  39. package/esm2015/lib/directives/click-outside.directive.js +0 -28
  40. package/esm2015/lib/pipes/pipes.module.js +0 -18
  41. package/esm2015/public-api.js +0 -15
  42. package/fesm2015/adb-shared.js +0 -432
  43. package/fesm2015/adb-shared.js.map +0 -1
@@ -0,0 +1,724 @@
1
+ import * as i3$1 from '@angular/common';
2
+ import { CommonModule, DatePipe, formatDate } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable, Inject, EventEmitter, Component, Output, Input, Directive, HostListener, NgModule, HostBinding, Pipe, forwardRef } from '@angular/core';
5
+ import * as i3 from '@ngx-translate/core';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ import { Subscription, Subject, BehaviorSubject } from 'rxjs';
8
+ import * as i1 from '@angular/common/http';
9
+ import { HttpClientModule } from '@angular/common/http';
10
+ import * as i1$1 from '@angular/router';
11
+ import { RouterModule } from '@angular/router';
12
+ import { startOfDay, endOfDay, subYears, subMonths, addYears, addMonths, getMonth, isSameYear, startOfMonth, endOfMonth, eachWeekOfInterval, getISOWeek, addDays, eachDayOfInterval, getHours, getMinutes, isWithinInterval, isSameDay, isValid, parseISO } from 'date-fns';
13
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
14
+
15
+ class EnvironmentService {
16
+ constructor(environment) {
17
+ this.environment = environment;
18
+ }
19
+ }
20
+ /** @nocollapse */ EnvironmentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EnvironmentService, deps: [{ token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable });
21
+ /** @nocollapse */ EnvironmentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EnvironmentService });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EnvironmentService, decorators: [{
23
+ type: Injectable
24
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
25
+ type: Inject,
26
+ args: ['env']
27
+ }] }]; } });
28
+
29
+ class ADBHeaderComponent {
30
+ constructor(httpClient, envService, trans) {
31
+ this.httpClient = httpClient;
32
+ this.envService = envService;
33
+ this.trans = trans;
34
+ this.subscription = new Subscription();
35
+ this.loginClicked = new EventEmitter();
36
+ this.logoutClicked = new EventEmitter();
37
+ this.dropMenuChange = new EventEmitter();
38
+ this.translationFinished = false;
39
+ this.showMenu = false;
40
+ this.showUserMenu = false;
41
+ }
42
+ set userName(fullName) {
43
+ this.fullName = fullName;
44
+ const splitted = fullName.split(' ');
45
+ if (splitted?.length > 1) {
46
+ const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);
47
+ this.initials = initials.toUpperCase();
48
+ }
49
+ else {
50
+ this.initials = this.fullName ? this.fullName.charAt(0).toUpperCase() : this.fullName;
51
+ }
52
+ }
53
+ ;
54
+ ngOnInit() {
55
+ this.url = window.location.href;
56
+ const baseUrl = this.envService.environment.resourceUrl;
57
+ this.subscription.add(this.httpClient.get(baseUrl + '/assets/links.json').subscribe(result => {
58
+ this.navigation = result;
59
+ }));
60
+ this.initTranslations(baseUrl);
61
+ }
62
+ initTranslations(baseUrl) {
63
+ if (this.trans.store.translations[this.trans.currentLang]) {
64
+ this.loadTranslation(baseUrl, this.trans.currentLang);
65
+ }
66
+ this.subscription.add(this.trans.onLangChange.subscribe((event) => {
67
+ this.translationFinished = false;
68
+ this.loadTranslation(baseUrl, event.lang);
69
+ }));
70
+ }
71
+ loadTranslation(baseUrl, lang) {
72
+ //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
73
+ this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {
74
+ this.trans.setTranslation(lang, translations, true);
75
+ this.translationFinished = true;
76
+ }));
77
+ }
78
+ showMenuDropdown(show) {
79
+ if (this.showMenu !== show) {
80
+ this.showMenu = show;
81
+ this.dropMenuChange.emit(show);
82
+ }
83
+ }
84
+ setLanguage(lang) {
85
+ this.trans.use(lang);
86
+ this.showMenu = false;
87
+ this.dropMenuChange.emit(false);
88
+ //TODO: set localstorage/cookies or probaly event to main app
89
+ }
90
+ onExpandLink(event, transId) {
91
+ event.preventDefault();
92
+ event.stopPropagation();
93
+ if (this.expandedLink === transId) {
94
+ this.expandedLink = null;
95
+ return;
96
+ }
97
+ this.expandedLink = transId;
98
+ }
99
+ login() {
100
+ this.loginClicked.emit();
101
+ }
102
+ logout() {
103
+ this.logoutClicked.emit();
104
+ }
105
+ ngOnDestroy() {
106
+ this.subscription.unsubscribe();
107
+ }
108
+ }
109
+ /** @nocollapse */ ADBHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderComponent, deps: [{ token: i1.HttpClient }, { token: EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
110
+ /** @nocollapse */ ADBHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", 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\">{{'ADB_HEADER.TITLE'|translate}}</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: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderComponent, decorators: [{
112
+ type: Component,
113
+ args: [{ selector: 'adb-header2', 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\">{{'ADB_HEADER.TITLE'|translate}}</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" }]
114
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: EnvironmentService }, { type: i3.TranslateService }]; }, propDecorators: { loginClicked: [{
115
+ type: Output
116
+ }], logoutClicked: [{
117
+ type: Output
118
+ }], dropMenuChange: [{
119
+ type: Output
120
+ }], userName: [{
121
+ type: Input
122
+ }] } });
123
+
124
+ class ClickOutsideDirective {
125
+ constructor(elementRef) {
126
+ this.elementRef = elementRef;
127
+ this.adbClickOutside = new EventEmitter();
128
+ }
129
+ onClick(target) {
130
+ const clickedInside = this.elementRef.nativeElement.contains(target);
131
+ if (!clickedInside) {
132
+ this.adbClickOutside.emit(target);
133
+ }
134
+ }
135
+ }
136
+ /** @nocollapse */ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
137
+ /** @nocollapse */ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: { adbClickOutside: "adbClickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClickOutsideDirective, decorators: [{
139
+ type: Directive,
140
+ args: [{
141
+ selector: '[adbClickOutside]',
142
+ }]
143
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { adbClickOutside: [{
144
+ type: Output
145
+ }], onClick: [{
146
+ type: HostListener,
147
+ args: ['document:click', ['$event.target']]
148
+ }] } });
149
+
150
+ /* eslint-disable @angular-eslint/directive-selector */
151
+ class FocusDirective {
152
+ constructor(element) {
153
+ this.element = element;
154
+ this.focused = false;
155
+ }
156
+ ngAfterViewInit() {
157
+ // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
158
+ if (this.focused) {
159
+ setTimeout(() => this.element.nativeElement.focus(), 0);
160
+ }
161
+ }
162
+ }
163
+ /** @nocollapse */ FocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
164
+ /** @nocollapse */ FocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: FocusDirective, selector: "[adbFocus]", inputs: { focused: ["adbFocus", "focused"] }, ngImport: i0 });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FocusDirective, decorators: [{
166
+ type: Directive,
167
+ args: [{
168
+ selector: '[adbFocus]',
169
+ }]
170
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { focused: [{
171
+ type: Input,
172
+ args: ['adbFocus']
173
+ }] } });
174
+
175
+ class DirectivesModule {
176
+ }
177
+ /** @nocollapse */ DirectivesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
178
+ /** @nocollapse */ DirectivesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DirectivesModule, declarations: [ClickOutsideDirective, FocusDirective], exports: [ClickOutsideDirective, FocusDirective] });
179
+ /** @nocollapse */ DirectivesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DirectivesModule, imports: [[]] });
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DirectivesModule, decorators: [{
181
+ type: NgModule,
182
+ args: [{
183
+ imports: [],
184
+ declarations: [ClickOutsideDirective, FocusDirective],
185
+ exports: [ClickOutsideDirective, FocusDirective]
186
+ }]
187
+ }] });
188
+
189
+ class ADBHeaderModule {
190
+ static forRoot(environment) {
191
+ return {
192
+ ngModule: ADBHeaderModule,
193
+ providers: [
194
+ EnvironmentService,
195
+ {
196
+ provide: 'env',
197
+ useValue: environment
198
+ }
199
+ ]
200
+ };
201
+ }
202
+ }
203
+ /** @nocollapse */ ADBHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
204
+ /** @nocollapse */ ADBHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderModule, declarations: [ADBHeaderComponent], imports: [CommonModule,
205
+ HttpClientModule,
206
+ RouterModule,
207
+ TranslateModule,
208
+ DirectivesModule], exports: [ADBHeaderComponent] });
209
+ /** @nocollapse */ ADBHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderModule, imports: [[
210
+ CommonModule,
211
+ HttpClientModule,
212
+ RouterModule,
213
+ TranslateModule,
214
+ DirectivesModule
215
+ ]] });
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBHeaderModule, decorators: [{
217
+ type: NgModule,
218
+ args: [{
219
+ declarations: [ADBHeaderComponent],
220
+ imports: [
221
+ CommonModule,
222
+ HttpClientModule,
223
+ RouterModule,
224
+ TranslateModule,
225
+ DirectivesModule
226
+ ],
227
+ exports: [ADBHeaderComponent]
228
+ }]
229
+ }] });
230
+
231
+ class InfiniteScrollComponent {
232
+ constructor(_element) {
233
+ this._element = _element;
234
+ this.onVisible = new EventEmitter();
235
+ this.height = '1px';
236
+ this.checkForIntersection = (entries) => {
237
+ entries.forEach((entry) => {
238
+ const isIntersecting = entry.isIntersecting &&
239
+ entry.target === this._element.nativeElement;
240
+ if (isIntersecting) {
241
+ this.onVisible.emit();
242
+ }
243
+ });
244
+ };
245
+ }
246
+ ngAfterViewInit() {
247
+ this._intersectionObserver = new IntersectionObserver(entries => {
248
+ this.checkForIntersection(entries);
249
+ }, {});
250
+ this._intersectionObserver.observe(this._element.nativeElement);
251
+ }
252
+ ngOnDestroy() {
253
+ if (this._intersectionObserver) {
254
+ this._intersectionObserver.disconnect();
255
+ }
256
+ }
257
+ }
258
+ /** @nocollapse */ InfiniteScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
259
+ /** @nocollapse */ InfiniteScrollComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: InfiniteScrollComponent, selector: "[onVisible]", outputs: { onVisible: "onVisible" }, host: { properties: { "style.height": "this.height" } }, ngImport: i0 });
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: InfiniteScrollComponent, decorators: [{
261
+ type: Directive,
262
+ args: [{ selector: "[onVisible]" }]
263
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onVisible: [{
264
+ type: Output
265
+ }], height: [{
266
+ type: HostBinding,
267
+ args: ['style.height']
268
+ }] } });
269
+
270
+ class PagerBaseDirective {
271
+ constructor() {
272
+ this.limit = PagerBaseDirective.DEFAULT_LIMIT;
273
+ this.currentPage = 1;
274
+ }
275
+ calculatePages() {
276
+ this.amountOfPages = Math.ceil(this.totalCount / this.limit);
277
+ if ((this.currentPage + 1) > PagerBaseDirective.VISIBLE_PAGES) {
278
+ this.pages = [
279
+ this.currentPage - 2,
280
+ this.currentPage - 1, this.currentPage
281
+ ];
282
+ const above = this.amountOfPages - this.currentPage;
283
+ if (above >= 1) {
284
+ this.pages.push(this.currentPage + 1);
285
+ }
286
+ if (above >= 2) {
287
+ this.pages.push(this.currentPage + 2);
288
+ }
289
+ }
290
+ else if (this.totalCount) {
291
+ const max = this.amountOfPages > PagerBaseDirective.VISIBLE_PAGES ? 5 : this.amountOfPages;
292
+ this.pages = Array(Math.ceil(max)).fill(1).map((x, i) => i + 1);
293
+ }
294
+ }
295
+ }
296
+ PagerBaseDirective.DEFAULT_LIMIT = 10;
297
+ PagerBaseDirective.VISIBLE_PAGES = 5;
298
+ PagerBaseDirective.SKIP_RESOURCE = 'offset';
299
+ /** @nocollapse */ PagerBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagerBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
300
+ /** @nocollapse */ PagerBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: PagerBaseDirective, inputs: { totalCount: "totalCount", limit: "limit" }, ngImport: i0 });
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagerBaseDirective, decorators: [{
302
+ type: Directive
303
+ }], propDecorators: { totalCount: [{
304
+ type: Input
305
+ }], limit: [{
306
+ type: Input
307
+ }] } });
308
+
309
+ class PagerComponent extends PagerBaseDirective {
310
+ constructor(activatedRoute) {
311
+ super();
312
+ this.activatedRoute = activatedRoute;
313
+ this.subscription = new Subscription();
314
+ }
315
+ ngOnInit() {
316
+ this.subscription.add(this.activatedRoute.queryParams.subscribe(params => {
317
+ if (params.offset) {
318
+ this.currentPage = (+params.offset / this.limit) + 1;
319
+ }
320
+ this.calculatePages();
321
+ }));
322
+ }
323
+ ngOnDestroy() {
324
+ this.subscription.unsubscribe();
325
+ }
326
+ }
327
+ /** @nocollapse */ PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagerComponent, deps: [{ token: i1$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
328
+ /** @nocollapse */ PagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: PagerComponent, selector: "adb-pager-nav", usesInheritance: true, ngImport: i0, template: "<nav *ngIf=\"pages&&pages.length>1&&currentPage<=amountOfPages\" class=\"d-flex justify-content-end pe-2 my-1\">\r\n <ul class=\"pagination mb-0\">\r\n <li class=\"page-item\" [class.disabled]=\"currentPage===1\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: 0}\" queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\" [class.disabled]=\"currentPage===1\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (currentPage-2)*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\" [class.active]=\"currentPage===page\" *ngFor=\"let page of pages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (page-1)*limit}\"\r\n queryParamsHandling=\"merge\">{{page}}</a>\r\n </li>\r\n <li class=\"page-item\" [class.disabled]=\"currentPage>=amountOfPages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: currentPage*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n <li *ngIf=\"(amountOfPages-1)*limit<10000\" class=\"page-item\" [class.disabled]=\"currentPage>=amountOfPages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (amountOfPages-1)*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n </ul>\r\n</nav>", directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagerComponent, decorators: [{
330
+ type: Component,
331
+ args: [{ selector: 'adb-pager-nav', template: "<nav *ngIf=\"pages&&pages.length>1&&currentPage<=amountOfPages\" class=\"d-flex justify-content-end pe-2 my-1\">\r\n <ul class=\"pagination mb-0\">\r\n <li class=\"page-item\" [class.disabled]=\"currentPage===1\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: 0}\" queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\" [class.disabled]=\"currentPage===1\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (currentPage-2)*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\" [class.active]=\"currentPage===page\" *ngFor=\"let page of pages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (page-1)*limit}\"\r\n queryParamsHandling=\"merge\">{{page}}</a>\r\n </li>\r\n <li class=\"page-item\" [class.disabled]=\"currentPage>=amountOfPages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: currentPage*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n <li *ngIf=\"(amountOfPages-1)*limit<10000\" class=\"page-item\" [class.disabled]=\"currentPage>=amountOfPages\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"{ offset: (amountOfPages-1)*limit}\"\r\n queryParamsHandling=\"merge\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n </ul>\r\n</nav>" }]
332
+ }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }]; } });
333
+
334
+ class PagersModule {
335
+ }
336
+ /** @nocollapse */ PagersModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
337
+ /** @nocollapse */ PagersModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagersModule, declarations: [InfiniteScrollComponent, PagerComponent], imports: [CommonModule,
338
+ RouterModule], exports: [InfiniteScrollComponent, PagerComponent] });
339
+ /** @nocollapse */ PagersModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagersModule, imports: [[
340
+ CommonModule,
341
+ RouterModule
342
+ ]] });
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PagersModule, decorators: [{
344
+ type: NgModule,
345
+ args: [{
346
+ imports: [
347
+ CommonModule,
348
+ RouterModule
349
+ ],
350
+ declarations: [InfiniteScrollComponent, PagerComponent],
351
+ exports: [InfiniteScrollComponent, PagerComponent]
352
+ }]
353
+ }] });
354
+
355
+ class LocaleDatePipe {
356
+ constructor(translate) {
357
+ this.translate = translate;
358
+ }
359
+ transform(value, format) {
360
+ return new DatePipe(this.translate.currentLang).transform(value, format, null, this.translate.currentLang);
361
+ }
362
+ }
363
+ /** @nocollapse */ LocaleDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LocaleDatePipe, deps: [{ token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
364
+ /** @nocollapse */ LocaleDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LocaleDatePipe, name: "adbLocaleDate", pure: false });
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LocaleDatePipe, decorators: [{
366
+ type: Pipe,
367
+ args: [{
368
+ name: 'adbLocaleDate',
369
+ pure: false
370
+ }]
371
+ }], ctorParameters: function () { return [{ type: i3.TranslateService }]; } });
372
+
373
+ class HighlightPipe {
374
+ constructor() {
375
+ this.format = /[`!@#$%*\\()_+\-=\[\]{};':"\\|,<>\/?~]/g;
376
+ }
377
+ transform(value, searchs) {
378
+ if (!value) {
379
+ return value;
380
+ }
381
+ if (searchs) {
382
+ if (!Array.isArray(searchs)) {
383
+ searchs = searchs.split(' ').filter((s) => s);
384
+ }
385
+ for (let search of searchs) {
386
+ if (this.format.test(search)) {
387
+ search = search.replace(this.format, '');
388
+ }
389
+ const reText = new RegExp(search, 'gi');
390
+ value = value.replace(reText, '<mark>$&</mark>');
391
+ }
392
+ }
393
+ return value;
394
+ }
395
+ }
396
+ /** @nocollapse */ HighlightPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
397
+ /** @nocollapse */ HighlightPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: HighlightPipe, name: "adbHighlight" });
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: HighlightPipe, decorators: [{
399
+ type: Pipe,
400
+ args: [{
401
+ name: 'adbHighlight'
402
+ }]
403
+ }] });
404
+
405
+ class NumberSpacingPipe {
406
+ transform(value) {
407
+ // If value is empty, 0 is falsy so perform an extra check to not make '0' to an empty string
408
+ if (!value && value !== 0) {
409
+ return '';
410
+ }
411
+ return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
412
+ }
413
+ }
414
+ /** @nocollapse */ NumberSpacingPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NumberSpacingPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
415
+ /** @nocollapse */ NumberSpacingPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NumberSpacingPipe, name: "adbSpacing", pure: false });
416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: NumberSpacingPipe, decorators: [{
417
+ type: Pipe,
418
+ args: [{
419
+ name: 'adbSpacing',
420
+ pure: false
421
+ }]
422
+ }] });
423
+
424
+ class PipesModule {
425
+ }
426
+ /** @nocollapse */ PipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
427
+ /** @nocollapse */ PipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PipesModule, declarations: [HighlightPipe, NumberSpacingPipe, LocaleDatePipe], exports: [HighlightPipe, NumberSpacingPipe, LocaleDatePipe] });
428
+ /** @nocollapse */ PipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PipesModule, imports: [[]] });
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PipesModule, decorators: [{
430
+ type: NgModule,
431
+ args: [{
432
+ imports: [],
433
+ declarations: [HighlightPipe, NumberSpacingPipe, LocaleDatePipe],
434
+ exports: [HighlightPipe, NumberSpacingPipe, LocaleDatePipe]
435
+ }]
436
+ }] });
437
+
438
+ class AdbDatePickerService {
439
+ constructor() {
440
+ this.dateSubject = new Subject();
441
+ this.date$ = this.dateSubject.asObservable();
442
+ this.hideSubject = new Subject();
443
+ this.hide$ = this.hideSubject.asObservable();
444
+ this.settingSubject = new BehaviorSubject(null);
445
+ this.settings$ = this.settingSubject.asObservable();
446
+ }
447
+ selectDate(date) {
448
+ this.dateSubject.next(date);
449
+ }
450
+ setSetting(settings) {
451
+ this.settingSubject.next(settings);
452
+ }
453
+ hide() {
454
+ this.hideSubject.next();
455
+ }
456
+ }
457
+ /** @nocollapse */ AdbDatePickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
458
+ /** @nocollapse */ AdbDatePickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerService });
459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerService, decorators: [{
460
+ type: Injectable
461
+ }] });
462
+
463
+ class AdbDatePickerComponent {
464
+ constructor(adbDatePickerService) {
465
+ this.adbDatePickerService = adbDatePickerService;
466
+ this.subscriptions = new Subscription();
467
+ this.currentdDate = new Date();
468
+ this.selectedDate = new Date();
469
+ this.weekDays = AdbDatePickerComponent.WEEK_DAYS;
470
+ }
471
+ ngOnInit() {
472
+ this.subscriptions.add(this.adbDatePickerService.settings$.subscribe(settings => {
473
+ this.range = {
474
+ start: settings?.minDate ? startOfDay(settings.minDate) : null,
475
+ end: settings?.maxDate ? endOfDay(settings.maxDate) : null
476
+ };
477
+ this.createCalendar();
478
+ }));
479
+ }
480
+ onShowYear() {
481
+ this.months = null;
482
+ this.loadYearsInterval();
483
+ }
484
+ onShowMonth() {
485
+ this.years = null;
486
+ this.loadMonths();
487
+ }
488
+ onSelectYear(inYear) {
489
+ this.selectedDate.setFullYear(inYear.getFullYear());
490
+ this.loadMonths();
491
+ this.years = null;
492
+ }
493
+ onSelectMonth(inMonth) {
494
+ this.selectedDate.setMonth(inMonth);
495
+ this.createCalendar();
496
+ this.years = null;
497
+ this.months = null;
498
+ }
499
+ onPrev() {
500
+ if (this.years) {
501
+ this.selectedDate = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);
502
+ this.loadYearsInterval();
503
+ }
504
+ else if (this.months) {
505
+ this.selectedDate = subYears(this.selectedDate, 1);
506
+ this.loadMonths();
507
+ }
508
+ else {
509
+ this.selectedDate = subMonths(this.selectedDate, 1);
510
+ this.createCalendar();
511
+ }
512
+ }
513
+ onNext() {
514
+ if (this.years) {
515
+ this.selectedDate = addYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);
516
+ this.loadYearsInterval();
517
+ }
518
+ else if (this.months) {
519
+ this.selectedDate = addYears(this.selectedDate, 1);
520
+ this.loadMonths();
521
+ }
522
+ else {
523
+ this.selectedDate = addMonths(this.selectedDate, 1);
524
+ this.createCalendar();
525
+ }
526
+ }
527
+ onHide(target) {
528
+ if (!target.hasAttribute('adbdatepicker')) {
529
+ this.adbDatePickerService.hide();
530
+ }
531
+ }
532
+ ngOnDestroy() {
533
+ this.subscriptions.unsubscribe();
534
+ }
535
+ loadMonths() {
536
+ this.months = AdbDatePickerComponent.MONTHS.map(x => {
537
+ return {
538
+ value: x,
539
+ isThisMonth: getMonth(this.selectedDate) === x && isSameYear(this.currentdDate, this.selectedDate)
540
+ };
541
+ });
542
+ }
543
+ loadYearsInterval() {
544
+ let year = subYears(this.selectedDate, AdbDatePickerComponent.YEAR_INTERVALL);
545
+ const years = [];
546
+ for (let i = 0; i < 16; i++) {
547
+ years.push({
548
+ value: year,
549
+ title: year.getFullYear(),
550
+ isThisYear: isSameYear(year, this.currentdDate)
551
+ });
552
+ year = addYears(year, 1);
553
+ }
554
+ this.years = years;
555
+ }
556
+ onSelectDate(day) {
557
+ this.adbDatePickerService.selectDate(day.value);
558
+ }
559
+ createCalendar() {
560
+ const weeks = [];
561
+ const monthInterval = { start: startOfMonth(this.selectedDate), end: endOfMonth(this.selectedDate) };
562
+ var fnsWweeks = eachWeekOfInterval(monthInterval);
563
+ for (const fnsWeek of fnsWweeks) {
564
+ const week = { weekNumber: 0, days: [] };
565
+ week.weekNumber = getISOWeek(new Date(fnsWeek));
566
+ const weekInterval = { start: new Date(fnsWeek), end: addDays(new Date(fnsWeek), 6) };
567
+ week.days = eachDayOfInterval(weekInterval).map(day => {
568
+ day.setHours(getHours(new Date()));
569
+ day.setMinutes(getMinutes(new Date()));
570
+ return {
571
+ value: day,
572
+ isInRange: isWithinInterval(day, this.range),
573
+ isToday: isSameDay(day, this.currentdDate),
574
+ inMonth: monthInterval.start.getMonth() === day.getMonth()
575
+ };
576
+ });
577
+ weeks.push(week);
578
+ }
579
+ this.weeks = weeks;
580
+ }
581
+ }
582
+ AdbDatePickerComponent.MONTHS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
583
+ AdbDatePickerComponent.WEEK_DAYS = ['1', '2', '3', '4', '5', '6', '7'];
584
+ AdbDatePickerComponent.YEAR_INTERVALL = 8;
585
+ /** @nocollapse */ AdbDatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerComponent, deps: [{ token: AdbDatePickerService }], target: i0.ɵɵFactoryTarget.Component });
586
+ /** @nocollapse */ AdbDatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: AdbDatePickerComponent, selector: "adb-date-picker", ngImport: i0, template: "<nav class=\"bg-white shadow rounded\" style=\"width:350px\" (adbClickOutside)=\"onHide($event)\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth()\">{{selectedDate|date:'MMM'}}</button>\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\"><span class=\"fa fa-chevron-right\"></span></button>\r\n </header>\r\n <div class=\"p-0 border calendar\">\r\n <ul class=\"list-unstyled row\" *ngIf=\"years\">\r\n <li class=\"col-3 text-center px-2 py-3\" *ngFor=\"let year of years\">\r\n <button class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value)\" [class.active]=\"year.hasObservation\" [ngClass]=\"{'border border-secondary':year.isThisYear}\">{{year.title}}</button>\r\n </li>\r\n </ul>\r\n <ul class=\"list-unstyled row\" *ngIf=\"months\">\r\n <li class=\"col-4 text-center px-2 py-3\" *ngFor=\"let month of months\">\r\n <button class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value)\" [class.active]=\"month.observation\" [ngClass]=\"{'border border-secondary':month.isThisMonth}\">\r\n {{'MONTHS.'+(month.value+1)|translate}}\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"days\">\r\n <div class=\"text-center border-bottom py-2 text-muted\" *ngFor=\"let weekDay of weekDays\">{{'WEEK_DAYS.'+weekDay|translate}}</div>\r\n <ng-container *ngFor=\"let week of weeks\">\r\n <button class=\"btn rounded-circle p-0 m-2\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\"\r\n [class.border]=\"day.isToday\" [ngClass]=\"{'pe-none text-muted opacity-50':!day.inMonth||!day.isInRange}\">\r\n <small>{{day.value|date:'d'}}</small>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</nav>", directives: [{ type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "date": i3$1.DatePipe, "translate": i3.TranslatePipe } });
587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerComponent, decorators: [{
588
+ type: Component,
589
+ args: [{ selector: 'adb-date-picker', template: "<nav class=\"bg-white shadow rounded\" style=\"width:350px\" (adbClickOutside)=\"onHide($event)\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth()\">{{selectedDate|date:'MMM'}}</button>\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\"><span class=\"fa fa-chevron-right\"></span></button>\r\n </header>\r\n <div class=\"p-0 border calendar\">\r\n <ul class=\"list-unstyled row\" *ngIf=\"years\">\r\n <li class=\"col-3 text-center px-2 py-3\" *ngFor=\"let year of years\">\r\n <button class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value)\" [class.active]=\"year.hasObservation\" [ngClass]=\"{'border border-secondary':year.isThisYear}\">{{year.title}}</button>\r\n </li>\r\n </ul>\r\n <ul class=\"list-unstyled row\" *ngIf=\"months\">\r\n <li class=\"col-4 text-center px-2 py-3\" *ngFor=\"let month of months\">\r\n <button class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value)\" [class.active]=\"month.observation\" [ngClass]=\"{'border border-secondary':month.isThisMonth}\">\r\n {{'MONTHS.'+(month.value+1)|translate}}\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"days\">\r\n <div class=\"text-center border-bottom py-2 text-muted\" *ngFor=\"let weekDay of weekDays\">{{'WEEK_DAYS.'+weekDay|translate}}</div>\r\n <ng-container *ngFor=\"let week of weeks\">\r\n <button class=\"btn rounded-circle p-0 m-2\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\"\r\n [class.border]=\"day.isToday\" [ngClass]=\"{'pe-none text-muted opacity-50':!day.inMonth||!day.isInRange}\">\r\n <small>{{day.value|date:'d'}}</small>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</nav>" }]
590
+ }], ctorParameters: function () { return [{ type: AdbDatePickerService }]; } });
591
+
592
+ class AdbDatePickerDirective {
593
+ constructor(viewContainerRef, renderer, elementRef, adbDatePickerService, translate) {
594
+ this.viewContainerRef = viewContainerRef;
595
+ this.renderer = renderer;
596
+ this.elementRef = elementRef;
597
+ this.adbDatePickerService = adbDatePickerService;
598
+ this.translate = translate;
599
+ this.subscriptions = new Subscription();
600
+ this.format = 'yyyy-MM-dd';
601
+ //TODO: convert to getter if this would become dynamic from server
602
+ this.settings = null;
603
+ //ControlValueAccessor
604
+ this.onChange = () => { };
605
+ this.onTouched = () => { };
606
+ }
607
+ ngOnInit() {
608
+ this.subscriptions.add(this.adbDatePickerService.date$.subscribe({
609
+ next: date => {
610
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(date, this.format, this.translate.currentLang));
611
+ this.onChange(date);
612
+ this.onHide();
613
+ }
614
+ }));
615
+ this.subscriptions.add(this.adbDatePickerService.hide$.subscribe({
616
+ next: () => {
617
+ this.onHide();
618
+ }
619
+ }));
620
+ if (this.settings?.maxDate || this.settings?.minDate) {
621
+ this.adbDatePickerService.setSetting({
622
+ minDate: AdbDatePickerDirective.parseDate(this.settings.minDate),
623
+ maxDate: AdbDatePickerDirective.parseDate(this.settings.maxDate)
624
+ });
625
+ }
626
+ }
627
+ onClick() {
628
+ if (!this.viewRef) {
629
+ this.viewRef = this.viewContainerRef.createComponent(AdbDatePickerComponent);
630
+ }
631
+ }
632
+ onHide() {
633
+ this.viewRef = null;
634
+ this.viewContainerRef.detach();
635
+ this.viewContainerRef.clear();
636
+ }
637
+ ngOnDestroy() {
638
+ this.subscriptions.unsubscribe();
639
+ }
640
+ writeValue(value) {
641
+ if (value) {
642
+ let initialDate = AdbDatePickerDirective.parseDate(value);
643
+ if (initialDate) {
644
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', formatDate(initialDate, this.format, this.translate.currentLang));
645
+ }
646
+ }
647
+ }
648
+ registerOnChange(fn) {
649
+ this.onChange = fn;
650
+ }
651
+ registerOnTouched(fn) {
652
+ this.onTouched = fn;
653
+ }
654
+ setDisabledState(isDisabled) {
655
+ this.viewContainerRef.clear();
656
+ }
657
+ static parseDate(value) {
658
+ if (typeof value === 'string') {
659
+ if (isValid(parseISO(value))) {
660
+ return parseISO(value);
661
+ }
662
+ else {
663
+ return null;
664
+ }
665
+ }
666
+ else if (value instanceof Date) {
667
+ return value;
668
+ }
669
+ else {
670
+ return null;
671
+ }
672
+ }
673
+ }
674
+ /** @nocollapse */ AdbDatePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: AdbDatePickerService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
675
+ /** @nocollapse */ AdbDatePickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: AdbDatePickerDirective, selector: "input[adbDatepicker]", inputs: { format: "format", settings: "settings" }, host: { listeners: { "click": "onClick()", "keyup.esc": "onHide()" } }, providers: [{
676
+ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => AdbDatePickerDirective)),
677
+ multi: true
678
+ }], ngImport: i0 });
679
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerDirective, decorators: [{
680
+ type: Directive,
681
+ args: [{
682
+ selector: `input[adbDatepicker]`,
683
+ providers: [{
684
+ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => AdbDatePickerDirective)),
685
+ multi: true
686
+ }]
687
+ }]
688
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: AdbDatePickerService }, { type: i3.TranslateService }]; }, propDecorators: { format: [{
689
+ type: Input
690
+ }], settings: [{
691
+ type: Input
692
+ }], onClick: [{
693
+ type: HostListener,
694
+ args: ['click']
695
+ }], onHide: [{
696
+ type: HostListener,
697
+ args: ['keyup.esc']
698
+ }] } });
699
+
700
+ class AdbDatePickerModule {
701
+ }
702
+ /** @nocollapse */ AdbDatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
703
+ /** @nocollapse */ AdbDatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerModule, declarations: [AdbDatePickerComponent, AdbDatePickerDirective], imports: [CommonModule, TranslateModule, PipesModule, DirectivesModule], exports: [AdbDatePickerComponent, AdbDatePickerDirective] });
704
+ /** @nocollapse */ AdbDatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerModule, providers: [AdbDatePickerService], imports: [[CommonModule, TranslateModule, PipesModule, DirectivesModule]] });
705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: AdbDatePickerModule, decorators: [{
706
+ type: NgModule,
707
+ args: [{
708
+ imports: [CommonModule, TranslateModule, PipesModule, DirectivesModule],
709
+ declarations: [AdbDatePickerComponent, AdbDatePickerDirective],
710
+ exports: [AdbDatePickerComponent, AdbDatePickerDirective],
711
+ providers: [AdbDatePickerService]
712
+ }]
713
+ }] });
714
+
715
+ /*
716
+ * Public API Surface of artdata-shared
717
+ */
718
+
719
+ /**
720
+ * Generated bundle index. Do not edit.
721
+ */
722
+
723
+ export { ADBHeaderComponent, ADBHeaderModule, AdbDatePickerComponent, AdbDatePickerDirective, AdbDatePickerModule, ClickOutsideDirective, DirectivesModule, FocusDirective, HighlightPipe, InfiniteScrollComponent, LocaleDatePipe, NumberSpacingPipe, PagerComponent, PagersModule, PipesModule };
724
+ //# sourceMappingURL=adb-shared.mjs.map