adb-shared 6.1.10 → 6.2.0-beta.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.
- package/fesm2022/adb-shared.mjs +1457 -372
- package/fesm2022/adb-shared.mjs.map +1 -1
- package/package.json +11 -9
- package/types/adb-shared.d.ts +1102 -0
- package/index.d.ts +0 -5
- package/lib/components/adb-artportalen-nav/adb-artportalen-footer.component.d.ts +0 -23
- package/lib/components/adb-artportalen-nav/adb-artportalen-nav.component.d.ts +0 -41
- package/lib/components/adb-artportalen-nav/adb-artportalen-nav.module.d.ts +0 -16
- package/lib/components/adb-artportalen-nav/environment.service.d.ts +0 -7
- package/lib/components/adb-artportalen-nav/navigation.model.d.ts +0 -18
- package/lib/components/adb-buttons/adb-buttons.module.d.ts +0 -9
- package/lib/components/adb-buttons/help-button.component.d.ts +0 -16
- package/lib/components/adb-confirm-modal/adb-confirm-modal.d.ts +0 -21
- package/lib/components/adb-confirm-modal/adb-modal.module.d.ts +0 -10
- package/lib/components/adb-confirm-modal/adb-modal.service.d.ts +0 -18
- package/lib/components/adb-dropdown/adb-dropdown.directive.d.ts +0 -21
- package/lib/components/adb-dropdown/adb-dropdown.module.d.ts +0 -11
- package/lib/components/adb-dropdown/adb-dropdown.service.d.ts +0 -7
- package/lib/components/adb-dropdown/adb-dropdown2.directive.d.ts +0 -23
- package/lib/components/adb-filter-section/adb-filter-section.module.d.ts +0 -11
- package/lib/components/adb-filter-section/filter-section.component.d.ts +0 -13
- package/lib/components/adb-header/adb-header.module.d.ts +0 -15
- package/lib/components/adb-header/adb-nav.component.d.ts +0 -41
- package/lib/components/adb-header/environment.service.d.ts +0 -7
- package/lib/components/adb-header/navigation.model.d.ts +0 -29
- package/lib/components/adb-rich-editor/adb-rich-editor.component.d.ts +0 -28
- package/lib/components/adb-rich-editor/adb-rich-editor.module.d.ts +0 -13
- package/lib/components/adb-rich-editor/adb-rich-text.d.ts +0 -18
- package/lib/components/adb-rich-editor/rich-module-config.d.ts +0 -5
- package/lib/components/adb-toast/adb-toast.d.ts +0 -11
- package/lib/components/adb-toast/adb-toast.module.d.ts +0 -10
- package/lib/components/adb-toast/adb-toast.service.d.ts +0 -36
- package/lib/components/adb-user/adb-user-service-config.d.ts +0 -22
- package/lib/components/adb-user/adb-user.interceptor.d.ts +0 -13
- package/lib/components/adb-user/adb-user.module.d.ts +0 -13
- package/lib/components/adb-user/adb-user.service.d.ts +0 -34
- package/lib/components/adb-user/auth-callback.component.d.ts +0 -16
- package/lib/components/adb-user/user-constants.d.ts +0 -9
- package/lib/components/date-picker/adb-date-picker.component.d.ts +0 -64
- package/lib/components/date-picker/adb-date-picker.directive.d.ts +0 -47
- package/lib/components/date-picker/adb-date-picker.module.d.ts +0 -12
- package/lib/components/date-picker/adb-date-picker.service.d.ts +0 -8
- package/lib/components/pagers/infinite-scroll.component.d.ts +0 -15
- package/lib/components/pagers/pager-base.directive.d.ts +0 -17
- package/lib/components/pagers/pager-inline.d.ts +0 -16
- package/lib/components/pagers/pager.d.ts +0 -22
- package/lib/components/pagers/pagers.module.d.ts +0 -11
- package/lib/directives/active-fragment.directive.d.ts +0 -17
- package/lib/directives/click-outside.directive.d.ts +0 -10
- package/lib/directives/directives.module.d.ts +0 -13
- package/lib/directives/file-upload.directive.d.ts +0 -12
- package/lib/directives/focus.directive.d.ts +0 -11
- package/lib/directives/image-loader.directive.d.ts +0 -21
- package/lib/directives/redlist-badge-class.directive.d.ts +0 -7
- package/lib/directives/risk-class.directive.d.ts +0 -7
- package/lib/pipes/date.pipe.d.ts +0 -10
- package/lib/pipes/emptyValue.pipe.d.ts +0 -7
- package/lib/pipes/highlight-html.pipe.d.ts +0 -10
- package/lib/pipes/highlight.pipe.d.ts +0 -9
- package/lib/pipes/number-spacing.pipe.d.ts +0 -7
- package/lib/pipes/pipes.module.d.ts +0 -11
- package/public-api.d.ts +0 -48
package/fesm2022/adb-shared.mjs
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i1$3 from '@angular/common';
|
|
2
2
|
import { CommonModule, DatePipe, formatDate } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Inject, Injectable, EventEmitter, HostListener, Output, Directive, Input, HostBinding, NgModule, Component, Pipe, forwardRef, InjectionToken } from '@angular/core';
|
|
4
|
+
import { Inject, Injectable, EventEmitter, HostListener, Output, Directive, Input, HostBinding, NgModule, Component, Pipe, forwardRef, InjectionToken, TemplateRef, ContentChild } from '@angular/core';
|
|
5
5
|
import * as i1$1 from '@ngx-translate/core';
|
|
6
6
|
import { TranslateModule } from '@ngx-translate/core';
|
|
7
7
|
import * as i1$2 from '@angular/common/http';
|
|
8
8
|
import { provideHttpClient, withInterceptorsFromDi, HttpHeaders, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
9
9
|
import * as i1 from '@angular/router';
|
|
10
10
|
import { NavigationEnd, RouterModule, NavigationStart } from '@angular/router';
|
|
11
|
-
import { Subscription, Subject, of, BehaviorSubject, catchError, throwError } from 'rxjs';
|
|
12
|
-
import { endOfDay, addYears, startOfDay, subYears, getMonth, subMonths, addMonths, isSameYear, endOfMonth, startOfMonth, eachWeekOfInterval, getISOWeek, addDays, eachDayOfInterval, getHours, getMinutes, isSameDay, isWithinInterval, isSameMonth, isValid, parseISO, addSeconds, format } from 'date-fns';
|
|
13
|
-
import * as
|
|
14
|
-
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';
|
|
15
|
-
import { delay } from 'rxjs/operators';
|
|
11
|
+
import { Subscription, Subject, of, BehaviorSubject, catchError, throwError, map as map$1, tap, combineLatest, debounceTime as debounceTime$1, shareReplay } from 'rxjs';
|
|
12
|
+
import { endOfDay, addYears, startOfDay, subYears, getMonth, subMonths, addMonths, isSameYear, endOfMonth, startOfMonth, eachWeekOfInterval, getISOWeek, addDays, eachDayOfInterval, getHours, getMinutes, isSameDay, isWithinInterval, isSameMonth, isValid, parseISO, addSeconds, format, subDays, startOfYear, endOfYear } from 'date-fns';
|
|
13
|
+
import * as i4 from '@angular/forms';
|
|
14
|
+
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, FormControl, FormGroup, FormArray, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
15
|
+
import { delay, debounceTime, switchMap, map, catchError as catchError$1 } from 'rxjs/operators';
|
|
16
|
+
import * as Leaflet from 'leaflet';
|
|
17
|
+
import 'leaflet-draw';
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
class EnvironmentService {
|
|
18
20
|
constructor(environment) {
|
|
19
21
|
this.environment = environment;
|
|
20
22
|
}
|
|
21
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
22
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
25
|
-
type: Injectable
|
|
23
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: EnvironmentService, deps: [{ token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: EnvironmentService, providedIn: 'root' }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: EnvironmentService, decorators: [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{ providedIn: 'root' }]
|
|
26
29
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
27
30
|
type: Inject,
|
|
28
31
|
args: ['env']
|
|
@@ -39,10 +42,10 @@ class ClickOutsideDirective {
|
|
|
39
42
|
this.adbClickOutside.emit(target);
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
45
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
46
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: ClickOutsideDirective, isStandalone: false, selector: "[adbClickOutside]", outputs: { adbClickOutside: "adbClickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 }); }
|
|
44
47
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ClickOutsideDirective, decorators: [{
|
|
46
49
|
type: Directive,
|
|
47
50
|
args: [{
|
|
48
51
|
selector: '[adbClickOutside]',
|
|
@@ -74,10 +77,10 @@ class FileUploadDirective {
|
|
|
74
77
|
this.click.emit(target);
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
78
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
80
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FileUploadDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
81
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: FileUploadDirective, isStandalone: false, selector: "input[adbFileUpload]", outputs: { upload: "upload" }, host: { listeners: { "change": "onBeginUpload($event.target)", "click": "onClick($event.target)" } }, ngImport: i0 }); }
|
|
79
82
|
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FileUploadDirective, decorators: [{
|
|
81
84
|
type: Directive,
|
|
82
85
|
args: [{
|
|
83
86
|
selector: 'input[adbFileUpload]',
|
|
@@ -110,10 +113,10 @@ class FocusDirective {
|
|
|
110
113
|
setTimeout(() => this.element.nativeElement.focus(), 0);
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
114
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
116
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
117
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: FocusDirective, isStandalone: false, selector: "[adbFocus]", inputs: { adbFocus: "adbFocus" }, ngImport: i0 }); }
|
|
115
118
|
}
|
|
116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FocusDirective, decorators: [{
|
|
117
120
|
type: Directive,
|
|
118
121
|
args: [{
|
|
119
122
|
selector: '[adbFocus]',
|
|
@@ -149,10 +152,10 @@ class RedListBadgeClassDirective {
|
|
|
149
152
|
}
|
|
150
153
|
return 'bg-redlist-lc border';
|
|
151
154
|
}
|
|
152
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
153
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
155
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RedListBadgeClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
156
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: RedListBadgeClassDirective, isStandalone: false, selector: "[adbRedListBadgeClass]", inputs: { redlistId: ["adbRedListBadgeClass", "redlistId"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
|
|
154
157
|
}
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RedListBadgeClassDirective, decorators: [{
|
|
156
159
|
type: Directive,
|
|
157
160
|
args: [{
|
|
158
161
|
selector: '[adbRedListBadgeClass]',
|
|
@@ -185,10 +188,10 @@ class RiskClassDirective {
|
|
|
185
188
|
}
|
|
186
189
|
return 'text-dark';
|
|
187
190
|
}
|
|
188
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
189
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
191
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RiskClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
192
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: RiskClassDirective, isStandalone: false, selector: "[adbRiskClass]", inputs: { category: ["adbRiskClass", "category"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
|
|
190
193
|
}
|
|
191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RiskClassDirective, decorators: [{
|
|
192
195
|
type: Directive,
|
|
193
196
|
args: [{
|
|
194
197
|
selector: '[adbRiskClass]',
|
|
@@ -240,10 +243,10 @@ class RouterLinkActiveFragmentDirective {
|
|
|
240
243
|
this.sub.unsubscribe();
|
|
241
244
|
}
|
|
242
245
|
}
|
|
243
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
244
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
246
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RouterLinkActiveFragmentDirective, deps: [{ token: i1.Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
247
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: RouterLinkActiveFragmentDirective, isStandalone: false, selector: "[adbActiveFragment]", inputs: { activeClass: ["adbActiveFragment", "activeClass"], fragment: "fragment" }, ngImport: i0 }); }
|
|
245
248
|
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RouterLinkActiveFragmentDirective, decorators: [{
|
|
247
250
|
type: Directive,
|
|
248
251
|
args: [{
|
|
249
252
|
selector: '[adbActiveFragment]',
|
|
@@ -309,10 +312,10 @@ class ImageLoaderDirective {
|
|
|
309
312
|
this.translationSub?.unsubscribe();
|
|
310
313
|
this.hideSpinner();
|
|
311
314
|
}
|
|
312
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
313
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
315
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ImageLoaderDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
316
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: ImageLoaderDirective, isStandalone: false, selector: "img[adbImageLoader]", inputs: { fallbackKey: ["adbImageLoader", "fallbackKey"] }, host: { listeners: { "load": "onLoad()", "error": "onError()" } }, ngImport: i0 }); }
|
|
314
317
|
}
|
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ImageLoaderDirective, decorators: [{
|
|
316
319
|
type: Directive,
|
|
317
320
|
args: [{
|
|
318
321
|
selector: 'img[adbImageLoader]',
|
|
@@ -330,11 +333,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
330
333
|
}] } });
|
|
331
334
|
|
|
332
335
|
class AdbDirectivesModule {
|
|
333
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
334
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
335
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
336
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
337
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbDirectivesModule, declarations: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective], exports: [ClickOutsideDirective, FocusDirective, FileUploadDirective, RedListBadgeClassDirective, RiskClassDirective, ImageLoaderDirective, RouterLinkActiveFragmentDirective] }); }
|
|
338
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDirectivesModule }); }
|
|
336
339
|
}
|
|
337
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDirectivesModule, decorators: [{
|
|
338
341
|
type: NgModule,
|
|
339
342
|
args: [{
|
|
340
343
|
imports: [],
|
|
@@ -343,24 +346,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
343
346
|
}]
|
|
344
347
|
}] });
|
|
345
348
|
|
|
346
|
-
class
|
|
349
|
+
class ArtportalenNavComponent {
|
|
347
350
|
set userName(fullName) {
|
|
348
351
|
this.fullName = fullName;
|
|
349
|
-
const splitted = fullName?.split(' ');
|
|
350
|
-
if (splitted?.length > 1) {
|
|
351
|
-
const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);
|
|
352
|
-
this.initials = initials.toUpperCase();
|
|
353
|
-
}
|
|
354
|
-
else {
|
|
355
|
-
this.initials = this.fullName ? this.fullName.charAt(0).toUpperCase() : this.fullName;
|
|
356
|
-
}
|
|
357
352
|
}
|
|
358
353
|
;
|
|
359
|
-
constructor(httpClient, router,
|
|
354
|
+
constructor(httpClient, router, trans, envService) {
|
|
360
355
|
this.httpClient = httpClient;
|
|
361
356
|
this.router = router;
|
|
362
|
-
this.envService = envService;
|
|
363
357
|
this.trans = trans;
|
|
358
|
+
this.envService = envService;
|
|
364
359
|
this.subscription = new Subscription();
|
|
365
360
|
this.loginClicked = new EventEmitter();
|
|
366
361
|
this.logoutClicked = new EventEmitter();
|
|
@@ -368,16 +363,16 @@ class ADBNavComponent {
|
|
|
368
363
|
this.showPattern = false;
|
|
369
364
|
this.translationFinished = false;
|
|
370
365
|
this.lastPosition = 0;
|
|
371
|
-
this.artfakta = true;
|
|
372
366
|
this.showNavMenu = false;
|
|
373
367
|
this.showUserMenu = false;
|
|
374
|
-
this.
|
|
375
|
-
this.
|
|
368
|
+
this.showReport = true;
|
|
369
|
+
this.showObservations = true;
|
|
370
|
+
this.showSubs = false;
|
|
376
371
|
}
|
|
377
372
|
ngOnInit() {
|
|
378
373
|
this.url = window.location.href;
|
|
379
374
|
const baseUrl = this.envService.environment.resourceUrl;
|
|
380
|
-
const url =
|
|
375
|
+
const url = '/assets/artportalen/links-ap3.json';
|
|
381
376
|
this.subscription.add(this.httpClient.get(baseUrl + url).subscribe(result => {
|
|
382
377
|
this.navigation = result;
|
|
383
378
|
}));
|
|
@@ -389,23 +384,6 @@ class ADBNavComponent {
|
|
|
389
384
|
}
|
|
390
385
|
});
|
|
391
386
|
}
|
|
392
|
-
initTranslations(baseUrl) {
|
|
393
|
-
if (this.trans.store.translations[this.trans.currentLang]) {
|
|
394
|
-
this.loadTranslation(baseUrl, this.trans.currentLang);
|
|
395
|
-
}
|
|
396
|
-
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
397
|
-
this.translationFinished = false;
|
|
398
|
-
this.loadTranslation(baseUrl, event.lang);
|
|
399
|
-
}));
|
|
400
|
-
}
|
|
401
|
-
loadTranslation(baseUrl, lang) {
|
|
402
|
-
//TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
|
|
403
|
-
const url = this.artfakta ? baseUrl + `/assets/i18n/${lang}.json` : baseUrl + `/assets/artportalen/i18n/${lang}.json`;
|
|
404
|
-
this.subscription.add(this.httpClient.get(url).subscribe(translations => {
|
|
405
|
-
this.trans.setTranslation(lang, translations, true);
|
|
406
|
-
this.translationFinished = true;
|
|
407
|
-
}));
|
|
408
|
-
}
|
|
409
387
|
showMenuDropdown(show) {
|
|
410
388
|
this.showUserMenu = false;
|
|
411
389
|
if (this.showNavMenu !== show) {
|
|
@@ -417,7 +395,14 @@ class ADBNavComponent {
|
|
|
417
395
|
this.trans.use(lang);
|
|
418
396
|
this.showNavMenu = false;
|
|
419
397
|
this.dropMenuChange.emit(false);
|
|
420
|
-
|
|
398
|
+
}
|
|
399
|
+
onUserClick() {
|
|
400
|
+
if (this.fullName) {
|
|
401
|
+
this.logout();
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
this.login();
|
|
405
|
+
}
|
|
421
406
|
}
|
|
422
407
|
login() {
|
|
423
408
|
this.loginClicked.emit();
|
|
@@ -425,16 +410,31 @@ class ADBNavComponent {
|
|
|
425
410
|
logout() {
|
|
426
411
|
this.logoutClicked.emit();
|
|
427
412
|
}
|
|
413
|
+
initTranslations(baseUrl) {
|
|
414
|
+
this.loadTranslation(baseUrl, this.trans.getCurrentLang());
|
|
415
|
+
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
416
|
+
this.translationFinished = false;
|
|
417
|
+
this.loadTranslation(baseUrl, event.lang);
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
loadTranslation(baseUrl, lang) {
|
|
421
|
+
//TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
|
|
422
|
+
const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;
|
|
423
|
+
this.subscription.add(this.httpClient.get(url).subscribe(translations => {
|
|
424
|
+
this.trans.setTranslation(lang, translations, true);
|
|
425
|
+
this.translationFinished = true;
|
|
426
|
+
}));
|
|
427
|
+
}
|
|
428
428
|
ngOnDestroy() {
|
|
429
429
|
this.subscription.unsubscribe();
|
|
430
430
|
}
|
|
431
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
432
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: ADBNavComponent, isStandalone: false, selector: "adb-nav", inputs: { showPattern: "showPattern", userName: "userName", artfakta: "artfakta" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<div class=\"bg-primary adb-main-header\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg\" *ngIf=\"translationFinished\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"d-flex align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-1\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a routerLink=\"/\" class=\"text-white text-decoration-none fs-1 fw-bold\">Artfakta</a>\r\n </nav>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n attr.aria-label=\"{{'ADB_HEADER.MENY'|translate}}\"\r\n (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"d-none ms-2 d-md-inline-block\">{{'ADB_HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\"\r\n [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\">Artfakta</h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div tabindex=\"-1\" class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"initials\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" 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 <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showArtfakta?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showArtfakta = !showArtfakta\"\r\n attr.aria-controls=\"artfakta-links\" attr.aria-expanded=\"{{showArtfakta}}\">\r\n <span class=\"fas\" [ngClass]=\"showArtfakta?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showArtfakta\" id=\"artfakta-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.keys.url}}\" class=\"text-white\">\r\n {{navigation.keys.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.mySpecies.url}}\" class=\"text-white\">\r\n {{navigation.mySpecies.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.lists.url}}\" class=\"text-white\">\r\n {{navigation.lists.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.imageRec.url}}\" class=\"text-white\">\r\n {{navigation.imageRec.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.filter.url}}\" class=\"text-white\">\r\n {{navigation.filter.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showNOS?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showNOS = !showNOS\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showNOS = !showNOS\" attr.aria-controls=\"nos-links\" attr.aria-expanded=\"{{showNOS}}\">\r\n <span class=\"fas\" [ngClass]=\"showNOS?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showNOS\" id=\"nos-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.nameSearch.url}}\" class=\"text-white\">\r\n {{navigation.nameSearch.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.match.url}}\" class=\"text-white\">\r\n {{navigation.match.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u class=\"me-1\">{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u> <span class=\"fas fa-external-link\"></span></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
431
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavComponent, deps: [{ token: i1$2.HttpClient }, { token: i1.Router }, { token: i1$1.TranslateService }, { token: EnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
432
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: ArtportalenNavComponent, isStandalone: false, selector: "adb-artportalen-nav", inputs: { showPattern: "showPattern", userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n @if (translationFinished) {\r\n <header class=\"container-lg px-0\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n }\r\n @if (navigation) {\r\n <div role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n @if (fullName) {\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n }\r\n @if (!fullName) {\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n @if (navigation) {\r\n <a class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n }\r\n }\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showReport) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showObservations) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showSubs) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
433
433
|
}
|
|
434
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavComponent, decorators: [{
|
|
435
435
|
type: Component,
|
|
436
|
-
args: [{ selector: 'adb-nav', standalone: false, template: "<div class=\"bg-primary adb-main-header\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg\" *ngIf=\"translationFinished\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"d-flex align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-1\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a routerLink=\"/\" class=\"text-white text-decoration-none fs-1 fw-bold\">Artfakta</a>\r\n </nav>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n attr.aria-label=\"{{'ADB_HEADER.MENY'|translate}}\"\r\n (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"d-none ms-2 d-md-inline-block\">{{'ADB_HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\"\r\n [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\">Artfakta</h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div tabindex=\"-1\" class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"initials\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" 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 <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showArtfakta?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showArtfakta = !showArtfakta\"\r\n attr.aria-controls=\"artfakta-links\" attr.aria-expanded=\"{{showArtfakta}}\">\r\n <span class=\"fas\" [ngClass]=\"showArtfakta?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showArtfakta\" id=\"artfakta-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.keys.url}}\" class=\"text-white\">\r\n {{navigation.keys.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.mySpecies.url}}\" class=\"text-white\">\r\n {{navigation.mySpecies.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.lists.url}}\" class=\"text-white\">\r\n {{navigation.lists.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.imageRec.url}}\" class=\"text-white\">\r\n {{navigation.imageRec.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.filter.url}}\" class=\"text-white\">\r\n {{navigation.filter.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showNOS?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showNOS = !showNOS\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showNOS = !showNOS\" attr.aria-controls=\"nos-links\" attr.aria-expanded=\"{{showNOS}}\">\r\n <span class=\"fas\" [ngClass]=\"showNOS?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showNOS\" id=\"nos-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.nameSearch.url}}\" class=\"text-white\">\r\n {{navigation.nameSearch.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.match.url}}\" class=\"text-white\">\r\n {{navigation.match.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u class=\"me-1\">{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u> <span class=\"fas fa-external-link\"></span></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\">\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
437
|
-
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i1.Router }, { type:
|
|
436
|
+
args: [{ selector: 'adb-artportalen-nav', standalone: false, template: "<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n @if (translationFinished) {\r\n <header class=\"container-lg px-0\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n }\r\n @if (navigation) {\r\n <div role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n @if (fullName) {\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n }\r\n @if (!fullName) {\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n @if (navigation) {\r\n <a class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n }\r\n }\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showReport) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showObservations) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n @if (showSubs) {\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n }\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n }\r\n</div>" }]
|
|
437
|
+
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i1.Router }, { type: i1$1.TranslateService }, { type: EnvironmentService }], propDecorators: { loginClicked: [{
|
|
438
438
|
type: Output
|
|
439
439
|
}], logoutClicked: [{
|
|
440
440
|
type: Output
|
|
@@ -444,15 +444,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
444
444
|
type: Input
|
|
445
445
|
}], userName: [{
|
|
446
446
|
type: Input
|
|
447
|
-
}], artfakta: [{
|
|
448
|
-
type: Input
|
|
449
447
|
}] } });
|
|
450
448
|
|
|
451
449
|
class AdbDropdownService {
|
|
452
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
453
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
450
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
451
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownService }); }
|
|
454
452
|
}
|
|
455
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownService, decorators: [{
|
|
456
454
|
type: Injectable
|
|
457
455
|
}] });
|
|
458
456
|
|
|
@@ -517,10 +515,10 @@ class AdbDropdownDirective {
|
|
|
517
515
|
getId() {
|
|
518
516
|
return '' + Math.floor(Math.random() * Date.now());
|
|
519
517
|
}
|
|
520
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
521
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
518
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownDirective, deps: [{ token: i0.ElementRef }, { token: AdbDropdownService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
519
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: AdbDropdownDirective, isStandalone: false, selector: "[adbDropdown]", inputs: { insideClick: "insideClick" }, outputs: { adbDropdown: "adbDropdown" }, host: { listeners: { "click": "onClick()", "document:click": "onCheckOutSideClick($event.target)" }, properties: { "id": "this.id", "attr.data-toggle": "this.dataToggle", "attr.aria-haspopup": "this.haspPopup", "attr.aria-expanded": "this.expanded", "attr.aria-controls": "this.dropId" } }, exportAs: ["adbDropdown"], ngImport: i0 }); }
|
|
522
520
|
}
|
|
523
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownDirective, decorators: [{
|
|
524
522
|
type: Directive,
|
|
525
523
|
args: [{
|
|
526
524
|
selector: '[adbDropdown]',
|
|
@@ -631,10 +629,10 @@ class AdbDropdown2Directive {
|
|
|
631
629
|
getId() {
|
|
632
630
|
return '' + Math.floor(Math.random() * Date.now());
|
|
633
631
|
}
|
|
634
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
635
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
632
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdown2Directive, deps: [{ token: i0.ElementRef }, { token: AdbDropdownService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
633
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: AdbDropdown2Directive, isStandalone: false, selector: "[adbDropdown2]", inputs: { insideClick: "insideClick" }, outputs: { adbDropdown: "adbDropdown" }, host: { listeners: { "click": "onClick()", "document:click": "onCheckOutSideClick($event.target)", "window:scroll": "onWindowScroll()" }, properties: { "id": "this.id", "attr.data-toggle": "this.dataToggle", "attr.aria-haspopup": "this.haspPopup", "attr.aria-expanded": "this.expanded", "attr.aria-controls": "this.dropId" } }, exportAs: ["adbDropdown"], ngImport: i0 }); }
|
|
636
634
|
}
|
|
637
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdown2Directive, decorators: [{
|
|
638
636
|
type: Directive,
|
|
639
637
|
args: [{
|
|
640
638
|
selector: '[adbDropdown2]',
|
|
@@ -672,11 +670,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
672
670
|
}] } });
|
|
673
671
|
|
|
674
672
|
class AdbDropdownModule {
|
|
675
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
676
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
677
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
673
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
674
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownModule, declarations: [AdbDropdownDirective, AdbDropdown2Directive], imports: [CommonModule, i1$1.TranslateModule, AdbDirectivesModule], exports: [AdbDropdownDirective, AdbDropdown2Directive] }); }
|
|
675
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownModule, providers: [AdbDropdownService], imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule] }); }
|
|
678
676
|
}
|
|
679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDropdownModule, decorators: [{
|
|
680
678
|
type: NgModule,
|
|
681
679
|
args: [{
|
|
682
680
|
imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],
|
|
@@ -716,10 +714,10 @@ class InfiniteScrollComponent {
|
|
|
716
714
|
this._intersectionObserver.disconnect();
|
|
717
715
|
}
|
|
718
716
|
}
|
|
719
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
720
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
717
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InfiniteScrollComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
718
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: InfiniteScrollComponent, isStandalone: false, selector: "[onVisible]", outputs: { onVisible: "onVisible", onHidden: "onHidden" }, host: { properties: { "style.height": "this.height" } }, ngImport: i0 }); }
|
|
721
719
|
}
|
|
722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
720
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: InfiniteScrollComponent, decorators: [{
|
|
723
721
|
type: Directive,
|
|
724
722
|
args: [{
|
|
725
723
|
selector: "[onVisible]",
|
|
@@ -775,10 +773,10 @@ class PagerBaseDirective {
|
|
|
775
773
|
this.amountOfPages = 0;
|
|
776
774
|
}
|
|
777
775
|
}
|
|
778
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
779
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
776
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
777
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: PagerBaseDirective, isStandalone: true, inputs: { setTotalCount: ["totalCount", "setTotalCount"], setLimit: ["limit", "setLimit"] }, ngImport: i0 }); }
|
|
780
778
|
}
|
|
781
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
779
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerBaseDirective, decorators: [{
|
|
782
780
|
type: Directive
|
|
783
781
|
}], propDecorators: { setTotalCount: [{
|
|
784
782
|
type: Input,
|
|
@@ -823,12 +821,12 @@ class PagerComponent extends PagerBaseDirective {
|
|
|
823
821
|
ngOnDestroy() {
|
|
824
822
|
this.subscription.unsubscribe();
|
|
825
823
|
}
|
|
826
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
827
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
824
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerComponent, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
825
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: PagerComponent, isStandalone: false, selector: "adb-pager-nav", inputs: { offsetName: "offsetName", infiniteLimit: "infiniteLimit" }, usesInheritance: true, ngImport: i0, template: "@if (pages&&pages.length>1&¤tPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end my-1\">\r\n <ul class=\"pagination flex-wrap mb-0\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.first\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.prev\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n @for (page of params.pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage===page.name\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"page.params\"\r\n queryParamsHandling=\"merge\">{{page.name}}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.next\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\" [attr.aria-disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
828
826
|
}
|
|
829
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
827
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerComponent, decorators: [{
|
|
830
828
|
type: Component,
|
|
831
|
-
args: [{ selector: 'adb-pager-nav', standalone: false, template: "
|
|
829
|
+
args: [{ selector: 'adb-pager-nav', standalone: false, template: "@if (pages&&pages.length>1&¤tPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end my-1\">\r\n <ul class=\"pagination flex-wrap mb-0\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.first\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </a>\r\n </li>\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.prev\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage===1}\" [attr.aria-disabled]=\"currentPage===1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </a>\r\n </li>\r\n @for (page of params.pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage===page.name\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"page.params\"\r\n queryParamsHandling=\"merge\">{{page.name}}</a>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.next\" queryParamsHandling=\"merge\"\r\n [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\" [attr.aria-disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </a>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" [routerLink]=\"[]\" [queryParams]=\"params.last\" queryParamsHandling=\"merge\"\r\n [attr.aria-disabled]=\"currentPage>=amountOfPages\" [ngClass]=\"{'pe-none opacity-50':currentPage>=amountOfPages}\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}" }]
|
|
832
830
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }], propDecorators: { offsetName: [{
|
|
833
831
|
type: Input
|
|
834
832
|
}], infiniteLimit: [{
|
|
@@ -868,12 +866,12 @@ class PagerInlineComponent extends PagerBaseDirective {
|
|
|
868
866
|
this.pageChanged.emit(this.currentPage - 1);
|
|
869
867
|
this.calculatePages();
|
|
870
868
|
}
|
|
871
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
872
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
869
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
870
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: PagerInlineComponent, isStandalone: false, selector: "adb-pager", inputs: { infiniteLimit: "infiniteLimit" }, outputs: { pageChanged: "pageChanged" }, usesInheritance: true, ngImport: i0, template: "@if (pages&&pages.length>1&¤tPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end pr-2 my-1\">\r\n <ul class=\"pagination flex-wrap\">\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onFirstClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </button>\r\n </li>\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onPrevClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </button>\r\n </li>\r\n @for (page of pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage==page\">\r\n <button class=\"page-link\" (click)=\"onPageClick(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onNextClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </button>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}\r\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
873
871
|
}
|
|
874
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PagerInlineComponent, decorators: [{
|
|
875
873
|
type: Component,
|
|
876
|
-
args: [{ selector: 'adb-pager', standalone: false, template: "
|
|
874
|
+
args: [{ selector: 'adb-pager', standalone: false, template: "@if (pages&&pages.length>1&¤tPage<=amountOfPages) {\r\n <nav class=\"d-flex justify-content-end pr-2 my-1\">\r\n <ul class=\"pagination flex-wrap\">\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onFirstClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-double-left\"></i>\r\n </button>\r\n </li>\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onPrevClick()\" [ngClass]=\"currentPage==1?'opacity-50 pe-none':''\" [disabled]=\"currentPage==1\">\r\n <i class=\"fas fa-chevron-left\"></i>\r\n </button>\r\n </li>\r\n @for (page of pages; track page) {\r\n <li class=\"page-item\" [class.active]=\"currentPage==page\">\r\n <button class=\"page-link\" (click)=\"onPageClick(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onNextClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-right\"></i>\r\n </button>\r\n </li>\r\n @if (!infiniteLimit) {\r\n @if ((amountOfPages-1)*limit<10000) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n }\r\n @if (infiniteLimit) {\r\n <li class=\"page-item\">\r\n <button class=\"page-link\" (click)=\"onLastClick()\" [ngClass]=\"currentPage>=amountOfPages?'opacity-50 pe-none':''\" [disabled]=\"currentPage>=amountOfPages\">\r\n <i class=\"fas fa-chevron-double-right\"></i>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n}\r\n" }]
|
|
877
875
|
}], ctorParameters: () => [], propDecorators: { pageChanged: [{
|
|
878
876
|
type: Output
|
|
879
877
|
}], infiniteLimit: [{
|
|
@@ -881,13 +879,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
881
879
|
}] } });
|
|
882
880
|
|
|
883
881
|
class AdbPagersModule {
|
|
884
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
885
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
882
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPagersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
883
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbPagersModule, declarations: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent], imports: [CommonModule,
|
|
886
884
|
RouterModule], exports: [InfiniteScrollComponent, PagerComponent, PagerInlineComponent] }); }
|
|
887
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
885
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPagersModule, imports: [CommonModule,
|
|
888
886
|
RouterModule] }); }
|
|
889
887
|
}
|
|
890
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
888
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPagersModule, decorators: [{
|
|
891
889
|
type: NgModule,
|
|
892
890
|
args: [{
|
|
893
891
|
imports: [
|
|
@@ -899,160 +897,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
899
897
|
}]
|
|
900
898
|
}] });
|
|
901
899
|
|
|
902
|
-
class ADBHeaderModule {
|
|
903
|
-
static forRoot(environment) {
|
|
904
|
-
return {
|
|
905
|
-
ngModule: ADBHeaderModule,
|
|
906
|
-
providers: [
|
|
907
|
-
EnvironmentService$1,
|
|
908
|
-
{
|
|
909
|
-
provide: 'env', // you can also use InjectionToken
|
|
910
|
-
useValue: environment
|
|
911
|
-
}
|
|
912
|
-
]
|
|
913
|
-
};
|
|
914
|
-
}
|
|
915
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ADBHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
916
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: ADBHeaderModule, declarations: [ADBNavComponent], imports: [CommonModule,
|
|
917
|
-
RouterModule,
|
|
918
|
-
TranslateModule,
|
|
919
|
-
AdbDirectivesModule,
|
|
920
|
-
AdbDropdownModule,
|
|
921
|
-
AdbPagersModule], exports: [ADBNavComponent] }); }
|
|
922
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ADBHeaderModule, providers: [provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
923
|
-
RouterModule,
|
|
924
|
-
TranslateModule,
|
|
925
|
-
AdbDirectivesModule,
|
|
926
|
-
AdbDropdownModule,
|
|
927
|
-
AdbPagersModule] }); }
|
|
928
|
-
}
|
|
929
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ADBHeaderModule, decorators: [{
|
|
930
|
-
type: NgModule,
|
|
931
|
-
args: [{ declarations: [ADBNavComponent],
|
|
932
|
-
exports: [ADBNavComponent], imports: [CommonModule,
|
|
933
|
-
RouterModule,
|
|
934
|
-
TranslateModule,
|
|
935
|
-
AdbDirectivesModule,
|
|
936
|
-
AdbDropdownModule,
|
|
937
|
-
AdbPagersModule], providers: [provideHttpClient(withInterceptorsFromDi())] }]
|
|
938
|
-
}] });
|
|
939
|
-
|
|
940
|
-
class EnvironmentService {
|
|
941
|
-
constructor(environment) {
|
|
942
|
-
this.environment = environment;
|
|
943
|
-
}
|
|
944
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: EnvironmentService, deps: [{ token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
945
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: EnvironmentService }); }
|
|
946
|
-
}
|
|
947
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: EnvironmentService, decorators: [{
|
|
948
|
-
type: Injectable
|
|
949
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
950
|
-
type: Inject,
|
|
951
|
-
args: ['env']
|
|
952
|
-
}] }] });
|
|
953
|
-
|
|
954
|
-
class ArtportalenNavComponent {
|
|
955
|
-
set userName(fullName) {
|
|
956
|
-
this.fullName = fullName;
|
|
957
|
-
}
|
|
958
|
-
;
|
|
959
|
-
constructor(httpClient, router, trans, envService) {
|
|
960
|
-
this.httpClient = httpClient;
|
|
961
|
-
this.router = router;
|
|
962
|
-
this.trans = trans;
|
|
963
|
-
this.envService = envService;
|
|
964
|
-
this.subscription = new Subscription();
|
|
965
|
-
this.loginClicked = new EventEmitter();
|
|
966
|
-
this.logoutClicked = new EventEmitter();
|
|
967
|
-
this.dropMenuChange = new EventEmitter();
|
|
968
|
-
this.showPattern = false;
|
|
969
|
-
this.translationFinished = false;
|
|
970
|
-
this.lastPosition = 0;
|
|
971
|
-
this.showNavMenu = false;
|
|
972
|
-
this.showUserMenu = false;
|
|
973
|
-
this.showReport = true;
|
|
974
|
-
this.showObservations = true;
|
|
975
|
-
this.showSubs = false;
|
|
976
|
-
}
|
|
977
|
-
ngOnInit() {
|
|
978
|
-
this.url = window.location.href;
|
|
979
|
-
const baseUrl = this.envService.environment.resourceUrl;
|
|
980
|
-
const url = '/assets/artportalen/links-ap3.json';
|
|
981
|
-
this.subscription.add(this.httpClient.get(baseUrl + url).subscribe(result => {
|
|
982
|
-
this.navigation = result;
|
|
983
|
-
}));
|
|
984
|
-
this.initTranslations(baseUrl);
|
|
985
|
-
this.router.events.subscribe((event) => {
|
|
986
|
-
if (event instanceof NavigationEnd) {
|
|
987
|
-
this.showNavMenu = false;
|
|
988
|
-
this.dropMenuChange.emit(this.showNavMenu);
|
|
989
|
-
}
|
|
990
|
-
});
|
|
991
|
-
}
|
|
992
|
-
showMenuDropdown(show) {
|
|
993
|
-
this.showUserMenu = false;
|
|
994
|
-
if (this.showNavMenu !== show) {
|
|
995
|
-
this.showNavMenu = show;
|
|
996
|
-
this.dropMenuChange.emit(show);
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
setLanguage(lang) {
|
|
1000
|
-
this.trans.use(lang);
|
|
1001
|
-
this.showNavMenu = false;
|
|
1002
|
-
this.dropMenuChange.emit(false);
|
|
1003
|
-
}
|
|
1004
|
-
onUserClick() {
|
|
1005
|
-
if (this.fullName) {
|
|
1006
|
-
this.logout();
|
|
1007
|
-
}
|
|
1008
|
-
else {
|
|
1009
|
-
this.login();
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1012
|
-
login() {
|
|
1013
|
-
this.loginClicked.emit();
|
|
1014
|
-
}
|
|
1015
|
-
logout() {
|
|
1016
|
-
this.logoutClicked.emit();
|
|
1017
|
-
}
|
|
1018
|
-
initTranslations(baseUrl) {
|
|
1019
|
-
if (this.trans.store.translations[this.trans.currentLang]) {
|
|
1020
|
-
this.loadTranslation(baseUrl, this.trans.currentLang);
|
|
1021
|
-
}
|
|
1022
|
-
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
1023
|
-
this.translationFinished = false;
|
|
1024
|
-
this.loadTranslation(baseUrl, event.lang);
|
|
1025
|
-
}));
|
|
1026
|
-
}
|
|
1027
|
-
loadTranslation(baseUrl, lang) {
|
|
1028
|
-
//TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
|
|
1029
|
-
const url = baseUrl + `/assets/artportalen/i18n/${lang}.json`;
|
|
1030
|
-
this.subscription.add(this.httpClient.get(url).subscribe(translations => {
|
|
1031
|
-
this.trans.setTranslation(lang, translations, true);
|
|
1032
|
-
this.translationFinished = true;
|
|
1033
|
-
}));
|
|
1034
|
-
}
|
|
1035
|
-
ngOnDestroy() {
|
|
1036
|
-
this.subscription.unsubscribe();
|
|
1037
|
-
}
|
|
1038
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ArtportalenNavComponent, deps: [{ token: i1$2.HttpClient }, { token: i1.Router }, { token: i1$1.TranslateService }, { token: EnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1039
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.13", type: ArtportalenNavComponent, isStandalone: false, selector: "adb-artportalen-nav", inputs: { showPattern: "showPattern", userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg px-0\" *ngIf=\"translationFinished\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"fullName\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!fullName\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showReport\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showObservations\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showSubs\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
1040
|
-
}
|
|
1041
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ArtportalenNavComponent, decorators: [{
|
|
1042
|
-
type: Component,
|
|
1043
|
-
args: [{ selector: 'adb-artportalen-nav', standalone: false, template: "<div class=\"bg-primary adb-main-header position-static\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg px-0\" *ngIf=\"translationFinished\">\r\n <div [attr.id]=\"showPattern?'banner':''\" class=\"px-1 d-flex flex-wrap align-items-center gap-2\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2 gap-2\">\r\n <a class=\"d-flex text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <img class=\"d-none d-sm-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n <a [href]=\"navigation?.home\" class=\"text-white text-decoration-none fs-1 fw-bold\">{{'HEADER.TITLE'|translate}}</a>\r\n </nav>\r\n <div class=\"ms-auto d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"d-none d-md-block btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\" title=\"{{'HEADER.MENY'|translate}}\" attr.aria-label=\"{{'HEADER.MENY'|translate}}\" (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n <small class=\"ms-2 d-none d-md-inline-block\">{{'HEADER.MENY'|translate}}</small>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center d-md-none p-2 border-dark border-top\">\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n title=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\"\r\n attr.aria-label=\"{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}\" (click)=\"onUserClick()\">\r\n <small>{{(!fullName ? 'HEADER.LOGIN' : 'HEADER.LOGOUT')|translate}}</small>\r\n </button>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\" [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\"><a [href]=\"navigation.home\" class=\"text-white text-decoration-none\">{{'HEADER.TITLE'|translate}}</a></h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body d-flex flex-column p-0\">\r\n <div class=\"px-3\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"fullName\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!fullName\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\" attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showReport\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{'HEADER.REPORT'|translate}}\r\n </a>\r\n <li class=\"d-block py-1\">\r\n <div class=\"d-flex \">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showObservations?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"py-1 text-white flex-grow-1\" href=\"{{navigation.observations.url}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showObservations = !showObservations\" attr.aria-controls=\"observations-links\" attr.aria-expanded=\"{{showObservations}}\">\r\n <span class=\"fas\" [ngClass]=\"showObservations?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showObservations\" id=\"observations-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}\">\r\n {{'HEADER.TODAYS_OBSERVATIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-0\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fieldDiary.url}}\">\r\n {{'HEADER.FIELD_DIARY'|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showSubs?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <button class=\"btn btn-link p-0 text-white w-100 text-start\" (click)=\"showSubs = !showSubs\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </button>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showSubs = !showSubs\" attr.aria-controls=\"subs-links\" attr.aria-expanded=\"{{showSubs}}\">\r\n <span class=\"fas\" [ngClass]=\"showSubs?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showSubs\" id=\"subs-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}\">\r\n {{'HEADER.MY_SUBSCRIPTIONS'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"py-1\">\r\n <div class=\"d-flex\">\r\n <a href=\"{{navigation.events.url}}\" class=\"text-white flex-grow-1\">\r\n {{navigation.events.transId|translate}}\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.fyndregler.url}}\">\r\n {{navigation.fyndregler.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n Artportalen.se\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block fw-bold py-1 text-white\" [href]=\"navigation.artfaktaUrl\">\r\n {{'HEADER.ARTFAKTA'|translate}}\r\n <i class=\"fas fa-external-link\"></i>\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white pt-1\">\r\n {{'HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\">\r\n {{'HEADER.ARTDATABANKEN'|translate}}\r\n <span class=\"fas fa-external-link\"></span>\r\n </a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div id=\"pattern\" class=\"flex-grow-1\"> </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1044
|
-
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i1.Router }, { type: i1$1.TranslateService }, { type: EnvironmentService }], propDecorators: { loginClicked: [{
|
|
1045
|
-
type: Output
|
|
1046
|
-
}], logoutClicked: [{
|
|
1047
|
-
type: Output
|
|
1048
|
-
}], dropMenuChange: [{
|
|
1049
|
-
type: Output
|
|
1050
|
-
}], showPattern: [{
|
|
1051
|
-
type: Input
|
|
1052
|
-
}], userName: [{
|
|
1053
|
-
type: Input
|
|
1054
|
-
}] } });
|
|
1055
|
-
|
|
1056
900
|
class ArtportalenFooterComponent {
|
|
1057
901
|
constructor(httpClient, envService, trans) {
|
|
1058
902
|
this.httpClient = httpClient;
|
|
@@ -1067,9 +911,7 @@ class ArtportalenFooterComponent {
|
|
|
1067
911
|
this.initTranslations(this.baseUrl);
|
|
1068
912
|
}
|
|
1069
913
|
initTranslations(baseUrl) {
|
|
1070
|
-
|
|
1071
|
-
this.loadTranslation(baseUrl, this.trans.currentLang);
|
|
1072
|
-
}
|
|
914
|
+
this.loadTranslation(baseUrl, this.trans.getCurrentLang());
|
|
1073
915
|
this.subscription.add(this.trans.onLangChange.subscribe((event) => {
|
|
1074
916
|
this.translationFinished = false;
|
|
1075
917
|
this.loadTranslation(baseUrl, event.lang);
|
|
@@ -1086,12 +928,12 @@ class ArtportalenFooterComponent {
|
|
|
1086
928
|
ngOnDestroy() {
|
|
1087
929
|
this.subscription.unsubscribe();
|
|
1088
930
|
}
|
|
1089
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1090
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
931
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenFooterComponent, deps: [{ token: i1$2.HttpClient }, { token: EnvironmentService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
932
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: ArtportalenFooterComponent, isStandalone: false, selector: "adb-artportalen-footer", ngImport: i0, template: "@if (translationFinished) {\r\n <footer class=\"bg-primary-dark py-2 mt-auto container-fluid\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"container py-3 px-5 justify-content-center text-white\">\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4 mb-3\">\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/om\" class=\"d-block text-white mb-2\">{{'FOOTER.ABOUT'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/artportalen-tillganglighetsredogorelse\" class=\"d-block text-white mb-2\">{{'FOOTER.WCAG'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/kontakt/artportalen-support\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.SUPPORT'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/villkor-kontohavare\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.TERMS_OF_USE'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/behandling-av-personuppgifter\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.PERSONAL_DATA'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-2\" style=\"font-variant: small-caps;\"><sub><strong>{{'FOOTER.PARTNERS'|translate}}</strong></sub></div>\r\n <a href=\"https://birdlife.se\" class=\"d-block text-white mb-2\"><span class=\"me-1\">BirdLife Sverige</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://svenskbotanik.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Svenska Botaniska F\u00F6reningen</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.sef.nu\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Entomologiska F\u00F6rening</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.svampar.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Mykologiska F\u00F6rening</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-3 text-white\">\r\n <div>{{'FOOTER.INFO'|translate}}</div>\r\n <div>{{'FOOTER.INFO2'|translate}}</div>\r\n <div>{{'FOOTER.INFO3'|translate}}\r\n <a href=\"https://www.naturvardsverket.se\" class=\"text-white mb-2\"><u class=\"me-1\">Naturv\u00E5rdsverket.</u><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">{{'FOOTER.INFO4'|translate}}.</div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2 mb-3\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img class=\"d-block d-md-none\" style=\"height: 2.6rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <img class=\"d-none d-md-block\" style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"border-end d-block d-sm-none\"></div>\r\n <img class=\"d-none d-md-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n <img class=\"d-block d-md-none align-self-center pe-5\" style=\"height: 0.8rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </footer>\r\n}", dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
1091
933
|
}
|
|
1092
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenFooterComponent, decorators: [{
|
|
1093
935
|
type: Component,
|
|
1094
|
-
args: [{ selector: 'adb-artportalen-footer', standalone: false, template: "<footer class=\"bg-primary-dark py-2 mt-auto container-fluid\"
|
|
936
|
+
args: [{ selector: 'adb-artportalen-footer', standalone: false, template: "@if (translationFinished) {\r\n <footer class=\"bg-primary-dark py-2 mt-auto container-fluid\">\r\n <div class=\"d-flex justify-content-center\">\r\n <div class=\"container py-3 px-5 justify-content-center text-white\">\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4 mb-3\">\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/om\" class=\"d-block text-white mb-2\">{{'FOOTER.ABOUT'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/artportalen/artportalen-tillganglighetsredogorelse\" class=\"d-block text-white mb-2\">{{'FOOTER.WCAG'|translate}}</a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/kontakt/artportalen-support\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.SUPPORT'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/rapportering-och-fynd/villkor-kontohavare\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.TERMS_OF_USE'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.slu.se/artdatabanken/om-oss/behandling-av-personuppgifter\" class=\"d-block text-white mb-2\"><span class=\"me-1\">{{'FOOTER.PERSONAL_DATA'|translate}}</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-2\" style=\"font-variant: small-caps;\"><sub><strong>{{'FOOTER.PARTNERS'|translate}}</strong></sub></div>\r\n <a href=\"https://birdlife.se\" class=\"d-block text-white mb-2\"><span class=\"me-1\">BirdLife Sverige</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://svenskbotanik.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Svenska Botaniska F\u00F6reningen</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.sef.nu\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Entomologiska F\u00F6rening</span><span class=\"fas fa-external-link\"></span></a>\r\n <a href=\"https://www.svampar.se\" class=\"d-block text-nowrap text-white mb-2\"><span class=\"me-1\">Sveriges Mykologiska F\u00F6rening</span><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-2\"></div>\r\n <div class=\"col-md-4\">\r\n <div class=\"mb-3 text-white\">\r\n <div>{{'FOOTER.INFO'|translate}}</div>\r\n <div>{{'FOOTER.INFO2'|translate}}</div>\r\n <div>{{'FOOTER.INFO3'|translate}}\r\n <a href=\"https://www.naturvardsverket.se\" class=\"text-white mb-2\"><u class=\"me-1\">Naturv\u00E5rdsverket.</u><span class=\"fas fa-external-link\"></span></a>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">{{'FOOTER.INFO4'|translate}}.</div>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2 mb-3\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img class=\"d-block d-md-none\" style=\"height: 2.6rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <img class=\"d-none d-md-block\" style=\"height: 2rem;\" src=\"/assets/images/slu.svg\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"border-end d-block d-sm-none\"></div>\r\n <img class=\"d-none d-md-block align-self-center pe-5\" style=\"height: 0.7rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n <img class=\"d-block d-md-none align-self-center pe-5\" style=\"height: 0.8rem;\" src=\"/assets/images/artdatabanken.svg\" alt=\"logo\">\r\n </a>\r\n </div>\r\n <div class=\"col-md-2\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </footer>\r\n}" }]
|
|
1095
937
|
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: EnvironmentService }, { type: i1$1.TranslateService }] });
|
|
1096
938
|
|
|
1097
939
|
class ArtportalenNavModule {
|
|
@@ -1107,8 +949,8 @@ class ArtportalenNavModule {
|
|
|
1107
949
|
]
|
|
1108
950
|
};
|
|
1109
951
|
}
|
|
1110
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1111
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
952
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
953
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavModule, declarations: [ArtportalenNavComponent,
|
|
1112
954
|
ArtportalenFooterComponent], imports: [CommonModule,
|
|
1113
955
|
RouterModule,
|
|
1114
956
|
TranslateModule,
|
|
@@ -1116,14 +958,14 @@ class ArtportalenNavModule {
|
|
|
1116
958
|
AdbDropdownModule,
|
|
1117
959
|
AdbPagersModule], exports: [ArtportalenNavComponent,
|
|
1118
960
|
ArtportalenFooterComponent] }); }
|
|
1119
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
961
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavModule, providers: [EnvironmentService, provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
1120
962
|
RouterModule,
|
|
1121
963
|
TranslateModule,
|
|
1122
964
|
AdbDirectivesModule,
|
|
1123
965
|
AdbDropdownModule,
|
|
1124
966
|
AdbPagersModule] }); }
|
|
1125
967
|
}
|
|
1126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: ArtportalenNavModule, decorators: [{
|
|
1127
969
|
type: NgModule,
|
|
1128
970
|
args: [{ declarations: [
|
|
1129
971
|
ArtportalenNavComponent,
|
|
@@ -1138,7 +980,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1138
980
|
AdbDirectivesModule,
|
|
1139
981
|
AdbDropdownModule,
|
|
1140
982
|
AdbPagersModule],
|
|
1141
|
-
providers: [provideHttpClient(withInterceptorsFromDi())] }]
|
|
983
|
+
providers: [EnvironmentService, provideHttpClient(withInterceptorsFromDi())] }]
|
|
1142
984
|
}] });
|
|
1143
985
|
|
|
1144
986
|
class LocaleDatePipe {
|
|
@@ -1148,10 +990,10 @@ class LocaleDatePipe {
|
|
|
1148
990
|
transform(value, format) {
|
|
1149
991
|
return new DatePipe(this.translate.currentLang).transform(value, format, null, this.translate.currentLang);
|
|
1150
992
|
}
|
|
1151
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1152
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
993
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LocaleDatePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
994
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: LocaleDatePipe, isStandalone: false, name: "adbLocaleDate", pure: false }); }
|
|
1153
995
|
}
|
|
1154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
996
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LocaleDatePipe, decorators: [{
|
|
1155
997
|
type: Pipe,
|
|
1156
998
|
args: [{
|
|
1157
999
|
name: 'adbLocaleDate',
|
|
@@ -1170,10 +1012,10 @@ class EmptyValuePipe {
|
|
|
1170
1012
|
}
|
|
1171
1013
|
return value;
|
|
1172
1014
|
}
|
|
1173
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1174
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
1015
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: EmptyValuePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1016
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: EmptyValuePipe, isStandalone: false, name: "adbEmptyValue" }); }
|
|
1175
1017
|
}
|
|
1176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1018
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: EmptyValuePipe, decorators: [{
|
|
1177
1019
|
type: Pipe,
|
|
1178
1020
|
args: [{
|
|
1179
1021
|
name: 'adbEmptyValue',
|
|
@@ -1215,10 +1057,10 @@ class HighlightPipe {
|
|
|
1215
1057
|
normalizeText(text) {
|
|
1216
1058
|
return text?.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLocaleLowerCase();
|
|
1217
1059
|
}
|
|
1218
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1219
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
1060
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1061
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: HighlightPipe, isStandalone: false, name: "adbHighlight" }); }
|
|
1220
1062
|
}
|
|
1221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightPipe, decorators: [{
|
|
1222
1064
|
type: Pipe,
|
|
1223
1065
|
args: [{
|
|
1224
1066
|
name: 'adbHighlight',
|
|
@@ -1234,10 +1076,10 @@ class NumberSpacingPipe {
|
|
|
1234
1076
|
}
|
|
1235
1077
|
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
|
|
1236
1078
|
}
|
|
1237
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1238
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
1079
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: NumberSpacingPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1080
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: NumberSpacingPipe, isStandalone: false, name: "adbSpacing", pure: false }); }
|
|
1239
1081
|
}
|
|
1240
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1082
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: NumberSpacingPipe, decorators: [{
|
|
1241
1083
|
type: Pipe,
|
|
1242
1084
|
args: [{
|
|
1243
1085
|
name: 'adbSpacing',
|
|
@@ -1280,10 +1122,10 @@ class HighlightHtmlPipe {
|
|
|
1280
1122
|
escapeRegExp(text) {
|
|
1281
1123
|
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
1282
1124
|
}
|
|
1283
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1284
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
1125
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1126
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: HighlightHtmlPipe, isStandalone: false, name: "adbHighlightHtml" }); }
|
|
1285
1127
|
}
|
|
1286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: HighlightHtmlPipe, decorators: [{
|
|
1287
1129
|
type: Pipe,
|
|
1288
1130
|
args: [{
|
|
1289
1131
|
name: 'adbHighlightHtml',
|
|
@@ -1292,11 +1134,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1292
1134
|
}] });
|
|
1293
1135
|
|
|
1294
1136
|
class AdbPipesModule {
|
|
1295
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1296
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1297
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1137
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1138
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbPipesModule, declarations: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe], exports: [HighlightPipe, HighlightHtmlPipe, NumberSpacingPipe, LocaleDatePipe, EmptyValuePipe] }); }
|
|
1139
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPipesModule }); }
|
|
1298
1140
|
}
|
|
1299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPipesModule, decorators: [{
|
|
1300
1142
|
type: NgModule,
|
|
1301
1143
|
args: [{
|
|
1302
1144
|
imports: [],
|
|
@@ -1454,10 +1296,10 @@ class AdbDatePickerComponent {
|
|
|
1454
1296
|
return null;
|
|
1455
1297
|
}
|
|
1456
1298
|
}
|
|
1457
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1458
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1299
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1300
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AdbDatePickerComponent, isStandalone: false, selector: "adb-date-picker", inputs: { initialDate: "initialDate", settings: "settings", toLeft: "toLeft", id: "id" }, outputs: { selectDate: "selectDate" }, host: { properties: { "id": "this.id" } }, ngImport: i0, template: "<div class=\"position-relative\" [class.to-left]=\"toLeft\">\r\n <nav class=\"bg-white shadow rounded position-absolute\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\" [disabled]=\"noYearMode&¤tMonth===0\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth();$event.stopPropagation()\">{{selectedDate|adbLocaleDate:'MMM'}}</button>\r\n <button *ngIf=\"!noYearMode\" tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button tabIndex=\"-1\" *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null;$event.stopPropagation()\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button tabIndex=\"-1\" *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\" [disabled]=\"noYearMode&¤tMonth===11\"><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 type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value);$event.stopPropagation()\" [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 type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value);$event.stopPropagation()\" [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\" *ngIf=\"!years&&!months\">\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 tabIndex=\"-1\" class=\"btn rounded-circle p-0\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\" type=\"button\" \r\n [class.border]=\"day.isToday\" [class.bg-primary]=\"day.isSelected\" [class.text-white]=\"day.isSelected\" [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>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: LocaleDatePipe, name: "adbLocaleDate" }] }); }
|
|
1459
1301
|
}
|
|
1460
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerComponent, decorators: [{
|
|
1461
1303
|
type: Component,
|
|
1462
1304
|
args: [{ selector: 'adb-date-picker', standalone: false, template: "<div class=\"position-relative\" [class.to-left]=\"toLeft\">\r\n <nav class=\"bg-white shadow rounded position-absolute\">\r\n <header class=\"bg-primary p-2 rounded-top d-flex justify-content-between align-items-center gap-1\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onPrev()\" [disabled]=\"noYearMode&¤tMonth===0\"><span class=\"fa fa-chevron-left\"></span></button>\r\n <ng-container *ngIf=\"!years&&!months\">\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowMonth();$event.stopPropagation()\">{{selectedDate|adbLocaleDate:'MMM'}}</button>\r\n <button *ngIf=\"!noYearMode\" tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n </ng-container>\r\n <button tabIndex=\"-1\" *ngIf=\"years\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"years=null;$event.stopPropagation()\">{{years[0].title}} - {{years[years.length-1].title}}</button>\r\n <button tabIndex=\"-1\" *ngIf=\"months\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onShowYear();$event.stopPropagation()\">{{selectedDate|date:'yyyy'}}</button>\r\n <button tabIndex=\"-1\" class=\"btn btn-primary text-white rounded-pill\" type=\"button\" (click)=\"onNext()\" [disabled]=\"noYearMode&¤tMonth===11\"><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 type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectYear(year.value);$event.stopPropagation()\" [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 type=\"button\" tabIndex=\"-1\" class=\"btn btn-sm btn-outline-secondary rounded-pill\" (click)=\"onSelectMonth(month.value);$event.stopPropagation()\" [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\" *ngIf=\"!years&&!months\">\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 tabIndex=\"-1\" class=\"btn rounded-circle p-0\" *ngFor=\"let day of week.days\" (click)=\"onSelectDate(day)\" type=\"button\" \r\n [class.border]=\"day.isToday\" [class.bg-primary]=\"day.isSelected\" [class.text-white]=\"day.isSelected\" [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>\r\n</div>\r\n" }]
|
|
1463
1305
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.TranslateService }], propDecorators: { initialDate: [{
|
|
@@ -1476,10 +1318,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1476
1318
|
}] } });
|
|
1477
1319
|
|
|
1478
1320
|
class AdbDatePickerService {
|
|
1479
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1480
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1321
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1322
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerService }); }
|
|
1481
1323
|
}
|
|
1482
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerService, decorators: [{
|
|
1483
1325
|
type: Injectable
|
|
1484
1326
|
}] });
|
|
1485
1327
|
|
|
@@ -1638,8 +1480,8 @@ class AdbDatePickerDirective {
|
|
|
1638
1480
|
getId() {
|
|
1639
1481
|
return '' + Math.floor(Math.random() * Date.now());
|
|
1640
1482
|
}
|
|
1641
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1642
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1483
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: AdbDatePickerService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1484
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: AdbDatePickerDirective, isStandalone: false, selector: "input[adbDatepicker]", inputs: { format: "format", toLeft: "toLeft", settings: "settings" }, outputs: { adbBlur: "adbBlur" }, host: { listeners: { "click": "onClick()", "keyup": "onKeyup($event)", "keydown.shift.tab": "onTabDown()", "keydown.tab": "onTabDown()", "keydown.esc": "onEscdOWN()", "document:click": "onCheckOutSideClick($event.target)" }, properties: { "autocomplete": "this.autocomplete" } }, providers: [{
|
|
1643
1485
|
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => AdbDatePickerDirective)),
|
|
1644
1486
|
multi: true
|
|
1645
1487
|
},
|
|
@@ -1649,7 +1491,7 @@ class AdbDatePickerDirective {
|
|
|
1649
1491
|
multi: true,
|
|
1650
1492
|
},], ngImport: i0 }); }
|
|
1651
1493
|
}
|
|
1652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerDirective, decorators: [{
|
|
1653
1495
|
type: Directive,
|
|
1654
1496
|
args: [{
|
|
1655
1497
|
selector: `input[adbDatepicker]`,
|
|
@@ -1696,11 +1538,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1696
1538
|
}] } });
|
|
1697
1539
|
|
|
1698
1540
|
class AdbDatePickerModule {
|
|
1699
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1700
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1701
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1541
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1542
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerModule, declarations: [AdbDatePickerComponent, AdbDatePickerDirective], imports: [CommonModule, i1$1.TranslateModule, AdbPipesModule, AdbDirectivesModule], exports: [AdbDatePickerComponent, AdbDatePickerDirective] }); }
|
|
1543
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerModule, providers: [AdbDatePickerService], imports: [CommonModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule] }); }
|
|
1702
1544
|
}
|
|
1703
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbDatePickerModule, decorators: [{
|
|
1704
1546
|
type: NgModule,
|
|
1705
1547
|
args: [{
|
|
1706
1548
|
imports: [CommonModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],
|
|
@@ -1746,10 +1588,10 @@ class AdbModalService {
|
|
|
1746
1588
|
this.domElem = componentRef.hostView.rootNodes[0];
|
|
1747
1589
|
document.body.appendChild(this.domElem);
|
|
1748
1590
|
}
|
|
1749
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1750
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1591
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.RendererFactory2 }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1592
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalService }); }
|
|
1751
1593
|
}
|
|
1752
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1594
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalService, decorators: [{
|
|
1753
1595
|
type: Injectable
|
|
1754
1596
|
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }, { type: i0.Injector }] });
|
|
1755
1597
|
|
|
@@ -1767,22 +1609,22 @@ class AdbConfirmModal {
|
|
|
1767
1609
|
onClose(confirm) {
|
|
1768
1610
|
this.modalRef.hide(confirm);
|
|
1769
1611
|
}
|
|
1770
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1771
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1612
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbConfirmModal, deps: [{ token: AdbModalService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1613
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbConfirmModal, isStandalone: false, selector: "ng-component", inputs: { model: "model" }, ngImport: i0, template: "@if (model) {\r\n <div class=\"modal fade show\" role=\"dialog\"\r\n attr.aria-labelledby=\"mod_header\"\r\n attr.aria-describedby=\"mod_desc\">\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h1 class=\"h-subsection mb-0 modal-title\" id=\"mod_header\">{{model.header|translate}}</h1>\r\n <button type=\"button\" class=\"btn-close\" id=\"modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"onClose(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div id=\"mod_desc\">{{model.text|translate}}</div>\r\n @if (model.value) {\r\n <div>\r\n <strong>{{model.value}}</strong>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"modal-footer\">\r\n <div class=\"d-flex gap-2 justify-content-end\">\r\n @if (model.showDecline) {\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onClose(false)\">{{model.decline|translate}}</button>\r\n }\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onClose(true)\">{{model.confirm|translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}", dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
1772
1614
|
}
|
|
1773
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1615
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbConfirmModal, decorators: [{
|
|
1774
1616
|
type: Component,
|
|
1775
|
-
args: [{ standalone: false, template: "<div class=\"modal fade show\"
|
|
1617
|
+
args: [{ standalone: false, template: "@if (model) {\r\n <div class=\"modal fade show\" role=\"dialog\"\r\n attr.aria-labelledby=\"mod_header\"\r\n attr.aria-describedby=\"mod_desc\">\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h1 class=\"h-subsection mb-0 modal-title\" id=\"mod_header\">{{model.header|translate}}</h1>\r\n <button type=\"button\" class=\"btn-close\" id=\"modal-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"onClose(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div id=\"mod_desc\">{{model.text|translate}}</div>\r\n @if (model.value) {\r\n <div>\r\n <strong>{{model.value}}</strong>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"modal-footer\">\r\n <div class=\"d-flex gap-2 justify-content-end\">\r\n @if (model.showDecline) {\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onClose(false)\">{{model.decline|translate}}</button>\r\n }\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onClose(true)\">{{model.confirm|translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}" }]
|
|
1776
1618
|
}], ctorParameters: () => [{ type: AdbModalService }, { type: i0.ElementRef }], propDecorators: { model: [{
|
|
1777
1619
|
type: Input
|
|
1778
1620
|
}] } });
|
|
1779
1621
|
|
|
1780
1622
|
class AdbModalModule {
|
|
1781
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1782
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1783
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1623
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1624
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbModalModule, declarations: [AdbConfirmModal], imports: [CommonModule, i1$1.TranslateModule, AdbDirectivesModule], exports: [AdbConfirmModal] }); }
|
|
1625
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalModule, providers: [AdbModalService], imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule] }); }
|
|
1784
1626
|
}
|
|
1785
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbModalModule, decorators: [{
|
|
1786
1628
|
type: NgModule,
|
|
1787
1629
|
args: [{
|
|
1788
1630
|
imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],
|
|
@@ -1828,10 +1670,10 @@ class AdbToastService {
|
|
|
1828
1670
|
this.container.prepend(element);
|
|
1829
1671
|
}
|
|
1830
1672
|
}
|
|
1831
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1832
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1673
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.RendererFactory2 }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1674
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastService }); }
|
|
1833
1675
|
}
|
|
1834
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastService, decorators: [{
|
|
1835
1677
|
type: Injectable
|
|
1836
1678
|
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: i0.ApplicationRef }, { type: i0.Injector }] });
|
|
1837
1679
|
var ToastType;
|
|
@@ -1853,20 +1695,20 @@ class AdbToast {
|
|
|
1853
1695
|
onRemoveToast(toast) {
|
|
1854
1696
|
this.toastService.remove(toast);
|
|
1855
1697
|
}
|
|
1856
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1857
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1698
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToast, deps: [{ token: AdbToastService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1699
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbToast, isStandalone: false, selector: "ng-component", ngImport: i0, template: "<div class=\"position-fixed bottom-0 end-0\" style=\"z-index: 50000;min-width: 15rem;\">\r\n @for (toast of toasts; track toast) {\r\n <div class=\"alert alert-dismissible\" role=\"alert\"\r\n [class.alert-primary]=\"toast.type===toastType.Primary\"\r\n [class.alert-success]=\"toast.type===toastType.Success\"\r\n [class.alert-warning]=\"toast.type===toastType.Warn\"\r\n [class.alert-danger]=\"toast.type===toastType.Danger\">\r\n @if (toast.header) {\r\n <div class=\"d-flex align-items-center justify-content-between pb-1\">\r\n @if (!toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{toast.header|translate}}</div>\r\n }\r\n @if (toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{(toast.header|translate:toast.headerValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-between mt-1\">\r\n @if (!toast.messageValue) {\r\n <div>{{toast.message|translate}}</div>\r\n }\r\n @if (toast.messageValue) {\r\n <div>{{(toast.message|translate:toast.messageValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
1858
1700
|
}
|
|
1859
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToast, decorators: [{
|
|
1860
1702
|
type: Component,
|
|
1861
|
-
args: [{ standalone: false, template: "<div class=\"position-fixed bottom-0 end-0\" style=\"z-index: 50000;min-width: 15rem;\">\r\n <div class=\"alert alert-dismissible\" role=\"alert\"
|
|
1703
|
+
args: [{ standalone: false, template: "<div class=\"position-fixed bottom-0 end-0\" style=\"z-index: 50000;min-width: 15rem;\">\r\n @for (toast of toasts; track toast) {\r\n <div class=\"alert alert-dismissible\" role=\"alert\"\r\n [class.alert-primary]=\"toast.type===toastType.Primary\"\r\n [class.alert-success]=\"toast.type===toastType.Success\"\r\n [class.alert-warning]=\"toast.type===toastType.Warn\"\r\n [class.alert-danger]=\"toast.type===toastType.Danger\">\r\n @if (toast.header) {\r\n <div class=\"d-flex align-items-center justify-content-between pb-1\">\r\n @if (!toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{toast.header|translate}}</div>\r\n }\r\n @if (toast.headerValue) {\r\n <div class=\"fw-bold pb-1\">{{(toast.header|translate:toast.headerValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-between mt-1\">\r\n @if (!toast.messageValue) {\r\n <div>{{toast.message|translate}}</div>\r\n }\r\n @if (toast.messageValue) {\r\n <div>{{(toast.message|translate:toast.messageValue )}}</div>\r\n }\r\n <button type=\"button\" class=\"btn-close\" (click)=\"onRemoveToast(toast)\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>" }]
|
|
1862
1704
|
}], ctorParameters: () => [{ type: AdbToastService }] });
|
|
1863
1705
|
|
|
1864
1706
|
class AdbToastModule {
|
|
1865
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1866
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1867
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1707
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1708
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbToastModule, declarations: [AdbToast], imports: [CommonModule, i1$1.TranslateModule, AdbDirectivesModule], exports: [AdbToast] }); }
|
|
1709
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastModule, providers: [AdbToastService], imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule] }); }
|
|
1868
1710
|
}
|
|
1869
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbToastModule, decorators: [{
|
|
1870
1712
|
type: NgModule,
|
|
1871
1713
|
args: [{
|
|
1872
1714
|
imports: [CommonModule, TranslateModule.forChild(), AdbDirectivesModule],
|
|
@@ -1907,12 +1749,12 @@ class AdbHelpButtonComponent {
|
|
|
1907
1749
|
}
|
|
1908
1750
|
this.showHelp = !this.showHelp;
|
|
1909
1751
|
}
|
|
1910
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1911
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1752
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbHelpButtonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1753
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbHelpButtonComponent, isStandalone: false, selector: "adb-help-button", inputs: { buttonClass: "buttonClass", iconClass: "iconClass", label: "label" }, host: { listeners: { "document:click": "onClickDoc($event)" } }, ngImport: i0, template: "<button type=\"button\"\r\n class=\"w-auto d-flex gap-1 align-items-baseline help-button\"\r\n [ngClass]=\"buttonClass\"\r\n [attr.aria-controls]=\"id\" aria-label=\"Help\"\r\n [attr.aria-expanded]=\"showHelp\" (click)=\"onClose()\">\r\n <span [ngClass]=\"iconClass\"></span>\r\n {{label}}\r\n</button>\r\n<div>\r\n @if (showHelp) {\r\n <div [id]=\"id\" class=\"position-absolute start-0 w-100 adb-plate-primary text-start shadow\" style=\"z-index:4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-grow-1\"><ng-content></ng-content></div>\r\n <div class=\"ms-auto align-self-start d-flex align-items-start\">\r\n <button type=\"button\" class=\"btn-close p-1\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"showHelp=false\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1912
1754
|
}
|
|
1913
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbHelpButtonComponent, decorators: [{
|
|
1914
1756
|
type: Component,
|
|
1915
|
-
args: [{ selector: 'adb-help-button', standalone: false, template: "<button type=\"button\"\r\n
|
|
1757
|
+
args: [{ selector: 'adb-help-button', standalone: false, template: "<button type=\"button\"\r\n class=\"w-auto d-flex gap-1 align-items-baseline help-button\"\r\n [ngClass]=\"buttonClass\"\r\n [attr.aria-controls]=\"id\" aria-label=\"Help\"\r\n [attr.aria-expanded]=\"showHelp\" (click)=\"onClose()\">\r\n <span [ngClass]=\"iconClass\"></span>\r\n {{label}}\r\n</button>\r\n<div>\r\n @if (showHelp) {\r\n <div [id]=\"id\" class=\"position-absolute start-0 w-100 adb-plate-primary text-start shadow\" style=\"z-index:4\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"flex-grow-1\"><ng-content></ng-content></div>\r\n <div class=\"ms-auto align-self-start d-flex align-items-start\">\r\n <button type=\"button\" class=\"btn-close p-1\" data-bs-dismiss=\"modal\" aria-label=\"Close\" (click)=\"showHelp=false\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>" }]
|
|
1916
1758
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { buttonClass: [{
|
|
1917
1759
|
type: Input
|
|
1918
1760
|
}], iconClass: [{
|
|
@@ -1925,11 +1767,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
1925
1767
|
}] } });
|
|
1926
1768
|
|
|
1927
1769
|
class AdbButtonsModule {
|
|
1928
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1929
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1930
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1770
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbButtonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1771
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbButtonsModule, declarations: [AdbHelpButtonComponent], imports: [CommonModule, AdbDirectivesModule], exports: [AdbHelpButtonComponent] }); }
|
|
1772
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbButtonsModule, imports: [CommonModule, AdbDirectivesModule] }); }
|
|
1931
1773
|
}
|
|
1932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1774
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbButtonsModule, decorators: [{
|
|
1933
1775
|
type: NgModule,
|
|
1934
1776
|
args: [{
|
|
1935
1777
|
imports: [CommonModule, AdbDirectivesModule],
|
|
@@ -2025,18 +1867,18 @@ class AdbRichEditorComponent {
|
|
|
2025
1867
|
}
|
|
2026
1868
|
ngOnDestroy() {
|
|
2027
1869
|
}
|
|
2028
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2029
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1870
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1871
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbRichEditorComponent, isStandalone: false, selector: "adb-rich-editor", inputs: { hasTaxon: "hasTaxon", hasReference: "hasReference", rows: "rows" }, providers: [{
|
|
2030
1872
|
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => AdbRichEditorComponent)),
|
|
2031
1873
|
multi: true
|
|
2032
|
-
}], ngImport: i0, template: "<div>\r\n
|
|
1874
|
+
}], ngImport: i0, template: "<div>\r\n <div class=\"d-flex justify-content-end gap-3 mb-1\">\r\n <button class=\"btn btn-secondary\" (click)=\"onItalicClick()\" title=\"Italic\" aria-label=\"Italic\" type=\"button\"><span class=\"fas fa-italic\"></span></button>\r\n <button class=\"btn btn-secondary\" (click)=\"onBoldClick()\" title=\"Italic\" aria-label=\"strong\" type=\"button\"><span class=\"fas fa-bold\"></span></button>\r\n @if (hasTaxon) {\r\n <button class=\"btn btn-secondary\" (click)=\"onTaxonClick()\" title=\"Taxon\" aria-label=\"Taxon\" type=\"button\"><span class=\"fas fa-bug\"></span></button>\r\n }\r\n @if (hasReference) {\r\n <button class=\"btn btn-secondary\" (click)=\"onReferenceClick()\" title=\"Reference\" aria-label=\"Reference\" type=\"button\"><span class=\"fas fa-asterisk\"></span></button>\r\n }\r\n </div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange()\" [rows]=\"rows\" (dblclick)=\"onDoubleClick()\"></textarea>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
2033
1875
|
}
|
|
2034
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1876
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorComponent, decorators: [{
|
|
2035
1877
|
type: Component,
|
|
2036
1878
|
args: [{ selector: 'adb-rich-editor', providers: [{
|
|
2037
1879
|
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => AdbRichEditorComponent)),
|
|
2038
1880
|
multi: true
|
|
2039
|
-
}], standalone: false, template: "<div>\r\n
|
|
1881
|
+
}], standalone: false, template: "<div>\r\n <div class=\"d-flex justify-content-end gap-3 mb-1\">\r\n <button class=\"btn btn-secondary\" (click)=\"onItalicClick()\" title=\"Italic\" aria-label=\"Italic\" type=\"button\"><span class=\"fas fa-italic\"></span></button>\r\n <button class=\"btn btn-secondary\" (click)=\"onBoldClick()\" title=\"Italic\" aria-label=\"strong\" type=\"button\"><span class=\"fas fa-bold\"></span></button>\r\n @if (hasTaxon) {\r\n <button class=\"btn btn-secondary\" (click)=\"onTaxonClick()\" title=\"Taxon\" aria-label=\"Taxon\" type=\"button\"><span class=\"fas fa-bug\"></span></button>\r\n }\r\n @if (hasReference) {\r\n <button class=\"btn btn-secondary\" (click)=\"onReferenceClick()\" title=\"Reference\" aria-label=\"Reference\" type=\"button\"><span class=\"fas fa-asterisk\"></span></button>\r\n }\r\n </div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange()\" [rows]=\"rows\" (dblclick)=\"onDoubleClick()\"></textarea>\r\n</div>\r\n" }]
|
|
2040
1882
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { hasTaxon: [{
|
|
2041
1883
|
type: Input
|
|
2042
1884
|
}], hasReference: [{
|
|
@@ -2095,12 +1937,12 @@ class RichTextComponent {
|
|
|
2095
1937
|
}
|
|
2096
1938
|
return parts;
|
|
2097
1939
|
}
|
|
2098
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2099
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1940
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RichTextComponent, deps: [{ token: RICH_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1941
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: RichTextComponent, isStandalone: false, selector: "adb-rich-text", inputs: { text: "text" }, usesOnChanges: true, ngImport: i0, template: "<div style=\"white-space: pre-wrap;\">\r\n @for (part of parts; track part) {\r\n @if (part.type === 'text') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'italic') {\r\n <em>{{ part.content }}</em>\r\n }\r\n @if (part.type === 'bold') {\r\n <b>{{ part.content }}</b>\r\n }\r\n @if (part.type === 'taxon') {\r\n <a [href]=\"taxonUrl + part.id\">{{ part.content }}</a>\r\n }\r\n @if (part.type === 'term') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'reference') {\r\n <span>{{ part.content }}</span>\r\n }\r\n }\r\n</div>\r\n" }); }
|
|
2100
1942
|
}
|
|
2101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1943
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: RichTextComponent, decorators: [{
|
|
2102
1944
|
type: Component,
|
|
2103
|
-
args: [{ selector: 'adb-rich-text', standalone: false, template: "<div style=\"white-space: pre-wrap;\">\r\n
|
|
1945
|
+
args: [{ selector: 'adb-rich-text', standalone: false, template: "<div style=\"white-space: pre-wrap;\">\r\n @for (part of parts; track part) {\r\n @if (part.type === 'text') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'italic') {\r\n <em>{{ part.content }}</em>\r\n }\r\n @if (part.type === 'bold') {\r\n <b>{{ part.content }}</b>\r\n }\r\n @if (part.type === 'taxon') {\r\n <a [href]=\"taxonUrl + part.id\">{{ part.content }}</a>\r\n }\r\n @if (part.type === 'term') {\r\n <span>{{ part.content }}</span>\r\n }\r\n @if (part.type === 'reference') {\r\n <span>{{ part.content }}</span>\r\n }\r\n }\r\n</div>\r\n" }]
|
|
2104
1946
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2105
1947
|
type: Inject,
|
|
2106
1948
|
args: [RICH_MODULE_CONFIG]
|
|
@@ -2117,11 +1959,11 @@ class AdbRichEditorModule {
|
|
|
2117
1959
|
]
|
|
2118
1960
|
};
|
|
2119
1961
|
}
|
|
2120
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2121
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2122
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1962
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1963
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorModule, declarations: [AdbRichEditorComponent, RichTextComponent], imports: [CommonModule, FormsModule], exports: [AdbRichEditorComponent, RichTextComponent] }); }
|
|
1964
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorModule, imports: [CommonModule, FormsModule] }); }
|
|
2123
1965
|
}
|
|
2124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1966
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbRichEditorModule, decorators: [{
|
|
2125
1967
|
type: NgModule,
|
|
2126
1968
|
args: [{
|
|
2127
1969
|
imports: [CommonModule, FormsModule],
|
|
@@ -2134,18 +1976,19 @@ class FilterSectionComponent {
|
|
|
2134
1976
|
constructor() {
|
|
2135
1977
|
this.titleResource = 'Not set';
|
|
2136
1978
|
this.helpResource = null;
|
|
1979
|
+
this.lazy = false;
|
|
2137
1980
|
}
|
|
2138
1981
|
ngOnInit() {
|
|
2139
1982
|
this.id = +Math.floor(Math.random() * Date.now());
|
|
2140
1983
|
}
|
|
2141
1984
|
ngOnDestroy() {
|
|
2142
1985
|
}
|
|
2143
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2144
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1986
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FilterSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1987
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: FilterSectionComponent, isStandalone: false, selector: "adb-filter-section", inputs: { titleResource: "titleResource", helpResource: "helpResource", count: "count", expanded: "expanded", lazy: "lazy" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<button [attr.aria-expanded]=\"expanded\" [attr.aria-controls]=\"id\" class=\"btn btn-invisible px-1 bg-white\" type=\"button\" (click)=\"expanded = !expanded\">\r\n <div class=\"d-flex align-items-center gap-1 flex-wrap \">\r\n <div class=\"d-flex align-items-center\">\r\n <i class=\"fas fa-fw\" [ngClass]=\"expanded?'fa-chevron-down':'fa-chevron-right'\"></i>\r\n {{titleResource|translate}}\r\n </div>\r\n @if(helpResource){\r\n <adb-help-button (click)=\"$event.stopPropagation()\">{{helpResource|translate}}</adb-help-button>\r\n }\r\n @if(count > 0){\r\n <div class=\"ms-auto badge bg-dark\">{{count}}</div>\r\n }\r\n </div>\r\n</button>\r\n@if (expanded) {\r\n<div class=\"px-3 pb-3 border-bottom\" [id]=\"id\">\r\n @if (lazy && template) {\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n</div>\r\n}", dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AdbHelpButtonComponent, selector: "adb-help-button", inputs: ["buttonClass", "iconClass", "label"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
2145
1988
|
}
|
|
2146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1989
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: FilterSectionComponent, decorators: [{
|
|
2147
1990
|
type: Component,
|
|
2148
|
-
args: [{ selector: 'adb-filter-section', standalone: false, template: "<button [attr.aria-expanded]=\"expanded\" [attr.aria-controls]=\"id\" class=\"btn btn-invisible px-1 bg-white\" type=\"button\" (click)=\"expanded = !expanded\">\r\n <div class=\"d-flex align-items-center gap-1 flex-wrap \">\r\n <div class=\"d-flex align-items-center\">\r\n <i class=\"fas fa-fw\" [ngClass]=\"expanded?'fa-chevron-down':'fa-chevron-right'\"></i>\r\n {{titleResource|translate}}\r\n </div>\r\n @if(helpResource){\r\n <adb-help-button (click)=\"$event.stopPropagation()\">{{helpResource|translate}}</adb-help-button>\r\n }\r\n @if(count > 0){\r\n <div class=\"ms-auto badge bg-dark\">{{count}}</div>\r\n }\r\n </div>\r\n</button>\r\n@if(expanded){\r\n<div class=\"px-3 pb-3 border-bottom\" [id]=\"id\">\r\n <ng-content></ng-content>\r\n</div>\r\n}" }]
|
|
1991
|
+
args: [{ selector: 'adb-filter-section', standalone: false, template: "<button [attr.aria-expanded]=\"expanded\" [attr.aria-controls]=\"id\" class=\"btn btn-invisible px-1 bg-white\" type=\"button\" (click)=\"expanded = !expanded\">\r\n <div class=\"d-flex align-items-center gap-1 flex-wrap \">\r\n <div class=\"d-flex align-items-center\">\r\n <i class=\"fas fa-fw\" [ngClass]=\"expanded?'fa-chevron-down':'fa-chevron-right'\"></i>\r\n {{titleResource|translate}}\r\n </div>\r\n @if(helpResource){\r\n <adb-help-button (click)=\"$event.stopPropagation()\">{{helpResource|translate}}</adb-help-button>\r\n }\r\n @if(count > 0){\r\n <div class=\"ms-auto badge bg-dark\">{{count}}</div>\r\n }\r\n </div>\r\n</button>\r\n@if (expanded) {\r\n<div class=\"px-3 pb-3 border-bottom\" [id]=\"id\">\r\n @if (lazy && template) {\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n</div>\r\n}" }]
|
|
2149
1992
|
}], propDecorators: { titleResource: [{
|
|
2150
1993
|
type: Input
|
|
2151
1994
|
}], helpResource: [{
|
|
@@ -2154,14 +1997,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2154
1997
|
type: Input
|
|
2155
1998
|
}], expanded: [{
|
|
2156
1999
|
type: Input
|
|
2000
|
+
}], lazy: [{
|
|
2001
|
+
type: Input
|
|
2002
|
+
}], template: [{
|
|
2003
|
+
type: ContentChild,
|
|
2004
|
+
args: [TemplateRef]
|
|
2157
2005
|
}] } });
|
|
2158
2006
|
|
|
2159
2007
|
class AdbFilterSectionModule {
|
|
2160
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2161
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2162
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
2008
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbFilterSectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2009
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbFilterSectionModule, declarations: [FilterSectionComponent], imports: [CommonModule, FormsModule, TranslateModule, AdbButtonsModule], exports: [FilterSectionComponent, AdbButtonsModule] }); }
|
|
2010
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbFilterSectionModule, imports: [CommonModule, FormsModule, TranslateModule, AdbButtonsModule, AdbButtonsModule] }); }
|
|
2163
2011
|
}
|
|
2164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbFilterSectionModule, decorators: [{
|
|
2165
2013
|
type: NgModule,
|
|
2166
2014
|
args: [{
|
|
2167
2015
|
imports: [CommonModule, FormsModule, TranslateModule, AdbButtonsModule],
|
|
@@ -2384,10 +2232,10 @@ class AdbUserService {
|
|
|
2384
2232
|
ngOnDestroy() {
|
|
2385
2233
|
this.subscriptions.unsubscribe();
|
|
2386
2234
|
}
|
|
2387
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2388
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2235
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserService, deps: [{ token: ADB_USER_SERVICE_CONFIG }, { token: i1$2.HttpClient }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2236
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserService }); }
|
|
2389
2237
|
}
|
|
2390
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserService, decorators: [{
|
|
2391
2239
|
type: Injectable
|
|
2392
2240
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2393
2241
|
type: Inject,
|
|
@@ -2433,10 +2281,10 @@ class AuthCallbackComponent {
|
|
|
2433
2281
|
}
|
|
2434
2282
|
}));
|
|
2435
2283
|
}
|
|
2436
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2437
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2284
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AuthCallbackComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i1$2.HttpClient }, { token: AdbUserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2285
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AuthCallbackComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: '<div class="loading-dead-spinner"></div>', isInline: true }); }
|
|
2438
2286
|
}
|
|
2439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AuthCallbackComponent, decorators: [{
|
|
2440
2288
|
type: Component,
|
|
2441
2289
|
args: [{
|
|
2442
2290
|
template: '<div class="loading-dead-spinner"></div>',
|
|
@@ -2478,10 +2326,10 @@ class AdbUserInterceptor {
|
|
|
2478
2326
|
}
|
|
2479
2327
|
return throwError(() => error);
|
|
2480
2328
|
}
|
|
2481
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2482
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
2329
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserInterceptor, deps: [{ token: AdbUserService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2330
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserInterceptor }); }
|
|
2483
2331
|
}
|
|
2484
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2332
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserInterceptor, decorators: [{
|
|
2485
2333
|
type: Injectable
|
|
2486
2334
|
}], ctorParameters: () => [{ type: AdbUserService }] });
|
|
2487
2335
|
|
|
@@ -2504,9 +2352,9 @@ class AdbUserModule {
|
|
|
2504
2352
|
],
|
|
2505
2353
|
};
|
|
2506
2354
|
}
|
|
2507
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2508
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2509
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
2355
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2356
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbUserModule, declarations: [AuthCallbackComponent], imports: [CommonModule, i1.RouterModule, i1$1.TranslateModule], exports: [AuthCallbackComponent] }); }
|
|
2357
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserModule, providers: [
|
|
2510
2358
|
AdbUserService,
|
|
2511
2359
|
{
|
|
2512
2360
|
provide: HTTP_INTERCEPTORS,
|
|
@@ -2515,7 +2363,7 @@ class AdbUserModule {
|
|
|
2515
2363
|
}
|
|
2516
2364
|
], imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()] }); }
|
|
2517
2365
|
}
|
|
2518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2366
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbUserModule, decorators: [{
|
|
2519
2367
|
type: NgModule,
|
|
2520
2368
|
args: [{
|
|
2521
2369
|
imports: [CommonModule, RouterModule.forChild(routes), TranslateModule.forChild()],
|
|
@@ -2532,6 +2380,1243 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2532
2380
|
}]
|
|
2533
2381
|
}] });
|
|
2534
2382
|
|
|
2383
|
+
class GenericPickerComponent {
|
|
2384
|
+
constructor() {
|
|
2385
|
+
this.subs = new Subscription();
|
|
2386
|
+
this.searchChanged$ = new BehaviorSubject('');
|
|
2387
|
+
this.disabled = false;
|
|
2388
|
+
this.placeholder = '';
|
|
2389
|
+
this.selectItemChange = new EventEmitter();
|
|
2390
|
+
this.focus = new EventEmitter();
|
|
2391
|
+
this.searchQuery = '';
|
|
2392
|
+
this.loading = false;
|
|
2393
|
+
this.error = null;
|
|
2394
|
+
this.items$ = of([]);
|
|
2395
|
+
this.itemsSnapshot = [];
|
|
2396
|
+
this.showPop = false;
|
|
2397
|
+
this.rowIndex = -1;
|
|
2398
|
+
}
|
|
2399
|
+
set initialValue(item) {
|
|
2400
|
+
if (item) {
|
|
2401
|
+
this.searchQuery = this.displayFn(item);
|
|
2402
|
+
}
|
|
2403
|
+
else {
|
|
2404
|
+
this.searchQuery = '';
|
|
2405
|
+
}
|
|
2406
|
+
}
|
|
2407
|
+
ngOnInit() {
|
|
2408
|
+
this.items$ = this.searchChanged$.pipe(debounceTime(300), switchMap(query => {
|
|
2409
|
+
if (!query) {
|
|
2410
|
+
this.showPop = false;
|
|
2411
|
+
this.itemsSnapshot = [];
|
|
2412
|
+
this.loading = false;
|
|
2413
|
+
return of([]);
|
|
2414
|
+
}
|
|
2415
|
+
this.loading = true;
|
|
2416
|
+
this.showPop = true;
|
|
2417
|
+
return this.search(query).pipe(map(result => {
|
|
2418
|
+
this.loading = false;
|
|
2419
|
+
const items = result?.records?.length
|
|
2420
|
+
? result.records
|
|
2421
|
+
: result?.items ?? [];
|
|
2422
|
+
this.itemsSnapshot = items;
|
|
2423
|
+
return items;
|
|
2424
|
+
}), catchError$1(err => {
|
|
2425
|
+
this.loading = false;
|
|
2426
|
+
this.error = err;
|
|
2427
|
+
this.itemsSnapshot = [];
|
|
2428
|
+
return of([]);
|
|
2429
|
+
}));
|
|
2430
|
+
}));
|
|
2431
|
+
}
|
|
2432
|
+
onModelChange() {
|
|
2433
|
+
this.rowIndex = -1;
|
|
2434
|
+
this.loading = true;
|
|
2435
|
+
this.showPop = true;
|
|
2436
|
+
this.searchChanged$.next(this.searchQuery);
|
|
2437
|
+
}
|
|
2438
|
+
onArrowDown() {
|
|
2439
|
+
if (!this.itemsSnapshot.length)
|
|
2440
|
+
return;
|
|
2441
|
+
this.rowIndex = (this.rowIndex + 1) % this.itemsSnapshot.length;
|
|
2442
|
+
}
|
|
2443
|
+
onArrowUp() {
|
|
2444
|
+
if (!this.itemsSnapshot.length)
|
|
2445
|
+
return;
|
|
2446
|
+
this.rowIndex = (this.rowIndex - 1 + this.itemsSnapshot.length) % this.itemsSnapshot.length;
|
|
2447
|
+
}
|
|
2448
|
+
onEnter(event) {
|
|
2449
|
+
if (this.rowIndex < 0)
|
|
2450
|
+
return;
|
|
2451
|
+
event.preventDefault();
|
|
2452
|
+
event.stopPropagation();
|
|
2453
|
+
this.selectItem(this.itemsSnapshot[this.rowIndex]);
|
|
2454
|
+
}
|
|
2455
|
+
resetPopup() {
|
|
2456
|
+
this.showPop = false;
|
|
2457
|
+
this.itemsSnapshot = [];
|
|
2458
|
+
this.rowIndex = -1;
|
|
2459
|
+
}
|
|
2460
|
+
selectItem(item) {
|
|
2461
|
+
this.searchQuery = item ? this.displayFn(item) : '';
|
|
2462
|
+
this.selectItemChange.emit(item);
|
|
2463
|
+
this.resetPopup();
|
|
2464
|
+
}
|
|
2465
|
+
resetModel() {
|
|
2466
|
+
this.selectItem(null);
|
|
2467
|
+
}
|
|
2468
|
+
ngOnDestroy() {
|
|
2469
|
+
this.subs.unsubscribe();
|
|
2470
|
+
}
|
|
2471
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: GenericPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2472
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: GenericPickerComponent, isStandalone: false, selector: "adb-generic-picker", inputs: { search: "search", displayFn: "displayFn", loadById: "loadById", disabled: "disabled", placeholder: "placeholder", initialValue: "initialValue" }, outputs: { selectItemChange: "selectItemChange", focus: "focus" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], ngImport: i0, template: "<div (adbClickOutside)=\"resetPopup()\">\r\n <div class=\"input-group\">\r\n <input [(ngModel)]=\"searchQuery\" class=\"form-control\" role=\"combobox\" aria-autocomplete=\"list\" [attr.aria-expanded]=\"showPop\" aria-controls=\"picker-listbox\" [disabled]=\"disabled\" autocomplete=\"off\" (keyup.arrowdown)=\"onArrowDown()\"\r\n (keyup.arrowup)=\"onArrowUp()\" (keydown.enter)=\"onEnter($event)\" (keydown.escape)=\"resetPopup()\" (keydown.tab)=\"resetPopup()\" (ngModelChange)=\"onModelChange()\" (focus)=\"focus.emit($event)\" [placeholder]=\"placeholder\" />\r\n @if (searchQuery && !showPop) {\r\n <div>\r\n <button type=\"button\" (click)=\"resetModel()\" class=\"btn btn-secondary border border-start-0\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@let items = items$ | async;\r\n@if (showPop) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div [class.loading]=\"loading\">\r\n @if (error) {\r\n <div class=\"alert alert-danger mb-0\">\r\n Serverfel\r\n </div>\r\n }\r\n @else {\r\n <ul class=\"list-group list-group-flush\" role=\"listbox\" id=\"picker-listbox\">\r\n @for (item of items; track item; let i = $index) {\r\n <li role=\"option\" class=\"list-group-item list-group-item-action pointer\" [class.active]=\"i === rowIndex\" (click)=\"$event.preventDefault(); $event.stopPropagation(); selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, searchQuery: searchQuery }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}", dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }] }); }
|
|
2473
|
+
}
|
|
2474
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: GenericPickerComponent, decorators: [{
|
|
2475
|
+
type: Component,
|
|
2476
|
+
args: [{ selector: 'adb-generic-picker', standalone: false, template: "<div (adbClickOutside)=\"resetPopup()\">\r\n <div class=\"input-group\">\r\n <input [(ngModel)]=\"searchQuery\" class=\"form-control\" role=\"combobox\" aria-autocomplete=\"list\" [attr.aria-expanded]=\"showPop\" aria-controls=\"picker-listbox\" [disabled]=\"disabled\" autocomplete=\"off\" (keyup.arrowdown)=\"onArrowDown()\"\r\n (keyup.arrowup)=\"onArrowUp()\" (keydown.enter)=\"onEnter($event)\" (keydown.escape)=\"resetPopup()\" (keydown.tab)=\"resetPopup()\" (ngModelChange)=\"onModelChange()\" (focus)=\"focus.emit($event)\" [placeholder]=\"placeholder\" />\r\n @if (searchQuery && !showPop) {\r\n <div>\r\n <button type=\"button\" (click)=\"resetModel()\" class=\"btn btn-secondary border border-start-0\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@let items = items$ | async;\r\n@if (showPop) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div [class.loading]=\"loading\">\r\n @if (error) {\r\n <div class=\"alert alert-danger mb-0\">\r\n Serverfel\r\n </div>\r\n }\r\n @else {\r\n <ul class=\"list-group list-group-flush\" role=\"listbox\" id=\"picker-listbox\">\r\n @for (item of items; track item; let i = $index) {\r\n <li role=\"option\" class=\"list-group-item list-group-item-action pointer\" [class.active]=\"i === rowIndex\" (click)=\"$event.preventDefault(); $event.stopPropagation(); selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, searchQuery: searchQuery }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}" }]
|
|
2477
|
+
}], propDecorators: { search: [{
|
|
2478
|
+
type: Input
|
|
2479
|
+
}], displayFn: [{
|
|
2480
|
+
type: Input
|
|
2481
|
+
}], loadById: [{
|
|
2482
|
+
type: Input
|
|
2483
|
+
}], disabled: [{
|
|
2484
|
+
type: Input
|
|
2485
|
+
}], placeholder: [{
|
|
2486
|
+
type: Input
|
|
2487
|
+
}], itemTemplate: [{
|
|
2488
|
+
type: ContentChild,
|
|
2489
|
+
args: ['itemTemplate']
|
|
2490
|
+
}], selectItemChange: [{
|
|
2491
|
+
type: Output
|
|
2492
|
+
}], focus: [{
|
|
2493
|
+
type: Output
|
|
2494
|
+
}], initialValue: [{
|
|
2495
|
+
type: Input
|
|
2496
|
+
}] } });
|
|
2497
|
+
|
|
2498
|
+
const ADB_PICKER_CONFIG = new InjectionToken('ADB_PICKER_CONFIG');
|
|
2499
|
+
class AdbPickerConfigService {
|
|
2500
|
+
constructor(config) {
|
|
2501
|
+
this.areas = config.api + '/areas';
|
|
2502
|
+
this.taxa = config.api + '/taxalookup';
|
|
2503
|
+
}
|
|
2504
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerConfigService, deps: [{ token: ADB_PICKER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2505
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerConfigService }); }
|
|
2506
|
+
}
|
|
2507
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerConfigService, decorators: [{
|
|
2508
|
+
type: Injectable
|
|
2509
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2510
|
+
type: Inject,
|
|
2511
|
+
args: [ADB_PICKER_CONFIG]
|
|
2512
|
+
}] }] });
|
|
2513
|
+
|
|
2514
|
+
class AdbTaxonPickerComponent {
|
|
2515
|
+
constructor(config, http) {
|
|
2516
|
+
this.config = config;
|
|
2517
|
+
this.http = http;
|
|
2518
|
+
this.fullWidth = true;
|
|
2519
|
+
this.placeholder = 'Sök taxon';
|
|
2520
|
+
this.useObject = false;
|
|
2521
|
+
this.prefill = false;
|
|
2522
|
+
this.initialValue = null;
|
|
2523
|
+
this.isDisabled = false;
|
|
2524
|
+
this.loading = false;
|
|
2525
|
+
this.showPrefill = false;
|
|
2526
|
+
this.onChange = () => { };
|
|
2527
|
+
this.onTouched = () => { };
|
|
2528
|
+
this.getTaxa = (query) => {
|
|
2529
|
+
this.loading = true;
|
|
2530
|
+
const params = { search: query };
|
|
2531
|
+
return this.http.get(this.config.taxa, { params }).pipe(map$1(result => Array.isArray(result) ? { items: result } : result), tap(() => this.loading = false), catchError(() => {
|
|
2532
|
+
this.loading = false;
|
|
2533
|
+
return of({ items: [] });
|
|
2534
|
+
}));
|
|
2535
|
+
};
|
|
2536
|
+
this.displayTaxon = (taxon) => {
|
|
2537
|
+
if (!taxon)
|
|
2538
|
+
return '';
|
|
2539
|
+
if (taxon.swedishName && taxon.scientificName) {
|
|
2540
|
+
return `${taxon.swedishName} ${taxon.scientificName}`;
|
|
2541
|
+
}
|
|
2542
|
+
return taxon.scientificName ?? '';
|
|
2543
|
+
};
|
|
2544
|
+
}
|
|
2545
|
+
loadTaxonById(id) {
|
|
2546
|
+
if (!id)
|
|
2547
|
+
return of(null);
|
|
2548
|
+
this.loading = true;
|
|
2549
|
+
return this.http.get(`${this.config.taxa}/${id}`).pipe(tap(() => this.loading = false), catchError(() => {
|
|
2550
|
+
this.loading = false;
|
|
2551
|
+
return of(null);
|
|
2552
|
+
}));
|
|
2553
|
+
}
|
|
2554
|
+
onSelect(taxon) {
|
|
2555
|
+
const value = this.useObject ? taxon : taxon?.id ?? null;
|
|
2556
|
+
this.onChange(value);
|
|
2557
|
+
}
|
|
2558
|
+
onFocus() {
|
|
2559
|
+
this.showPrefill = true;
|
|
2560
|
+
}
|
|
2561
|
+
writeValue(value) {
|
|
2562
|
+
if (!value) {
|
|
2563
|
+
this.initialValue = null;
|
|
2564
|
+
return;
|
|
2565
|
+
}
|
|
2566
|
+
if (this.useObject) {
|
|
2567
|
+
if (value.id) {
|
|
2568
|
+
this.loadTaxonById(value.id).subscribe(taxon => {
|
|
2569
|
+
this.initialValue = taxon;
|
|
2570
|
+
});
|
|
2571
|
+
}
|
|
2572
|
+
else {
|
|
2573
|
+
this.initialValue = value;
|
|
2574
|
+
}
|
|
2575
|
+
}
|
|
2576
|
+
else {
|
|
2577
|
+
this.loadTaxonById(value).subscribe(taxon => {
|
|
2578
|
+
this.initialValue = taxon;
|
|
2579
|
+
});
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
registerOnChange(fn) {
|
|
2583
|
+
this.onChange = fn;
|
|
2584
|
+
}
|
|
2585
|
+
registerOnTouched(fn) {
|
|
2586
|
+
this.onTouched = fn;
|
|
2587
|
+
}
|
|
2588
|
+
setDisabledState(isDisabled) {
|
|
2589
|
+
this.isDisabled = isDisabled;
|
|
2590
|
+
}
|
|
2591
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbTaxonPickerComponent, deps: [{ token: AdbPickerConfigService }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2592
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbTaxonPickerComponent, isStandalone: false, selector: "adb-taxon-picker", inputs: { placeholder: "placeholder", useObject: "useObject", prefill: "prefill" }, host: { properties: { "class.w-100": "this.fullWidth" } }, providers: [
|
|
2593
|
+
{
|
|
2594
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2595
|
+
useExisting: forwardRef((() => AdbTaxonPickerComponent)),
|
|
2596
|
+
multi: true
|
|
2597
|
+
}
|
|
2598
|
+
], ngImport: i0, template: "<adb-generic-picker [search]=\"getTaxa\" [displayFn]=\"displayTaxon\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-taxon let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{taxon.swedishName | adbHighlight: searchQuery}}\"></div>\r\n <em innerHTML=\"{{taxon.scientificName | adbHighlight: searchQuery}}\"></em>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}", dependencies: [{ kind: "component", type: GenericPickerComponent, selector: "adb-generic-picker", inputs: ["search", "displayFn", "loadById", "disabled", "placeholder", "initialValue"], outputs: ["selectItemChange", "focus"] }, { kind: "pipe", type: HighlightPipe, name: "adbHighlight" }] }); }
|
|
2599
|
+
}
|
|
2600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbTaxonPickerComponent, decorators: [{
|
|
2601
|
+
type: Component,
|
|
2602
|
+
args: [{ selector: 'adb-taxon-picker', standalone: false, providers: [
|
|
2603
|
+
{
|
|
2604
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2605
|
+
useExisting: forwardRef((() => AdbTaxonPickerComponent)),
|
|
2606
|
+
multi: true
|
|
2607
|
+
}
|
|
2608
|
+
], template: "<adb-generic-picker [search]=\"getTaxa\" [displayFn]=\"displayTaxon\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-taxon let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{taxon.swedishName | adbHighlight: searchQuery}}\"></div>\r\n <em innerHTML=\"{{taxon.scientificName | adbHighlight: searchQuery}}\"></em>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}" }]
|
|
2609
|
+
}], ctorParameters: () => [{ type: AdbPickerConfigService }, { type: i1$2.HttpClient }], propDecorators: { fullWidth: [{
|
|
2610
|
+
type: HostBinding,
|
|
2611
|
+
args: ['class.w-100']
|
|
2612
|
+
}], placeholder: [{
|
|
2613
|
+
type: Input
|
|
2614
|
+
}], useObject: [{
|
|
2615
|
+
type: Input
|
|
2616
|
+
}], prefill: [{
|
|
2617
|
+
type: Input
|
|
2618
|
+
}] } });
|
|
2619
|
+
|
|
2620
|
+
class AdbAreaPickerComponent {
|
|
2621
|
+
constructor(translate, config, http) {
|
|
2622
|
+
this.translate = translate;
|
|
2623
|
+
this.config = config;
|
|
2624
|
+
this.http = http;
|
|
2625
|
+
this.fullWidth = true;
|
|
2626
|
+
this.placeholder = 'Sök område';
|
|
2627
|
+
this.useObject = false;
|
|
2628
|
+
this.prefill = false;
|
|
2629
|
+
this.initialValue = null;
|
|
2630
|
+
this.isDisabled = false;
|
|
2631
|
+
this.loading = false;
|
|
2632
|
+
this.showPrefill = false;
|
|
2633
|
+
this.onChange = () => { };
|
|
2634
|
+
this.onTouched = () => { };
|
|
2635
|
+
this.getAreas = (query) => {
|
|
2636
|
+
this.showPrefill = false;
|
|
2637
|
+
const params = { search: query, skip: 0, take: 10 };
|
|
2638
|
+
return this.http.get(this.config.areas, { params: params });
|
|
2639
|
+
};
|
|
2640
|
+
this.displayArea = (area) => {
|
|
2641
|
+
if (!area || Object.keys(area).length === 0) {
|
|
2642
|
+
return '';
|
|
2643
|
+
}
|
|
2644
|
+
return area ? `${area.name} ${this.translate.instant('AREATYPES.' + area.areaType)}` : '';
|
|
2645
|
+
};
|
|
2646
|
+
this.loadAreaId = (id) => {
|
|
2647
|
+
this.loading = true;
|
|
2648
|
+
const url = `${this.config.areas}/${id}`;
|
|
2649
|
+
return this.http.get(url).pipe(tap(() => this.loading = false));
|
|
2650
|
+
};
|
|
2651
|
+
}
|
|
2652
|
+
onSelect(area) {
|
|
2653
|
+
const value = this.useObject ? area : area?.id ?? null;
|
|
2654
|
+
this.onChange(value);
|
|
2655
|
+
}
|
|
2656
|
+
onFocus() {
|
|
2657
|
+
this.showPrefill = true;
|
|
2658
|
+
}
|
|
2659
|
+
writeValue(value) {
|
|
2660
|
+
if (!value) {
|
|
2661
|
+
this.initialValue = null;
|
|
2662
|
+
return;
|
|
2663
|
+
}
|
|
2664
|
+
if (this.useObject) {
|
|
2665
|
+
if (value.id) {
|
|
2666
|
+
this.loadAreaId(value.id).subscribe(area => {
|
|
2667
|
+
this.initialValue = area;
|
|
2668
|
+
});
|
|
2669
|
+
}
|
|
2670
|
+
else {
|
|
2671
|
+
this.initialValue = value;
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
else {
|
|
2675
|
+
this.loadAreaId(value).subscribe(area => {
|
|
2676
|
+
this.initialValue = area;
|
|
2677
|
+
});
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
registerOnChange(fn) {
|
|
2681
|
+
this.onChange = fn;
|
|
2682
|
+
}
|
|
2683
|
+
registerOnTouched(fn) {
|
|
2684
|
+
this.onTouched = fn;
|
|
2685
|
+
}
|
|
2686
|
+
setDisabledState(isDisabled) {
|
|
2687
|
+
this.isDisabled = isDisabled;
|
|
2688
|
+
}
|
|
2689
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbAreaPickerComponent, deps: [{ token: i1$1.TranslateService }, { token: AdbPickerConfigService }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2690
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbAreaPickerComponent, isStandalone: false, selector: "adb-area-picker", inputs: { placeholder: "placeholder", useObject: "useObject", prefill: "prefill" }, host: { properties: { "class.w-100": "this.fullWidth" } }, providers: [
|
|
2691
|
+
{
|
|
2692
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2693
|
+
useExisting: forwardRef((() => AdbAreaPickerComponent)),
|
|
2694
|
+
multi: true
|
|
2695
|
+
}
|
|
2696
|
+
], ngImport: i0, template: "<adb-generic-picker [search]=\"getAreas\" [displayFn]=\"displayArea\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-area let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{area.name|adbHighlight: searchQuery}}\"></div>\r\n <div>{{'AREATYPES.'+area.areaType|translate}}</div>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}", dependencies: [{ kind: "component", type: GenericPickerComponent, selector: "adb-generic-picker", inputs: ["search", "displayFn", "loadById", "disabled", "placeholder", "initialValue"], outputs: ["selectItemChange", "focus"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: HighlightPipe, name: "adbHighlight" }] }); }
|
|
2697
|
+
}
|
|
2698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbAreaPickerComponent, decorators: [{
|
|
2699
|
+
type: Component,
|
|
2700
|
+
args: [{ selector: 'adb-area-picker', standalone: false, providers: [
|
|
2701
|
+
{
|
|
2702
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2703
|
+
useExisting: forwardRef((() => AdbAreaPickerComponent)),
|
|
2704
|
+
multi: true
|
|
2705
|
+
}
|
|
2706
|
+
], template: "<adb-generic-picker [search]=\"getAreas\" [displayFn]=\"displayArea\" [placeholder]=\"placeholder\" [disabled]=\"isDisabled\" [initialValue]=\"initialValue\" (selectItemChange)=\"onSelect($event)\" (focus)=\"onFocus()\">\r\n <ng-template #itemTemplate let-area let-searchQuery=\"searchQuery\">\r\n <div class=\"d-flex flex-wrap gap-1 align-items-center\">\r\n <div innerHTML=\"{{area.name|adbHighlight: searchQuery}}\"></div>\r\n <div>{{'AREATYPES.'+area.areaType|translate}}</div>\r\n </div>\r\n </ng-template>\r\n</adb-generic-picker>\r\n@if (showPrefill && prefill) {\r\n<div class=\"pop\">\r\n <div class=\"pop-body\">\r\n <div class=\"p-3\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n}" }]
|
|
2707
|
+
}], ctorParameters: () => [{ type: i1$1.TranslateService }, { type: AdbPickerConfigService }, { type: i1$2.HttpClient }], propDecorators: { fullWidth: [{
|
|
2708
|
+
type: HostBinding,
|
|
2709
|
+
args: ['class.w-100']
|
|
2710
|
+
}], placeholder: [{
|
|
2711
|
+
type: Input
|
|
2712
|
+
}], useObject: [{
|
|
2713
|
+
type: Input
|
|
2714
|
+
}], prefill: [{
|
|
2715
|
+
type: Input
|
|
2716
|
+
}] } });
|
|
2717
|
+
|
|
2718
|
+
class AdbPickerModule {
|
|
2719
|
+
static forRoot(config) {
|
|
2720
|
+
return {
|
|
2721
|
+
ngModule: AdbPickerModule,
|
|
2722
|
+
providers: [
|
|
2723
|
+
{
|
|
2724
|
+
provide: ADB_PICKER_CONFIG,
|
|
2725
|
+
useValue: config
|
|
2726
|
+
}
|
|
2727
|
+
]
|
|
2728
|
+
};
|
|
2729
|
+
}
|
|
2730
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2731
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerModule, declarations: [GenericPickerComponent,
|
|
2732
|
+
AdbAreaPickerComponent,
|
|
2733
|
+
AdbTaxonPickerComponent], imports: [CommonModule, FormsModule, i1$1.TranslateModule, AdbPipesModule, AdbDirectivesModule], exports: [GenericPickerComponent,
|
|
2734
|
+
AdbAreaPickerComponent,
|
|
2735
|
+
AdbTaxonPickerComponent] }); }
|
|
2736
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerModule, providers: [AdbPickerConfigService], imports: [CommonModule, FormsModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule] }); }
|
|
2737
|
+
}
|
|
2738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbPickerModule, decorators: [{
|
|
2739
|
+
type: NgModule,
|
|
2740
|
+
args: [{
|
|
2741
|
+
imports: [CommonModule, FormsModule, TranslateModule.forChild(), AdbPipesModule, AdbDirectivesModule],
|
|
2742
|
+
declarations: [
|
|
2743
|
+
GenericPickerComponent,
|
|
2744
|
+
AdbAreaPickerComponent,
|
|
2745
|
+
AdbTaxonPickerComponent
|
|
2746
|
+
],
|
|
2747
|
+
exports: [
|
|
2748
|
+
GenericPickerComponent,
|
|
2749
|
+
AdbAreaPickerComponent,
|
|
2750
|
+
AdbTaxonPickerComponent
|
|
2751
|
+
],
|
|
2752
|
+
providers: [AdbPickerConfigService]
|
|
2753
|
+
}]
|
|
2754
|
+
}] });
|
|
2755
|
+
|
|
2756
|
+
class AdbMapUtils {
|
|
2757
|
+
static { this.OverlayMaps = {
|
|
2758
|
+
'Altitude': new Leaflet.TileLayer.WMS("https://maps.sgu.se/lmv/hojdmodell/v1.1?SERVICE=WMS", { layers: "terrangskuggning", format: "image/png", transparent: true, opacity: 0.3, maxZoom: 16, version: "1.3.0" }),
|
|
2759
|
+
'Fjällkarta': new Leaflet.TileLayer.WMS('api/maps/mountain', {
|
|
2760
|
+
minZoom: 6,
|
|
2761
|
+
maxZoom: 18,
|
|
2762
|
+
maxNativeZoom: 14,
|
|
2763
|
+
attribution: '© <a href="https://www.lantmateriet.se/">Fjällkart</a>',
|
|
2764
|
+
wms: true
|
|
2765
|
+
}),
|
|
2766
|
+
'Kommuner': new Leaflet.TileLayer.WMS('https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?', {
|
|
2767
|
+
layers: 'GeoRegion:Municipality',
|
|
2768
|
+
version: '1.1.0',
|
|
2769
|
+
transparent: true,
|
|
2770
|
+
format: 'image/png'
|
|
2771
|
+
}),
|
|
2772
|
+
'Län': new Leaflet.TileLayer.WMS('https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms?', {
|
|
2773
|
+
layers: 'GeoRegion:County',
|
|
2774
|
+
version: '1.1.0',
|
|
2775
|
+
transparent: true,
|
|
2776
|
+
format: 'image/png'
|
|
2777
|
+
}),
|
|
2778
|
+
'Ortnamn': new Leaflet.TileLayer.WMS("https://maps.sgu.se/lmv/topowebb-skikt/v1.1?SERVICE=WMS", {
|
|
2779
|
+
layers: "text",
|
|
2780
|
+
format: "image/png",
|
|
2781
|
+
transparent: true,
|
|
2782
|
+
version: "1.3.0",
|
|
2783
|
+
}),
|
|
2784
|
+
'Ekonomisk zon': new Leaflet.TileLayer.WMS("https://sosgeo.artdata.slu.se/geoserver/it.geosolutions/wms?", {
|
|
2785
|
+
layers: "it.geosolutions:Ekonomiska_zonens_yttre_avgränsningslinjer_linje",
|
|
2786
|
+
format: "image/png",
|
|
2787
|
+
transparent: true,
|
|
2788
|
+
version: "1.1.0"
|
|
2789
|
+
})
|
|
2790
|
+
}; }
|
|
2791
|
+
static { this.Providers = [
|
|
2792
|
+
{
|
|
2793
|
+
name: 'Open Streetmap',
|
|
2794
|
+
id: 3,
|
|
2795
|
+
url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
2796
|
+
minZoom: 0,
|
|
2797
|
+
maxZoom: 18,
|
|
2798
|
+
params: {
|
|
2799
|
+
maxNativeZoom: 18,
|
|
2800
|
+
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
|
2801
|
+
},
|
|
2802
|
+
wms: false
|
|
2803
|
+
},
|
|
2804
|
+
{
|
|
2805
|
+
name: 'Sveriges gränser',
|
|
2806
|
+
id: 7,
|
|
2807
|
+
url: 'https://sosgeo.artdata.slu.se/geoserver/GeoRegion/wms',
|
|
2808
|
+
minZoom: 6,
|
|
2809
|
+
maxZoom: 18,
|
|
2810
|
+
params: {
|
|
2811
|
+
maxNativeZoom: 14,
|
|
2812
|
+
attribution: '© <a href="https://www.lantmateriet.se/">Sveriges gränser</a>',
|
|
2813
|
+
layers: 'GeoRegion:County', styles: 'municipality_name_yellow'
|
|
2814
|
+
},
|
|
2815
|
+
wms: true
|
|
2816
|
+
}
|
|
2817
|
+
]; }
|
|
2818
|
+
}
|
|
2819
|
+
|
|
2820
|
+
class AdbBaseMap {
|
|
2821
|
+
constructor(options = {}) {
|
|
2822
|
+
// protected static PRIMARY = '#007681';
|
|
2823
|
+
this.subscriptions = new Subscription();
|
|
2824
|
+
this.map = Leaflet.map;
|
|
2825
|
+
this.INITIAL_CENTER_LAT = 62;
|
|
2826
|
+
this.INITIAL_CENTER_LNG = 17;
|
|
2827
|
+
this.mapReadySubject = new BehaviorSubject(false);
|
|
2828
|
+
this.mapReady$ = this.mapReadySubject.asObservable();
|
|
2829
|
+
this.mapMoveSubject = new BehaviorSubject(null);
|
|
2830
|
+
this.mapMove$ = this.mapMoveSubject.asObservable();
|
|
2831
|
+
this.hasProviders = options?.providers ?? true;
|
|
2832
|
+
this.hasZoom = options?.zoom ?? true;
|
|
2833
|
+
this.hasScrollZoom = options?.scrollZoom ?? true;
|
|
2834
|
+
}
|
|
2835
|
+
getId() {
|
|
2836
|
+
return '' + Math.floor(Math.random() * Date.now());
|
|
2837
|
+
}
|
|
2838
|
+
ngAfterViewInit() {
|
|
2839
|
+
this.map = Leaflet.map(this.mapId, {
|
|
2840
|
+
zoomAnimation: false,
|
|
2841
|
+
fadeAnimation: false,
|
|
2842
|
+
markerZoomAnimation: false,
|
|
2843
|
+
inertia: false,
|
|
2844
|
+
scrollWheelZoom: this.hasZoom,
|
|
2845
|
+
minZoom: -1,
|
|
2846
|
+
zoomControl: this.hasScrollZoom,
|
|
2847
|
+
dragging: this.hasZoom,
|
|
2848
|
+
fullscreenControl: true,
|
|
2849
|
+
fullscreenControlOptions: {
|
|
2850
|
+
position: 'topleft'
|
|
2851
|
+
}
|
|
2852
|
+
});
|
|
2853
|
+
if (this.hasZoom) {
|
|
2854
|
+
this.map.on('moveend', () => {
|
|
2855
|
+
this.mapMoveSubject.next();
|
|
2856
|
+
});
|
|
2857
|
+
}
|
|
2858
|
+
window.addEventListener('resize', () => {
|
|
2859
|
+
this.map.invalidateSize();
|
|
2860
|
+
});
|
|
2861
|
+
Leaflet.control.scale().addTo(this.map);
|
|
2862
|
+
if (this.hasProviders) {
|
|
2863
|
+
this.addMapLayers();
|
|
2864
|
+
}
|
|
2865
|
+
this.map.whenReady(() => {
|
|
2866
|
+
setTimeout(() => {
|
|
2867
|
+
this.mapReadySubject.next(true);
|
|
2868
|
+
});
|
|
2869
|
+
});
|
|
2870
|
+
this.map.setView([62, 17], 5);
|
|
2871
|
+
}
|
|
2872
|
+
addMapLayers() {
|
|
2873
|
+
let backgroundMaps = {};
|
|
2874
|
+
for (const value of Object.values(AdbMapUtils.Providers)) {
|
|
2875
|
+
backgroundMaps[value.name] = value.wms ?
|
|
2876
|
+
Leaflet.tileLayer.wms(value.url, value.params) :
|
|
2877
|
+
Leaflet.tileLayer(value.url, value.params);
|
|
2878
|
+
}
|
|
2879
|
+
this.map.addLayer(backgroundMaps['Open Streetmap']);
|
|
2880
|
+
Leaflet.control.layers(backgroundMaps, AdbMapUtils.OverlayMaps).addTo(this.map);
|
|
2881
|
+
}
|
|
2882
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbBaseMap, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2883
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: AdbBaseMap, isStandalone: true, ngImport: i0 }); }
|
|
2884
|
+
}
|
|
2885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbBaseMap, decorators: [{
|
|
2886
|
+
type: Directive
|
|
2887
|
+
}], ctorParameters: () => [{ type: undefined }] });
|
|
2888
|
+
|
|
2889
|
+
class PolygonDrawerInput extends AdbBaseMap {
|
|
2890
|
+
ngOnInit() {
|
|
2891
|
+
this.mapId = this.getId();
|
|
2892
|
+
this.subscriptions.add(this.mapReady$.subscribe(ready => {
|
|
2893
|
+
if (ready) {
|
|
2894
|
+
Leaflet.drawLocal.draw.handlers.rectangle.tooltip = {};
|
|
2895
|
+
Leaflet.drawLocal.draw.handlers.simpleshape.tooltip = {};
|
|
2896
|
+
Leaflet.drawLocal.draw.handlers.polygon.tooltip = {};
|
|
2897
|
+
Leaflet.drawLocal.draw.toolbar.undo.title = '';
|
|
2898
|
+
Leaflet.drawLocal.draw.toolbar.finish.title = '';
|
|
2899
|
+
Leaflet.drawLocal.draw.toolbar.actions.title = '';
|
|
2900
|
+
if (this.geoJson?.type === 'Feature') {
|
|
2901
|
+
this.shapeLayer = Leaflet.geoJson(this.geoJson);
|
|
2902
|
+
this.shapeLayer.interactive = false;
|
|
2903
|
+
this.map.addLayer(this.shapeLayer);
|
|
2904
|
+
this.map.fitBounds(this.shapeLayer.getBounds());
|
|
2905
|
+
}
|
|
2906
|
+
else {
|
|
2907
|
+
this.map.setView([this.INITIAL_CENTER_LAT, this.INITIAL_CENTER_LNG], 5);
|
|
2908
|
+
}
|
|
2909
|
+
this.map.on('draw:created', event => {
|
|
2910
|
+
if (event.layerType === 'polygon') {
|
|
2911
|
+
this.polygonDraw = false;
|
|
2912
|
+
this.shapeLayer = Leaflet.geoJson(event.layer.toGeoJSON());
|
|
2913
|
+
this.shapeLayer.interactive = false;
|
|
2914
|
+
this.map.addLayer(this.shapeLayer);
|
|
2915
|
+
this.map.fitBounds(this.shapeLayer.getBounds());
|
|
2916
|
+
this.onChange(event.layer.toGeoJSON());
|
|
2917
|
+
}
|
|
2918
|
+
});
|
|
2919
|
+
}
|
|
2920
|
+
}));
|
|
2921
|
+
}
|
|
2922
|
+
constructor() {
|
|
2923
|
+
super(null);
|
|
2924
|
+
//ControlValueAccessor starts
|
|
2925
|
+
this.onChange = () => { };
|
|
2926
|
+
this.onTouched = () => { };
|
|
2927
|
+
}
|
|
2928
|
+
onDrawPolygon() {
|
|
2929
|
+
this.polygonDraw = true;
|
|
2930
|
+
this.drawLayer = new Leaflet.Draw.Polygon(this.map, { allowIntersection: false });
|
|
2931
|
+
this.drawLayer.enable();
|
|
2932
|
+
}
|
|
2933
|
+
onDeleteShape() {
|
|
2934
|
+
if (this.drawLayer) {
|
|
2935
|
+
this.map.removeLayer(this.drawLayer);
|
|
2936
|
+
}
|
|
2937
|
+
if (this.shapeLayer) {
|
|
2938
|
+
this.map.removeLayer(this.shapeLayer);
|
|
2939
|
+
}
|
|
2940
|
+
this.shapeLayer = null;
|
|
2941
|
+
this.polygonDraw = false;
|
|
2942
|
+
this.onChange(null);
|
|
2943
|
+
this.drawLayer = null;
|
|
2944
|
+
this.map.setView([62, 17], 5);
|
|
2945
|
+
}
|
|
2946
|
+
onUndoStep() {
|
|
2947
|
+
this.drawLayer.deleteLastVertex();
|
|
2948
|
+
}
|
|
2949
|
+
onMapMoveEnd() {
|
|
2950
|
+
}
|
|
2951
|
+
writeValue(geoJson) {
|
|
2952
|
+
this.geoJson = geoJson;
|
|
2953
|
+
}
|
|
2954
|
+
registerOnChange(fn) {
|
|
2955
|
+
this.onChange = fn;
|
|
2956
|
+
}
|
|
2957
|
+
registerOnTouched(fn) {
|
|
2958
|
+
this.onTouched = fn;
|
|
2959
|
+
}
|
|
2960
|
+
setDisabledState(isDisabled) {
|
|
2961
|
+
}
|
|
2962
|
+
ngOnDestroy() {
|
|
2963
|
+
this.subscriptions.unsubscribe();
|
|
2964
|
+
}
|
|
2965
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PolygonDrawerInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2966
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: PolygonDrawerInput, isStandalone: false, selector: "adb-polygon-drawer", providers: [
|
|
2967
|
+
{
|
|
2968
|
+
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => PolygonDrawerInput)),
|
|
2969
|
+
multi: true
|
|
2970
|
+
}
|
|
2971
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"mb-1 d-flex gap-1 flex-wrap align-items-start\">\r\n <button class=\"btn btn-secondary\" type=\"button\" [disabled]=\"shapeLayer||drawLayer\" (click)=\"onDrawPolygon()\" title=\"Polygon\">\r\n <span class=\"fas fa-draw-polygon\"></span> {{'OBSERVATION.DRAW'|translate}}\r\n </button>\r\n @if (shapeLayer||drawLayer) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDeleteShape()\" title=\"Ta bort\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n }\r\n @if (polygonDraw) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onUndoStep()\" title=\"\u00C5ngra\">\r\n <span class=\"fas fa-undo\"></span>\r\n </button>\r\n }\r\n</div>\r\n<div [id]=\"mapId\" class=\"border\" style=\"height:20rem\"></div>", dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
2972
|
+
}
|
|
2973
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: PolygonDrawerInput, decorators: [{
|
|
2974
|
+
type: Component,
|
|
2975
|
+
args: [{ selector: 'adb-polygon-drawer', standalone: false, providers: [
|
|
2976
|
+
{
|
|
2977
|
+
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => PolygonDrawerInput)),
|
|
2978
|
+
multi: true
|
|
2979
|
+
}
|
|
2980
|
+
], template: "<div class=\"mb-1 d-flex gap-1 flex-wrap align-items-start\">\r\n <button class=\"btn btn-secondary\" type=\"button\" [disabled]=\"shapeLayer||drawLayer\" (click)=\"onDrawPolygon()\" title=\"Polygon\">\r\n <span class=\"fas fa-draw-polygon\"></span> {{'OBSERVATION.DRAW'|translate}}\r\n </button>\r\n @if (shapeLayer||drawLayer) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onDeleteShape()\" title=\"Ta bort\">\r\n <span class=\"fas fa-times\"></span>\r\n </button>\r\n }\r\n @if (polygonDraw) {\r\n <button class=\"btn btn-secondary\" type=\"button\" (click)=\"onUndoStep()\" title=\"\u00C5ngra\">\r\n <span class=\"fas fa-undo\"></span>\r\n </button>\r\n }\r\n</div>\r\n<div [id]=\"mapId\" class=\"border\" style=\"height:20rem\"></div>" }]
|
|
2981
|
+
}], ctorParameters: () => [] });
|
|
2982
|
+
|
|
2983
|
+
var AdbMapFilterType;
|
|
2984
|
+
(function (AdbMapFilterType) {
|
|
2985
|
+
AdbMapFilterType["Taxon"] = "taxon";
|
|
2986
|
+
AdbMapFilterType["Area"] = "area";
|
|
2987
|
+
AdbMapFilterType["Time"] = "time";
|
|
2988
|
+
AdbMapFilterType["RedList"] = "redlist";
|
|
2989
|
+
AdbMapFilterType["RiskList"] = "risklist";
|
|
2990
|
+
AdbMapFilterType["TaxaLists"] = "taxonLists";
|
|
2991
|
+
AdbMapFilterType["Datasources"] = "datasources";
|
|
2992
|
+
})(AdbMapFilterType || (AdbMapFilterType = {}));
|
|
2993
|
+
class VisibleFilters {
|
|
2994
|
+
}
|
|
2995
|
+
const ADB_MAP_CONFIG = new InjectionToken('ADB_MAP_CONFIG');
|
|
2996
|
+
class AdbMapConfigService {
|
|
2997
|
+
constructor(config) {
|
|
2998
|
+
this.log = config.log ?? false;
|
|
2999
|
+
this.artfaktaTaxonLists = config.artfaktaTaxonLists ?? 'https://artfakta.se/metadata/listor';
|
|
3000
|
+
this.taxaListsApi = config.api + '/taxalists';
|
|
3001
|
+
this.aportalenObservations = config.artportalen + '/observation';
|
|
3002
|
+
this.filters = {
|
|
3003
|
+
showTaxon: this.hasFilter(AdbMapFilterType.Taxon, config.filters),
|
|
3004
|
+
showTime: this.hasFilter(AdbMapFilterType.Time, config.filters),
|
|
3005
|
+
showArea: this.hasFilter(AdbMapFilterType.Area, config.filters),
|
|
3006
|
+
showRedList: this.hasFilter(AdbMapFilterType.RedList, config.filters),
|
|
3007
|
+
showRiskList: this.hasFilter(AdbMapFilterType.RiskList, config.filters),
|
|
3008
|
+
showTaxaLists: this.hasFilter(AdbMapFilterType.TaxaLists, config.filters),
|
|
3009
|
+
showDatasets: this.hasFilter(AdbMapFilterType.Datasources, config.filters),
|
|
3010
|
+
};
|
|
3011
|
+
}
|
|
3012
|
+
hasFilter(f, filters) {
|
|
3013
|
+
return filters?.includes(f) ?? true;
|
|
3014
|
+
}
|
|
3015
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapConfigService, deps: [{ token: ADB_MAP_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3016
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapConfigService }); }
|
|
3017
|
+
}
|
|
3018
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapConfigService, decorators: [{
|
|
3019
|
+
type: Injectable
|
|
3020
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3021
|
+
type: Inject,
|
|
3022
|
+
args: [ADB_MAP_CONFIG]
|
|
3023
|
+
}] }] });
|
|
3024
|
+
|
|
3025
|
+
class TreeviewComponent {
|
|
3026
|
+
constructor() {
|
|
3027
|
+
this.nodes = [];
|
|
3028
|
+
this.selectedIds = [];
|
|
3029
|
+
this.onChange = () => { };
|
|
3030
|
+
this.onTouched = () => { };
|
|
3031
|
+
}
|
|
3032
|
+
writeValue(ids) {
|
|
3033
|
+
this.selectedIds = ids ?? [];
|
|
3034
|
+
this.applySelection(this.nodes);
|
|
3035
|
+
}
|
|
3036
|
+
registerOnChange(fn) {
|
|
3037
|
+
this.onChange = fn;
|
|
3038
|
+
}
|
|
3039
|
+
registerOnTouched(fn) {
|
|
3040
|
+
this.onTouched = fn;
|
|
3041
|
+
}
|
|
3042
|
+
setDisabledState(isDisabled) {
|
|
3043
|
+
this.setReadOnly(this.nodes, isDisabled);
|
|
3044
|
+
}
|
|
3045
|
+
onLeafToggle(node) {
|
|
3046
|
+
if (node._readOnly)
|
|
3047
|
+
return;
|
|
3048
|
+
node._selected = !node._selected;
|
|
3049
|
+
this.selectedIds = TreeviewComponent.collectSelectedLeafIds(this.nodes);
|
|
3050
|
+
this.onChange(this.selectedIds);
|
|
3051
|
+
this.onTouched();
|
|
3052
|
+
}
|
|
3053
|
+
applySelection(nodes) {
|
|
3054
|
+
for (const node of nodes) {
|
|
3055
|
+
if (node.children?.length) {
|
|
3056
|
+
this.applySelection(node.children);
|
|
3057
|
+
}
|
|
3058
|
+
else {
|
|
3059
|
+
node._selected = this.selectedIds.includes(node.id);
|
|
3060
|
+
}
|
|
3061
|
+
}
|
|
3062
|
+
}
|
|
3063
|
+
setReadOnly(nodes, readOnly) {
|
|
3064
|
+
for (const node of nodes) {
|
|
3065
|
+
node._readOnly = readOnly;
|
|
3066
|
+
if (node.children?.length) {
|
|
3067
|
+
this.setReadOnly(node.children, readOnly);
|
|
3068
|
+
}
|
|
3069
|
+
}
|
|
3070
|
+
}
|
|
3071
|
+
static collectSelectedLeafIds(nodes) {
|
|
3072
|
+
const ids = [];
|
|
3073
|
+
for (const node of nodes) {
|
|
3074
|
+
if (node.children?.length) {
|
|
3075
|
+
ids.push(...this.collectSelectedLeafIds(node.children));
|
|
3076
|
+
}
|
|
3077
|
+
else if (node._selected) {
|
|
3078
|
+
ids.push(node.id);
|
|
3079
|
+
}
|
|
3080
|
+
}
|
|
3081
|
+
return ids;
|
|
3082
|
+
}
|
|
3083
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: TreeviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3084
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: TreeviewComponent, isStandalone: false, selector: "app-treeview", inputs: { nodes: "nodes" }, providers: [
|
|
3085
|
+
{
|
|
3086
|
+
provide: NG_VALUE_ACCESSOR,
|
|
3087
|
+
useExisting: forwardRef((() => TreeviewComponent)),
|
|
3088
|
+
multi: true
|
|
3089
|
+
}
|
|
3090
|
+
], ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: nodes }\">\r\n</ng-container>\r\n<ng-template #nodeTpl let-nodes>\r\n @for (node of nodes; track node) {\r\n <div class=\"ms-3\">\r\n @if(!node.children || node.children.length === 0){\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <input id=\"{{node.id}}\" type=\"checkbox\" class=\"form-check-input m-0\" [checked]=\"node._selected\" [disabled]=\"node._readOnly\" (change)=\"onLeafToggle(node)\" />\r\n <label for=\"{{node.id}}\">{{ node.name }}</label>\r\n </div>\r\n }\r\n @else {\r\n {{ node.name }}\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: node.children }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n</ng-template>", dependencies: [{ kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
3091
|
+
}
|
|
3092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: TreeviewComponent, decorators: [{
|
|
3093
|
+
type: Component,
|
|
3094
|
+
args: [{ selector: 'app-treeview', standalone: false, providers: [
|
|
3095
|
+
{
|
|
3096
|
+
provide: NG_VALUE_ACCESSOR,
|
|
3097
|
+
useExisting: forwardRef((() => TreeviewComponent)),
|
|
3098
|
+
multi: true
|
|
3099
|
+
}
|
|
3100
|
+
], template: "<ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: nodes }\">\r\n</ng-container>\r\n<ng-template #nodeTpl let-nodes>\r\n @for (node of nodes; track node) {\r\n <div class=\"ms-3\">\r\n @if(!node.children || node.children.length === 0){\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <input id=\"{{node.id}}\" type=\"checkbox\" class=\"form-check-input m-0\" [checked]=\"node._selected\" [disabled]=\"node._readOnly\" (change)=\"onLeafToggle(node)\" />\r\n <label for=\"{{node.id}}\">{{ node.name }}</label>\r\n </div>\r\n }\r\n @else {\r\n {{ node.name }}\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $implicit: node.children }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n}\r\n</ng-template>" }]
|
|
3101
|
+
}], propDecorators: { nodes: [{
|
|
3102
|
+
type: Input
|
|
3103
|
+
}] } });
|
|
3104
|
+
|
|
3105
|
+
class MapUtils {
|
|
3106
|
+
static { this.redlistMapper = {
|
|
3107
|
+
"228": 24,
|
|
3108
|
+
"229": 25,
|
|
3109
|
+
"230": 26,
|
|
3110
|
+
"231": 27,
|
|
3111
|
+
"232": 28,
|
|
3112
|
+
"233": 29
|
|
3113
|
+
}; }
|
|
3114
|
+
static { this.redListMapper2 = {
|
|
3115
|
+
'VU': '228',
|
|
3116
|
+
'EN': '229',
|
|
3117
|
+
'CR': '230',
|
|
3118
|
+
'RE': '231',
|
|
3119
|
+
'DD': '232',
|
|
3120
|
+
'NT': '233'
|
|
3121
|
+
}; }
|
|
3122
|
+
static { this.riskListMapper = {
|
|
3123
|
+
"39": 19,
|
|
3124
|
+
"40": 20,
|
|
3125
|
+
"41": 21,
|
|
3126
|
+
"42": 22,
|
|
3127
|
+
"43": 23
|
|
3128
|
+
}; }
|
|
3129
|
+
static { this.listMapper = {
|
|
3130
|
+
'8': 8,
|
|
3131
|
+
'34': 1,
|
|
3132
|
+
'35': 4,
|
|
3133
|
+
'36': 3,
|
|
3134
|
+
'44': 13,
|
|
3135
|
+
"46": 15,
|
|
3136
|
+
'282': 2
|
|
3137
|
+
}; }
|
|
3138
|
+
static { this.euRegulation = 5; }
|
|
3139
|
+
static createObservationsBody(queryParams) {
|
|
3140
|
+
const body = {};
|
|
3141
|
+
if (queryParams.startAt) {
|
|
3142
|
+
body.date = {};
|
|
3143
|
+
body.date.startDate = queryParams.startAt;
|
|
3144
|
+
if (queryParams.endAt) {
|
|
3145
|
+
body.date.endDate = queryParams.endAt;
|
|
3146
|
+
}
|
|
3147
|
+
}
|
|
3148
|
+
const taxonId = queryParams?.taxonId;
|
|
3149
|
+
if (taxonId) {
|
|
3150
|
+
body.taxon = { Ids: [+taxonId] };
|
|
3151
|
+
body.taxon.includeUnderlyingTaxa = true;
|
|
3152
|
+
}
|
|
3153
|
+
MapUtils.handleLists(queryParams, body);
|
|
3154
|
+
body.geographics = {};
|
|
3155
|
+
if (queryParams.bbox) {
|
|
3156
|
+
const boundArray = JSON.parse(queryParams.bbox);
|
|
3157
|
+
body.geographics.boundingBox = {
|
|
3158
|
+
bottomRight: {
|
|
3159
|
+
latitude: boundArray[0],
|
|
3160
|
+
longitude: boundArray[3]
|
|
3161
|
+
},
|
|
3162
|
+
topLeft: {
|
|
3163
|
+
latitude: boundArray[2],
|
|
3164
|
+
longitude: boundArray[1]
|
|
3165
|
+
}
|
|
3166
|
+
};
|
|
3167
|
+
}
|
|
3168
|
+
if (queryParams.area) {
|
|
3169
|
+
const areas = Array.isArray(queryParams.area)
|
|
3170
|
+
? queryParams.area
|
|
3171
|
+
: queryParams.area ? [queryParams.area] : [];
|
|
3172
|
+
const parsedAreas = areas.map(a => {
|
|
3173
|
+
const [areaType, ...rest] = a.split('-');
|
|
3174
|
+
const featureId = rest.join('-');
|
|
3175
|
+
return areaType && featureId ? { areaType, featureId } : null;
|
|
3176
|
+
}).filter(v => v !== null);
|
|
3177
|
+
body.geographics.areas = parsedAreas;
|
|
3178
|
+
}
|
|
3179
|
+
if (queryParams.geo) {
|
|
3180
|
+
body.geographics.geometries = [{ type: 'Polygon', coordinates: [JSON.parse(queryParams.geo)] }];
|
|
3181
|
+
}
|
|
3182
|
+
const noted = queryParams.noted === 'true';
|
|
3183
|
+
if (queryParams.ds) {
|
|
3184
|
+
const providers = Array.isArray(queryParams.ds) ? queryParams.ds.map(m => +m) : [+queryParams.ds];
|
|
3185
|
+
body.dataProvider = { ids: providers };
|
|
3186
|
+
}
|
|
3187
|
+
const presets = {
|
|
3188
|
+
occurrenceStatus: noted ? 'Present' : 'BothPresentAndAbsent',
|
|
3189
|
+
verificationStatus: "BothVerifiedAndNotVerified",
|
|
3190
|
+
notRecoveredFilter: 'DontIncludeNotRecovered',
|
|
3191
|
+
determinationFilter: 'NotUnsureDetermination',
|
|
3192
|
+
protectionFilter: "Public",
|
|
3193
|
+
diffusionStatuses: ['NotDiffused', 'DiffusedBySystem', 'DiffusedByProvider'],
|
|
3194
|
+
extendedFilter: {
|
|
3195
|
+
'notPresentFilter': 'DontIncludeNotPresent'
|
|
3196
|
+
}
|
|
3197
|
+
};
|
|
3198
|
+
if (queryParams.activities) {
|
|
3199
|
+
const stringArray = JSON.parse(queryParams.activities);
|
|
3200
|
+
presets.extendedFilter.activityIds = stringArray?.map(Number);
|
|
3201
|
+
}
|
|
3202
|
+
return { ...presets, ...body };
|
|
3203
|
+
}
|
|
3204
|
+
static handleLists(queryParams, body) {
|
|
3205
|
+
let listIds = [];
|
|
3206
|
+
if (queryParams.rc) { //RISK CLASS
|
|
3207
|
+
const risk = queryParams.rc ? (Array.isArray(queryParams.rc) ? queryParams.rc : [queryParams.rc]) : [];
|
|
3208
|
+
listIds = risk.map(t => MapUtils.riskListMapper[t]);
|
|
3209
|
+
}
|
|
3210
|
+
if (queryParams.rlc) { //REDLIST
|
|
3211
|
+
let redLists = queryParams.rlc ? (Array.isArray(queryParams.rlc) ? queryParams.rlc : [queryParams.rlc]) : [];
|
|
3212
|
+
redLists = redLists.map(t => MapUtils.redlistMapper[t]);
|
|
3213
|
+
listIds.push(...redLists);
|
|
3214
|
+
}
|
|
3215
|
+
if (queryParams.tl || queryParams.eu) { //OTHER LISTS
|
|
3216
|
+
let taxonLists = queryParams.tl ? (Array.isArray(queryParams.tl) ? queryParams.tl : [queryParams.tl]) : [];
|
|
3217
|
+
taxonLists = taxonLists.map(t => MapUtils.listMapper[t]);
|
|
3218
|
+
if (queryParams.eu) {
|
|
3219
|
+
taxonLists.push(MapUtils.euRegulation);
|
|
3220
|
+
}
|
|
3221
|
+
listIds.push(...taxonLists);
|
|
3222
|
+
}
|
|
3223
|
+
body.taxon ??= {};
|
|
3224
|
+
body.taxon.taxonListIds = listIds;
|
|
3225
|
+
}
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3228
|
+
class AdbObsMapComponent extends AdbBaseMap {
|
|
3229
|
+
constructor(activatedRoute, config, router, http) {
|
|
3230
|
+
super({ zoom: true, scrollZoom: true });
|
|
3231
|
+
this.activatedRoute = activatedRoute;
|
|
3232
|
+
this.config = config;
|
|
3233
|
+
this.router = router;
|
|
3234
|
+
this.http = http;
|
|
3235
|
+
this.aportalenObservations = this.config.aportalenObservations;
|
|
3236
|
+
}
|
|
3237
|
+
ngOnInit() {
|
|
3238
|
+
this.mapId = this.getId();
|
|
3239
|
+
const combined$ = combineLatest([this.mapReady$, this.activatedRoute.paramMap, this.activatedRoute.queryParams])
|
|
3240
|
+
.pipe(map(results => ({ ready: results[0], urlParams: results[1], qParams: results[2] })), debounceTime(0));
|
|
3241
|
+
this.subscriptions.add(combined$.subscribe(result => {
|
|
3242
|
+
if (result.ready) {
|
|
3243
|
+
this.hasBox = result.qParams.bbox ? true : false;
|
|
3244
|
+
const qps = { ...result.qParams };
|
|
3245
|
+
if (result.urlParams.has('taxonId')) {
|
|
3246
|
+
qps.taxonId = result.urlParams.get('taxonId');
|
|
3247
|
+
}
|
|
3248
|
+
this.loadFeature(qps);
|
|
3249
|
+
}
|
|
3250
|
+
}));
|
|
3251
|
+
}
|
|
3252
|
+
ngOnDestroy() {
|
|
3253
|
+
this.subscriptions.unsubscribe();
|
|
3254
|
+
}
|
|
3255
|
+
loadFeature(qParams) {
|
|
3256
|
+
this.loading = true;
|
|
3257
|
+
this.error = null;
|
|
3258
|
+
const body = MapUtils.createObservationsBody(qParams);
|
|
3259
|
+
//TODO: will be const url = this.config.api + '/observationmap/observation-features';
|
|
3260
|
+
const url = 'https://sos-search-st.wt.artdata.slu.se/Observations/Internal/AdaptiveSearch';
|
|
3261
|
+
// this.subscriptions.add(this.http.post<GeoJson>(url, body, { observe: 'response', params: { includeFilterAreasInResult: true, observationsLimit: 0 } }).subscribe({
|
|
3262
|
+
this.subscriptions.add(this.http.post(url, body, { observe: 'response', params: { includeFilterAreasInResult: true, observationsLimit: 0 } }).subscribe({
|
|
3263
|
+
next: (response) => {
|
|
3264
|
+
const geo = response.body;
|
|
3265
|
+
geo.properties = { count: response.headers.get('X-Observations-TotalCount') };
|
|
3266
|
+
this.buildMap(geo);
|
|
3267
|
+
}, error: err => {
|
|
3268
|
+
this.error = err;
|
|
3269
|
+
this.loading = false;
|
|
3270
|
+
}
|
|
3271
|
+
}));
|
|
3272
|
+
}
|
|
3273
|
+
buildMap(geojson) {
|
|
3274
|
+
if (this.siteLayer) {
|
|
3275
|
+
this.map.removeLayer(this.siteLayer);
|
|
3276
|
+
}
|
|
3277
|
+
this.count = geojson?.properties?.count;
|
|
3278
|
+
this.siteLayer = Leaflet.geoJson(geojson, {
|
|
3279
|
+
style: (feature) => {
|
|
3280
|
+
return {
|
|
3281
|
+
className: `svg ${this.getPolygonClassName(feature.properties)}`, // Leaflet applies this class to the SVG path
|
|
3282
|
+
weight: 1,
|
|
3283
|
+
fillOpacity: 0.8,
|
|
3284
|
+
};
|
|
3285
|
+
},
|
|
3286
|
+
pointToLayer: (feature, latlng) => {
|
|
3287
|
+
const marker = Leaflet.marker(latlng, {
|
|
3288
|
+
icon: Leaflet.divIcon({
|
|
3289
|
+
className: '',
|
|
3290
|
+
html: '<div class="adb-map-marker"></div>',
|
|
3291
|
+
iconAnchor: [3, 3]
|
|
3292
|
+
})
|
|
3293
|
+
});
|
|
3294
|
+
if (feature.properties && feature.properties['Occurrence.OccurrenceId']) {
|
|
3295
|
+
marker.on('click', () => {
|
|
3296
|
+
window.location.href = this.aportalenObservations + '/' + feature.properties['Occurrence.OccurrenceId'];
|
|
3297
|
+
});
|
|
3298
|
+
}
|
|
3299
|
+
return marker;
|
|
3300
|
+
}, onEachFeature: (feature, layer) => {
|
|
3301
|
+
if (feature.geometry.type === "Polygon" ||
|
|
3302
|
+
feature.geometry.type === "MultiPolygon") {
|
|
3303
|
+
if (feature.properties.ObservationsCount > 0) {
|
|
3304
|
+
layer.on('click', () => {
|
|
3305
|
+
const boundBox = JSON.stringify(this.getMapBoundsToBbox(layer.getBounds()));
|
|
3306
|
+
this.router.navigate([], { queryParams: { bbox: boundBox }, queryParamsHandling: 'merge' });
|
|
3307
|
+
});
|
|
3308
|
+
layer.on('mouseover', () => {
|
|
3309
|
+
layer.setStyle({ className: 'svg cursor-pointer' });
|
|
3310
|
+
});
|
|
3311
|
+
layer.on('mouseout', () => {
|
|
3312
|
+
layer.setStyle({ className: 'svg' });
|
|
3313
|
+
});
|
|
3314
|
+
}
|
|
3315
|
+
if (feature.properties.FeatureType) { //area
|
|
3316
|
+
layer.setStyle({ interactive: false });
|
|
3317
|
+
}
|
|
3318
|
+
}
|
|
3319
|
+
}
|
|
3320
|
+
});
|
|
3321
|
+
const circleLayer = Leaflet.featureGroup();
|
|
3322
|
+
circleLayer.addTo(this.siteLayer);
|
|
3323
|
+
this.map.addLayer(this.siteLayer);
|
|
3324
|
+
if (geojson.bbox) {
|
|
3325
|
+
const [minLon, minLat, maxLon, maxLat] = geojson.bbox;
|
|
3326
|
+
const bounds = Leaflet.latLngBounds([[minLat, minLon], [maxLat, maxLon]]);
|
|
3327
|
+
if (bounds.isValid()) {
|
|
3328
|
+
// Safari sometimes needs extra time after layer adds
|
|
3329
|
+
setTimeout(() => {
|
|
3330
|
+
this.map.invalidateSize({ animate: false });
|
|
3331
|
+
this.map.fitBounds(bounds);
|
|
3332
|
+
this.loading = false;
|
|
3333
|
+
}, 50); // 30–50ms works best in Safari
|
|
3334
|
+
}
|
|
3335
|
+
}
|
|
3336
|
+
else {
|
|
3337
|
+
this.loading = false;
|
|
3338
|
+
}
|
|
3339
|
+
}
|
|
3340
|
+
getPolygonClassName(props) {
|
|
3341
|
+
if (props.FeatureType) {
|
|
3342
|
+
return 'map-area';
|
|
3343
|
+
}
|
|
3344
|
+
if (props.ObservationsCount < 10)
|
|
3345
|
+
return 'map-heat-low';
|
|
3346
|
+
if (props.ObservationsCount < 500)
|
|
3347
|
+
return 'map-heat-small';
|
|
3348
|
+
return 'map-heat-high';
|
|
3349
|
+
}
|
|
3350
|
+
getMapBoundsToBbox(bounds) {
|
|
3351
|
+
return [bounds.getNorthWest().lat, bounds.getNorthWest().lng, bounds.getSouthEast().lat, bounds.getSouthEast().lng];
|
|
3352
|
+
}
|
|
3353
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbObsMapComponent, deps: [{ token: i1.ActivatedRoute }, { token: AdbMapConfigService }, { token: i1.Router }, { token: i1$2.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3354
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbObsMapComponent, isStandalone: false, selector: "adb-obs-map", usesInheritance: true, ngImport: i0, template: "@if(hasBox&&!loading){\r\n <div class=\"mb-1 d-flex justify-content-between flex-wrap\">\r\n <a [routerLink]=\"[]\" [queryParams]=\"{bbox:null,z:null}\" queryParamsHandling=\"merge\" class=\"d-flex gap-1 align-items-baseline\">\r\n <span class=\"fas fa-chevron-left\"></span>\r\n Tillbaka upp\r\n </a>\r\n </div>\r\n}\r\n@if(error){\r\n <div class=\"alert alert-danger\">\r\n {{'ERROR.SERVER_ERROR'|translate}}\r\n </div>\r\n}\r\n<div [class.loading]=\"loading\">\r\n <div [style.visibility]=\"loading ? 'hidden':'visible'\" [id]=\"mapId\" class=\"mb-1 map-container\"></div>\r\n</div>\r\n<div class=\"mb-1 d-flex gap-3 justify-content-between flex-wrap\">\r\n @if (count > 5000) {\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-low\"></div>\r\n <10\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-medium\"></div>\r\n 10 - 500\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-high\"></div>\r\n >500\r\n </div>\r\n }\r\n @if (!loading&&count) {\r\n <div class=\"ms-auto\">\r\n {{count|adbSpacing}} {{'OBSERVATION.OBSERVATIONS'|translate}}\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: NumberSpacingPipe, name: "adbSpacing" }] }); }
|
|
3355
|
+
}
|
|
3356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbObsMapComponent, decorators: [{
|
|
3357
|
+
type: Component,
|
|
3358
|
+
args: [{ selector: 'adb-obs-map', standalone: false, template: "@if(hasBox&&!loading){\r\n <div class=\"mb-1 d-flex justify-content-between flex-wrap\">\r\n <a [routerLink]=\"[]\" [queryParams]=\"{bbox:null,z:null}\" queryParamsHandling=\"merge\" class=\"d-flex gap-1 align-items-baseline\">\r\n <span class=\"fas fa-chevron-left\"></span>\r\n Tillbaka upp\r\n </a>\r\n </div>\r\n}\r\n@if(error){\r\n <div class=\"alert alert-danger\">\r\n {{'ERROR.SERVER_ERROR'|translate}}\r\n </div>\r\n}\r\n<div [class.loading]=\"loading\">\r\n <div [style.visibility]=\"loading ? 'hidden':'visible'\" [id]=\"mapId\" class=\"mb-1 map-container\"></div>\r\n</div>\r\n<div class=\"mb-1 d-flex gap-3 justify-content-between flex-wrap\">\r\n @if (count > 5000) {\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-low\"></div>\r\n <10\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-medium\"></div>\r\n 10 - 500\r\n </div>\r\n <div class=\"d-flex align-items-center gap-1\">\r\n <div class=\"legend map-heat-high\"></div>\r\n >500\r\n </div>\r\n }\r\n @if (!loading&&count) {\r\n <div class=\"ms-auto\">\r\n {{count|adbSpacing}} {{'OBSERVATION.OBSERVATIONS'|translate}}\r\n </div>\r\n }\r\n</div>" }]
|
|
3359
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: AdbMapConfigService }, { type: i1.Router }, { type: i1$2.HttpClient }] });
|
|
3360
|
+
|
|
3361
|
+
class AdbMapFilters {
|
|
3362
|
+
static { this.AlienSpecies = 35; }
|
|
3363
|
+
static { this.Risklist = 38; }
|
|
3364
|
+
static { this.Redlist = 227; }
|
|
3365
|
+
static { this.datasets = ['1', '3', '5', '6', '4', '8']; }
|
|
3366
|
+
constructor(cdr, config, http, router, activatedRoute) {
|
|
3367
|
+
this.cdr = cdr;
|
|
3368
|
+
this.config = config;
|
|
3369
|
+
this.http = http;
|
|
3370
|
+
this.router = router;
|
|
3371
|
+
this.activatedRoute = activatedRoute;
|
|
3372
|
+
this.inline = false;
|
|
3373
|
+
this.artfakta = this.config.artfaktaTaxonLists;
|
|
3374
|
+
this.subscriptions = new Subscription();
|
|
3375
|
+
this.thisYear = new Date();
|
|
3376
|
+
this.lastYear = addYears(new Date(), -1);
|
|
3377
|
+
this.dateConfig = { minDate: null, maxDate: subDays(new Date(), 1) };
|
|
3378
|
+
this.filters = config.filters;
|
|
3379
|
+
}
|
|
3380
|
+
ngOnInit() {
|
|
3381
|
+
const lists$ = this.getLists();
|
|
3382
|
+
const combined$ = combineLatest([this.activatedRoute.paramMap, this.activatedRoute.queryParamMap, lists$])
|
|
3383
|
+
.pipe(map$1(results => ({ params: results[0], qParams: results[1], lists: results[2] })), debounceTime$1(0));
|
|
3384
|
+
this.subscriptions.add(combined$.subscribe(result => {
|
|
3385
|
+
this.form = this.createForm(result.params, result.qParams, result.lists);
|
|
3386
|
+
this.cdr.markForCheck();
|
|
3387
|
+
}));
|
|
3388
|
+
}
|
|
3389
|
+
removeArea(index) {
|
|
3390
|
+
this.form.get('areas').removeAt(index);
|
|
3391
|
+
this.form.markAsDirty();
|
|
3392
|
+
}
|
|
3393
|
+
addArea() {
|
|
3394
|
+
const areas = this.form.get('areas');
|
|
3395
|
+
areas.push(new FormControl(null));
|
|
3396
|
+
this.form.updateValueAndValidity();
|
|
3397
|
+
this.form.markAsDirty();
|
|
3398
|
+
}
|
|
3399
|
+
onSubmit() {
|
|
3400
|
+
const data = this.form.value;
|
|
3401
|
+
let params = {};
|
|
3402
|
+
params.p = data.period ?? null;
|
|
3403
|
+
if (data.period === '1') {
|
|
3404
|
+
params.startAt = startOfYear(this.thisYear).toISOString();
|
|
3405
|
+
params.endAt = null;
|
|
3406
|
+
}
|
|
3407
|
+
else if (data.period === '2') {
|
|
3408
|
+
params.startAt = startOfYear(this.lastYear).toISOString();
|
|
3409
|
+
params.endAt = endOfYear(this.lastYear).toISOString();
|
|
3410
|
+
}
|
|
3411
|
+
else if (data.period === '3') {
|
|
3412
|
+
params.startAt = null;
|
|
3413
|
+
params.endAt = null;
|
|
3414
|
+
}
|
|
3415
|
+
else if (data.period === '4') {
|
|
3416
|
+
params.startAt = startOfYear(addYears(new Date(), -5)).toISOString();
|
|
3417
|
+
params.endAt = null;
|
|
3418
|
+
}
|
|
3419
|
+
else if (data.period === '5') {
|
|
3420
|
+
params.startAt = startOfYear(addYears(new Date(), -25)).toISOString();
|
|
3421
|
+
params.endAt = null;
|
|
3422
|
+
}
|
|
3423
|
+
else if (data.period === '6') {
|
|
3424
|
+
params.startAt = startOfDay(data.startAt).toISOString();
|
|
3425
|
+
params.endAt = endOfDay(data.endAt).toISOString();
|
|
3426
|
+
}
|
|
3427
|
+
if (this.hasOwnArea && data.geo) {
|
|
3428
|
+
params.geo = JSON.stringify(data.geo.geometry?.coordinates[0]);
|
|
3429
|
+
}
|
|
3430
|
+
const cleaned = data.areas?.filter(v => v != null && v !== '');
|
|
3431
|
+
if (cleaned.length > 0) {
|
|
3432
|
+
params.area = cleaned;
|
|
3433
|
+
}
|
|
3434
|
+
if (this.activatedRoute.snapshot.paramMap.has('taxonId')) {
|
|
3435
|
+
params.taxonId = this.activatedRoute.snapshot.paramMap.get('taxonId');
|
|
3436
|
+
}
|
|
3437
|
+
else {
|
|
3438
|
+
params.taxonId = data.taxonId ?? null;
|
|
3439
|
+
}
|
|
3440
|
+
if (data.rlc?.length > 0) {
|
|
3441
|
+
const selected = data.rlc.filter(f => f.selected).map(m => m.id);
|
|
3442
|
+
params.rlc = selected.length ? selected : null;
|
|
3443
|
+
}
|
|
3444
|
+
if (data.rc?.length > 0) {
|
|
3445
|
+
const selected = data.rc.filter(f => f.selected).map(m => m.id);
|
|
3446
|
+
params.rc = selected.length ? selected : null;
|
|
3447
|
+
}
|
|
3448
|
+
if (data.tl?.length > 0) {
|
|
3449
|
+
params.tl = data.tl;
|
|
3450
|
+
}
|
|
3451
|
+
if (data.ds?.length > 0) {
|
|
3452
|
+
const selected = data.ds.filter(f => f.selected).map(m => m.id);
|
|
3453
|
+
params.ds = selected.length ? selected : null;
|
|
3454
|
+
}
|
|
3455
|
+
this.router.navigate([], { queryParams: params, relativeTo: this.activatedRoute });
|
|
3456
|
+
}
|
|
3457
|
+
createForm(params, qMap, lists) {
|
|
3458
|
+
this.hasTaxonInUrlParameter = params.has('taxonId');
|
|
3459
|
+
this.hasOwnArea = qMap.has('geo');
|
|
3460
|
+
const areas = qMap.getAll('area').filter(a => a != null && a.trim() !== '' && a.includes('-'));
|
|
3461
|
+
const form = new FormGroup({
|
|
3462
|
+
period: new FormControl(qMap.has('p') ? qMap.get('p') : '3'),
|
|
3463
|
+
areas: new FormArray((Array.isArray(areas) && areas.length ? areas : [null]).map(a => new FormControl(a))),
|
|
3464
|
+
geo: new FormControl(qMap.has('geo') ? {
|
|
3465
|
+
type: 'Feature',
|
|
3466
|
+
geometry: { type: 'Polygon', coordinates: [JSON.parse(qMap.get('geo'))] }
|
|
3467
|
+
} : null)
|
|
3468
|
+
});
|
|
3469
|
+
this.areasArray = form.get('areas');
|
|
3470
|
+
this.periodCount = qMap.has('p') && qMap.get('p') !== '3' ? 1 : 0;
|
|
3471
|
+
this.areaCount = areas?.length;
|
|
3472
|
+
if (!this.hasTaxonInUrlParameter) {
|
|
3473
|
+
form.addControl('taxonId', new FormControl(qMap.get('taxonId') ?? null));
|
|
3474
|
+
let selectedRedLists = qMap.has('rlc') ? (Array.isArray(qMap.getAll('rlc')) ? qMap.getAll('rlc') : [qMap.get('rlc')]) : null;
|
|
3475
|
+
this.redListCount = selectedRedLists?.length;
|
|
3476
|
+
form.addControl('rlc', new FormArray(lists.redlist.map(redlistCat => new FormGroup({
|
|
3477
|
+
id: new FormControl(redlistCat.id),
|
|
3478
|
+
selected: new FormControl(selectedRedLists?.includes('' + redlistCat.id))
|
|
3479
|
+
}))));
|
|
3480
|
+
this.rlcControls = form.get('rlc').controls;
|
|
3481
|
+
let selectedRisks = qMap.has('rc') ? (Array.isArray(qMap.getAll('rc')) ? qMap.getAll('rc') : [qMap.get('rc')]) : null;
|
|
3482
|
+
this.riskListCount = selectedRisks?.length;
|
|
3483
|
+
form.addControl('rc', new FormArray(lists.riskList.map(risklistCat => new FormGroup({
|
|
3484
|
+
id: new FormControl(risklistCat.id),
|
|
3485
|
+
selected: new FormControl(selectedRisks?.includes('' + risklistCat.id))
|
|
3486
|
+
}))));
|
|
3487
|
+
this.rcControls = form.get('rc').controls;
|
|
3488
|
+
const selectedTaxonList = qMap.has('tl') ? qMap.getAll('tl').map(val => Number(val)).filter(val => !isNaN(val)) : null;
|
|
3489
|
+
this.taxaLists = lists.others;
|
|
3490
|
+
this.taxonListCount = selectedTaxonList?.length;
|
|
3491
|
+
form.addControl('tl', new FormControl(selectedTaxonList));
|
|
3492
|
+
let datasets = qMap.has('ds') ? (Array.isArray(qMap.getAll('ds')) ? qMap.getAll('ds') : [qMap.get('ds')]) : null;
|
|
3493
|
+
this.dataSetCount = datasets?.length;
|
|
3494
|
+
form.addControl('ds', new FormArray(AdbMapFilters.datasets.map(id => new FormGroup({
|
|
3495
|
+
id: new FormControl(id),
|
|
3496
|
+
selected: new FormControl(datasets?.includes(id))
|
|
3497
|
+
}))));
|
|
3498
|
+
this.dsControls = form.get('ds').controls;
|
|
3499
|
+
}
|
|
3500
|
+
this.updateCustomDate(form, qMap.get('p'), qMap);
|
|
3501
|
+
this.subscriptions.add(form.get('period').valueChanges.subscribe(period => {
|
|
3502
|
+
this.updateCustomDate(form, period, qMap);
|
|
3503
|
+
}));
|
|
3504
|
+
return form;
|
|
3505
|
+
}
|
|
3506
|
+
updateCustomDate(form, period, qMap) {
|
|
3507
|
+
if (period === '6') {
|
|
3508
|
+
form.addControl('startAt', new FormControl(qMap.has('startAt') ? parseISO(qMap.get('startAt')) : null, Validators.required));
|
|
3509
|
+
form.addControl('endAt', new FormControl(qMap.has('endAt') ? parseISO(qMap.get('endAt')) : null, Validators.required));
|
|
3510
|
+
}
|
|
3511
|
+
else {
|
|
3512
|
+
form.removeControl('startAt');
|
|
3513
|
+
form.removeControl('endAt');
|
|
3514
|
+
}
|
|
3515
|
+
}
|
|
3516
|
+
;
|
|
3517
|
+
getLists() {
|
|
3518
|
+
return this.http.get(this.config.taxaListsApi).pipe(map$1(lists => {
|
|
3519
|
+
const alienSpecies = lists.find(f => f.id === AdbMapFilters.AlienSpecies);
|
|
3520
|
+
const redlist = lists.find(f => f.id === AdbMapFilters.Redlist);
|
|
3521
|
+
return {
|
|
3522
|
+
others: lists.filter(f => f.id !== AdbMapFilters.AlienSpecies && f.id !== AdbMapFilters.Redlist),
|
|
3523
|
+
redlist: redlist?.children,
|
|
3524
|
+
riskList: alienSpecies?.children?.find(c => c.id === AdbMapFilters.Risklist)?.children
|
|
3525
|
+
};
|
|
3526
|
+
}), catchError(err => {
|
|
3527
|
+
this.listsError = err;
|
|
3528
|
+
return of({
|
|
3529
|
+
others: [],
|
|
3530
|
+
redlist: [],
|
|
3531
|
+
riskList: []
|
|
3532
|
+
});
|
|
3533
|
+
}), shareReplay(1));
|
|
3534
|
+
}
|
|
3535
|
+
ngOnDestroy() {
|
|
3536
|
+
this.subscriptions.unsubscribe();
|
|
3537
|
+
}
|
|
3538
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapFilters, deps: [{ token: i0.ChangeDetectorRef }, { token: AdbMapConfigService }, { token: i1$2.HttpClient }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3539
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: AdbMapFilters, isStandalone: false, selector: "adb-map-filters", inputs: { inline: "inline" }, ngImport: i0, template: "@if(form){\r\n<form [formGroup]=\"form\" class=\"form mb-3\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <adb-filter-section titleResource=\"TAXON.SPECIES\" [expanded]=\"true\">\r\n @if(filters.showTaxon&&!hasTaxonInUrlParameter){\r\n <div class=\"mb-3\">\r\n <label for=\"species\">{{'TAXON.SPECIES_SINGULAR'|translate}}</label>\r\n <adb-taxon-picker formControlName=\"taxonId\" id=\"species\"></adb-taxon-picker>\r\n </div>\r\n }\r\n </adb-filter-section>\r\n @if(filters.showTime){\r\n <adb-filter-section [count]=\"periodCount\" titleResource=\"OBSERVATION.PERIOD\">\r\n <div class=\"mb-1\">\r\n <select class=\"form-select\" formControlName=\"period\" id=\"period\">\r\n <option value=\"1\">{{thisYear|date:'yyyy'}}</option>\r\n <option value=\"2\">{{lastYear|date:'yyyy'}}</option>\r\n <option value=\"3\">{{'OBSERVATION.ALL_YEAR'|translate}}</option>\r\n <option value=\"4\">{{'OBSERVATION.LAST_5_YEAR'|translate}}</option>\r\n <option value=\"5\">{{'OBSERVATION.LAST_25_YEAR'|translate}}</option>\r\n <option value=\"6\">{{'OBSERVATION.CUSTOMIZED'|translate}}</option>\r\n </select>\r\n </div>\r\n @if (form.value?.period==='6') {\r\n <div class=\"mb-2\">\r\n <label for=\"startAt\">{{'FROM' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"startAt\" formControlName=\"startAt\" [settings]=\"dateConfig\">\r\n </div>\r\n <div class=\"mb-2\">\r\n <label for=\"endAt\">{{'TO' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"endAt\" formControlName=\"endAt\" [settings]=\"dateConfig\">\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showArea){\r\n <adb-filter-section [count]=\"areaCount\" titleResource=\"GEOGRAPHY\" [lazy]=\"true\">\r\n <ng-template>\r\n <div role=\"tablist\" aria-label=\"{{'AREA'|translate}}\" class=\"d-flex gap-2 justify-content-end\">\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"!hasOwnArea\" (click)=\"hasOwnArea=false\" role=\"tab\" id=\"tab-select\" aria-selected=\"{{!hasOwnArea}}\" aria-controls=\"panel-select\">\r\n {{'CHOOSE'|translate}}\r\n </button>\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"hasOwnArea\"(click)=\"hasOwnArea=true\" role=\"tab\" id=\"tab-draw\" aria-selected=\"false\" aria-controls=\"panel-draw\">\r\n {{'OWN_AREA'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"mb-2\">\r\n @if(hasOwnArea){\r\n <div class=\"pt-1\" role=\"tabpanel\" id=\"area-draw\" aria-labelledby=\"tab-draw\">\r\n <div>\r\n <adb-polygon-drawer formControlName=\"geo\"></adb-polygon-drawer>\r\n </div>\r\n </div>\r\n }@else{\r\n <div role=\"tabpanel\" id=\"area-select\" aria-labelledby=\"tab-select\">\r\n <div formArrayName=\"areas\">\r\n <div class=\"d-flex align-items-end mb-1\">\r\n <label>{{'AREAS'|translate}}</label>\r\n <button class=\"ms-auto text-dark btn btn-sm btn-secondary\" attr.aria-label=\"{{'OBSERVATION.ADD_AREA'|translate}}\" title=\"{{'OBSERVATION.ADD_AREA'|translate}}\" type=\"button\" (click)=\"addArea()\">\r\n <span class=\"fas fa-plus\"></span>\r\n </button>\r\n </div>\r\n @for (ctrl of areasArray.controls; track ctrl; let i = $index; let last = $last) {\r\n <div class=\"d-flex mb-2\">\r\n <adb-area-picker id=\"area-{{i}}\" [formControlName]=\"i\"></adb-area-picker>\r\n @if(areasArray.length>1){\r\n <button class=\"btn btn-secondary ms-1\" attr.aria-label=\"{{'DELETE'|translate}}\" title=\"{{'DELETE'|translate}}\" type=\"button\" (click)=\"removeArea(i)\">\r\n <span class=\"fas fa-trash\"></span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </adb-filter-section>\r\n }\r\n @if(form.get('taxonId')){\r\n @if(filters.showRedList){\r\n <adb-filter-section [count]=\"redListCount\" titleResource=\"REDLIST.REDLIST_2025\">\r\n @if (form.get('rlc')) {\r\n <div formArrayName=\"rlc\">\r\n @for (item of rlcControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'rlc-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'rlc-' + item.value.id\" class=\"form-check-label\">{{ 'REDLIST_CATEGORIES_LIST_ID.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showRiskList){\r\n <adb-filter-section [count]=\"riskListCount\" titleResource=\"ALIEN.ALIEN_SPECIES_SHORT\">\r\n @if(form.get('rc')){\r\n <div formArrayName=\"rc\">\r\n @for ( item of rcControls; track item.id; let i = $index ) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'rc-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'rc-' + item.value.id\" class=\"form-check-label\">{{ 'RISKLIST_CATEGORIES.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showTaxaLists){\r\n <adb-filter-section [count]=\"taxonListCount\" titleResource=\"LISTS.NATURE_CONSERVATION_LISTS\">\r\n <div class=\"mb-3\">\r\n <app-treeview formControlName=\"tl\" [nodes]=\"taxaLists\"></app-treeview>\r\n </div>\r\n {{'LISTS.READ_MORE'|translate}}\r\n <a [href]=\"artfakta\">{{'LISTS.LIST_CONTENT'|translate}}</a>\r\n </adb-filter-section>\r\n }\r\n @if(filters.showDatasets){\r\n <adb-filter-section [count]=\"dataSetCount\" titleResource=\"DATASET.DATASETS\">\r\n @if (form.get('ds')) {\r\n <div formArrayName=\"ds\">\r\n @for (item of dsControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'ds-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'ds-' + item.value.id\" class=\"form-check-label\">{{ 'PROVIDERS.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n }\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n @if (inline) {\r\n <a class=\"btn btn-secondary\" [routerLink]=\"[]\">\r\n {{'CANCEL'|translate}}\r\n </a>\r\n }\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"form.invalid||form.pristine\">{{'FILTER'|translate}}</button>\r\n </div>\r\n</form>\r\n}\r\n", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: AdbDatePickerDirective, selector: "input[adbDatepicker]", inputs: ["format", "toLeft", "settings"], outputs: ["adbBlur"] }, { kind: "component", type: FilterSectionComponent, selector: "adb-filter-section", inputs: ["titleResource", "helpResource", "count", "expanded", "lazy"] }, { kind: "component", type: AdbAreaPickerComponent, selector: "adb-area-picker", inputs: ["placeholder", "useObject", "prefill"] }, { kind: "component", type: AdbTaxonPickerComponent, selector: "adb-taxon-picker", inputs: ["placeholder", "useObject", "prefill"] }, { kind: "component", type: PolygonDrawerInput, selector: "adb-polygon-drawer" }, { kind: "component", type: TreeviewComponent, selector: "app-treeview", inputs: ["nodes"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
3540
|
+
}
|
|
3541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapFilters, decorators: [{
|
|
3542
|
+
type: Component,
|
|
3543
|
+
args: [{ selector: 'adb-map-filters', standalone: false, template: "@if(form){\r\n<form [formGroup]=\"form\" class=\"form mb-3\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <adb-filter-section titleResource=\"TAXON.SPECIES\" [expanded]=\"true\">\r\n @if(filters.showTaxon&&!hasTaxonInUrlParameter){\r\n <div class=\"mb-3\">\r\n <label for=\"species\">{{'TAXON.SPECIES_SINGULAR'|translate}}</label>\r\n <adb-taxon-picker formControlName=\"taxonId\" id=\"species\"></adb-taxon-picker>\r\n </div>\r\n }\r\n </adb-filter-section>\r\n @if(filters.showTime){\r\n <adb-filter-section [count]=\"periodCount\" titleResource=\"OBSERVATION.PERIOD\">\r\n <div class=\"mb-1\">\r\n <select class=\"form-select\" formControlName=\"period\" id=\"period\">\r\n <option value=\"1\">{{thisYear|date:'yyyy'}}</option>\r\n <option value=\"2\">{{lastYear|date:'yyyy'}}</option>\r\n <option value=\"3\">{{'OBSERVATION.ALL_YEAR'|translate}}</option>\r\n <option value=\"4\">{{'OBSERVATION.LAST_5_YEAR'|translate}}</option>\r\n <option value=\"5\">{{'OBSERVATION.LAST_25_YEAR'|translate}}</option>\r\n <option value=\"6\">{{'OBSERVATION.CUSTOMIZED'|translate}}</option>\r\n </select>\r\n </div>\r\n @if (form.value?.period==='6') {\r\n <div class=\"mb-2\">\r\n <label for=\"startAt\">{{'FROM' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"startAt\" formControlName=\"startAt\" [settings]=\"dateConfig\">\r\n </div>\r\n <div class=\"mb-2\">\r\n <label for=\"endAt\">{{'TO' |translate}}</label>\r\n <input adbDatepicker type=\"text\" class=\"form-control datepicker\" id=\"endAt\" formControlName=\"endAt\" [settings]=\"dateConfig\">\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showArea){\r\n <adb-filter-section [count]=\"areaCount\" titleResource=\"GEOGRAPHY\" [lazy]=\"true\">\r\n <ng-template>\r\n <div role=\"tablist\" aria-label=\"{{'AREA'|translate}}\" class=\"d-flex gap-2 justify-content-end\">\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"!hasOwnArea\" (click)=\"hasOwnArea=false\" role=\"tab\" id=\"tab-select\" aria-selected=\"{{!hasOwnArea}}\" aria-controls=\"panel-select\">\r\n {{'CHOOSE'|translate}}\r\n </button>\r\n <button class=\"btn btn-link p-0\" [class.text-dark]=\"hasOwnArea\"(click)=\"hasOwnArea=true\" role=\"tab\" id=\"tab-draw\" aria-selected=\"false\" aria-controls=\"panel-draw\">\r\n {{'OWN_AREA'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"mb-2\">\r\n @if(hasOwnArea){\r\n <div class=\"pt-1\" role=\"tabpanel\" id=\"area-draw\" aria-labelledby=\"tab-draw\">\r\n <div>\r\n <adb-polygon-drawer formControlName=\"geo\"></adb-polygon-drawer>\r\n </div>\r\n </div>\r\n }@else{\r\n <div role=\"tabpanel\" id=\"area-select\" aria-labelledby=\"tab-select\">\r\n <div formArrayName=\"areas\">\r\n <div class=\"d-flex align-items-end mb-1\">\r\n <label>{{'AREAS'|translate}}</label>\r\n <button class=\"ms-auto text-dark btn btn-sm btn-secondary\" attr.aria-label=\"{{'OBSERVATION.ADD_AREA'|translate}}\" title=\"{{'OBSERVATION.ADD_AREA'|translate}}\" type=\"button\" (click)=\"addArea()\">\r\n <span class=\"fas fa-plus\"></span>\r\n </button>\r\n </div>\r\n @for (ctrl of areasArray.controls; track ctrl; let i = $index; let last = $last) {\r\n <div class=\"d-flex mb-2\">\r\n <adb-area-picker id=\"area-{{i}}\" [formControlName]=\"i\"></adb-area-picker>\r\n @if(areasArray.length>1){\r\n <button class=\"btn btn-secondary ms-1\" attr.aria-label=\"{{'DELETE'|translate}}\" title=\"{{'DELETE'|translate}}\" type=\"button\" (click)=\"removeArea(i)\">\r\n <span class=\"fas fa-trash\"></span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n </adb-filter-section>\r\n }\r\n @if(form.get('taxonId')){\r\n @if(filters.showRedList){\r\n <adb-filter-section [count]=\"redListCount\" titleResource=\"REDLIST.REDLIST_2025\">\r\n @if (form.get('rlc')) {\r\n <div formArrayName=\"rlc\">\r\n @for (item of rlcControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'rlc-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'rlc-' + item.value.id\" class=\"form-check-label\">{{ 'REDLIST_CATEGORIES_LIST_ID.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showRiskList){\r\n <adb-filter-section [count]=\"riskListCount\" titleResource=\"ALIEN.ALIEN_SPECIES_SHORT\">\r\n @if(form.get('rc')){\r\n <div formArrayName=\"rc\">\r\n @for ( item of rcControls; track item.id; let i = $index ) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'rc-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'rc-' + item.value.id\" class=\"form-check-label\">{{ 'RISKLIST_CATEGORIES.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n @if(filters.showTaxaLists){\r\n <adb-filter-section [count]=\"taxonListCount\" titleResource=\"LISTS.NATURE_CONSERVATION_LISTS\">\r\n <div class=\"mb-3\">\r\n <app-treeview formControlName=\"tl\" [nodes]=\"taxaLists\"></app-treeview>\r\n </div>\r\n {{'LISTS.READ_MORE'|translate}}\r\n <a [href]=\"artfakta\">{{'LISTS.LIST_CONTENT'|translate}}</a>\r\n </adb-filter-section>\r\n }\r\n @if(filters.showDatasets){\r\n <adb-filter-section [count]=\"dataSetCount\" titleResource=\"DATASET.DATASETS\">\r\n @if (form.get('ds')) {\r\n <div formArrayName=\"ds\">\r\n @for (item of dsControls; track item; let i = $index) {\r\n <div [formGroupName]=\"i\" class=\"form-check\">\r\n <input type=\"checkbox\" formControlName=\"selected\" [id]=\"'ds-' + item.value.id\" class=\"form-check-input\">\r\n <label [for]=\"'ds-' + item.value.id\" class=\"form-check-label\">{{ 'PROVIDERS.'+item.value.id |translate }}</label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </adb-filter-section>\r\n }\r\n }\r\n </div>\r\n <div class=\"d-flex justify-content-end gap-2\">\r\n @if (inline) {\r\n <a class=\"btn btn-secondary\" [routerLink]=\"[]\">\r\n {{'CANCEL'|translate}}\r\n </a>\r\n }\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"form.invalid||form.pristine\">{{'FILTER'|translate}}</button>\r\n </div>\r\n</form>\r\n}\r\n" }]
|
|
3544
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: AdbMapConfigService }, { type: i1$2.HttpClient }, { type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { inline: [{
|
|
3545
|
+
type: Input
|
|
3546
|
+
}] } });
|
|
3547
|
+
|
|
3548
|
+
class AdbMapModule {
|
|
3549
|
+
static forRoot(config) {
|
|
3550
|
+
return {
|
|
3551
|
+
ngModule: AdbMapModule,
|
|
3552
|
+
providers: [
|
|
3553
|
+
{
|
|
3554
|
+
provide: ADB_MAP_CONFIG,
|
|
3555
|
+
useValue: config
|
|
3556
|
+
}
|
|
3557
|
+
]
|
|
3558
|
+
};
|
|
3559
|
+
}
|
|
3560
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3561
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: AdbMapModule, declarations: [AdbObsMapComponent,
|
|
3562
|
+
PolygonDrawerInput,
|
|
3563
|
+
AdbMapFilters,
|
|
3564
|
+
TreeviewComponent], imports: [CommonModule,
|
|
3565
|
+
FormsModule,
|
|
3566
|
+
RouterModule,
|
|
3567
|
+
ReactiveFormsModule,
|
|
3568
|
+
AdbDatePickerModule, i1$1.TranslateModule, AdbPipesModule,
|
|
3569
|
+
AdbFilterSectionModule,
|
|
3570
|
+
AdbPickerModule], exports: [AdbObsMapComponent,
|
|
3571
|
+
PolygonDrawerInput,
|
|
3572
|
+
AdbMapFilters] }); }
|
|
3573
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapModule, providers: [
|
|
3574
|
+
AdbMapConfigService
|
|
3575
|
+
], imports: [CommonModule,
|
|
3576
|
+
FormsModule,
|
|
3577
|
+
RouterModule,
|
|
3578
|
+
ReactiveFormsModule,
|
|
3579
|
+
AdbDatePickerModule,
|
|
3580
|
+
TranslateModule.forChild(),
|
|
3581
|
+
AdbPipesModule,
|
|
3582
|
+
AdbFilterSectionModule,
|
|
3583
|
+
AdbPickerModule] }); }
|
|
3584
|
+
}
|
|
3585
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AdbMapModule, decorators: [{
|
|
3586
|
+
type: NgModule,
|
|
3587
|
+
args: [{
|
|
3588
|
+
imports: [
|
|
3589
|
+
CommonModule,
|
|
3590
|
+
FormsModule,
|
|
3591
|
+
RouterModule,
|
|
3592
|
+
ReactiveFormsModule,
|
|
3593
|
+
AdbDatePickerModule,
|
|
3594
|
+
TranslateModule.forChild(),
|
|
3595
|
+
AdbPipesModule,
|
|
3596
|
+
AdbFilterSectionModule,
|
|
3597
|
+
AdbPickerModule
|
|
3598
|
+
],
|
|
3599
|
+
declarations: [
|
|
3600
|
+
AdbObsMapComponent,
|
|
3601
|
+
PolygonDrawerInput,
|
|
3602
|
+
AdbMapFilters,
|
|
3603
|
+
TreeviewComponent,
|
|
3604
|
+
// Stats,
|
|
3605
|
+
// AdbGeojsonPolygonDirective
|
|
3606
|
+
],
|
|
3607
|
+
exports: [
|
|
3608
|
+
AdbObsMapComponent,
|
|
3609
|
+
PolygonDrawerInput,
|
|
3610
|
+
AdbMapFilters,
|
|
3611
|
+
// Stats,
|
|
3612
|
+
// AdbGeojsonPolygonDirective
|
|
3613
|
+
],
|
|
3614
|
+
providers: [
|
|
3615
|
+
AdbMapConfigService
|
|
3616
|
+
]
|
|
3617
|
+
}]
|
|
3618
|
+
}] });
|
|
3619
|
+
|
|
2535
3620
|
/*
|
|
2536
3621
|
* Public API Surface of artdata-shared
|
|
2537
3622
|
*/
|
|
@@ -2540,5 +3625,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
|
|
|
2540
3625
|
* Generated bundle index. Do not edit.
|
|
2541
3626
|
*/
|
|
2542
3627
|
|
|
2543
|
-
export {
|
|
3628
|
+
export { ADB_MAP_CONFIG, ADB_PICKER_CONFIG, ADB_USER_SERVICE_CONFIG, AdbAreaPickerComponent, AdbBaseMap, AdbButtonsModule, AdbConfirmModal, AdbDatePickerComponent, AdbDatePickerDirective, AdbDatePickerModule, AdbDirectivesModule, AdbDropdown2Directive, AdbDropdownDirective, AdbDropdownModule, AdbFilterSectionModule, AdbHelpButtonComponent, AdbMapConfigService, AdbMapFilterType, AdbMapFilters, AdbMapModule, AdbModalModule, AdbModalService, AdbObsMapComponent, AdbPagersModule, AdbPickerConfigService, AdbPickerModule, AdbPipesModule, AdbRichEditorComponent, AdbRichEditorModule, AdbTaxonPickerComponent, AdbToast, AdbToastModule, AdbToastService, AdbUserInterceptor, AdbUserModule, AdbUserService, ArtportalenFooterComponent, ArtportalenNavComponent, ArtportalenNavModule, AuthCallbackComponent, ClickOutsideDirective, DEFAULT_ADB_USER_SERVICE_CONFIG, EmptyValuePipe, EnvironmentService, FileUploadDirective, FilterSectionComponent, FocusDirective, GenericPickerComponent, HighlightHtmlPipe, HighlightPipe, ImageLoaderDirective, InfiniteScrollComponent, LocaleDatePipe, NumberSpacingPipe, PagerComponent, PagerInlineComponent, PolygonDrawerInput, RedListBadgeClassDirective, RichTextComponent, RiskClassDirective, RouterLinkActiveFragmentDirective, ToastType, UserModuleConstants, VisibleFilters };
|
|
2544
3629
|
//# sourceMappingURL=adb-shared.mjs.map
|