geonetwork-ui 2.3.0-dev.139106e0 → 2.3.0-dev.287bf00c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
- package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +19 -7
- package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +53 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +20 -6
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +16 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +22 -7
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +52 -17
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
- package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +34 -7
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -2
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +62 -0
- package/esm2022/libs/ui/inputs/src/index.mjs +15 -15
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +17 -8
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
- package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +19 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +11 -9
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
- package/esm2022/translations/de.json +26 -0
- package/esm2022/translations/en.json +26 -0
- package/esm2022/translations/es.json +26 -0
- package/esm2022/translations/fr.json +26 -0
- package/esm2022/translations/it.json +26 -0
- package/esm2022/translations/nl.json +26 -0
- package/esm2022/translations/pt.json +26 -0
- package/fesm2022/geonetwork-ui.mjs +1436 -717
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
- package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
- package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +3 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +4 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +14 -4
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +4 -2
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +16 -14
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +22 -0
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +14 -14
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +4 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -35
- package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +34 -7
- package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
- package/src/libs/common/fixtures/src/index.ts +8 -6
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +3 -3
- package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +68 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +33 -33
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +16 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +15 -0
- package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +49 -8
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +81 -24
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
- package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +1 -1
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +40 -4
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +63 -0
- package/src/libs/ui/inputs/src/index.ts +14 -14
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +13 -0
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +16 -1
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
- package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
- package/translations/de.json +26 -0
- package/translations/en.json +26 -0
- package/translations/es.json +26 -0
- package/translations/fr.json +26 -0
- package/translations/it.json +26 -0
- package/translations/nl.json +26 -0
- package/translations/pt.json +26 -0
- package/translations/sk.json +26 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, TemplateRef, Host, inject } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, TemplateRef, Host, Pipe, inject } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, exhaustMap, mergeMap as mergeMap$1, EMPTY, withLatestFrom as withLatestFrom$1, filter as filter$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -44,28 +44,27 @@ import { bbox } from 'ol/loadingstrategy';
|
|
|
44
44
|
import WMTS from 'ol/source/WMTS';
|
|
45
45
|
import * as i2$3 from '@angular/material/tabs';
|
|
46
46
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
47
|
import * as i2$1 from '@angular/forms';
|
|
50
48
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
49
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
50
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
51
|
+
import * as i5 from '@angular/material/core';
|
|
56
52
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
57
|
-
import * as
|
|
58
|
-
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/material/progress-spinner';
|
|
60
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
53
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
62
54
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as
|
|
55
|
+
import * as i5$1 from 'ngx-chips';
|
|
56
|
+
import { TagInputModule } from 'ngx-chips';
|
|
57
|
+
import * as i3 from '@angular/material/tooltip';
|
|
64
58
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/
|
|
66
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
59
|
+
import * as i2$2 from '@angular/material/datepicker';
|
|
68
60
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
61
|
+
import * as i3$1 from 'ngx-dropzone';
|
|
62
|
+
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
63
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
64
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
65
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
66
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
67
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
69
68
|
import { MatInputModule } from '@angular/material/input';
|
|
70
69
|
import * as i1$7 from '@angular/router';
|
|
71
70
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -73,6 +72,8 @@ import Duration from 'duration-relativetimeformat';
|
|
|
73
72
|
import * as basicLightbox from 'basiclightbox';
|
|
74
73
|
import { marked } from 'marked';
|
|
75
74
|
import EmblaCarousel from 'embla-carousel';
|
|
75
|
+
import { formatDistance } from 'date-fns';
|
|
76
|
+
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
76
77
|
import * as i1$8 from '@ngrx/effects';
|
|
77
78
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
78
79
|
import tippy from 'tippy.js';
|
|
@@ -87,14 +88,14 @@ import * as i2$4 from '@angular/material/sort';
|
|
|
87
88
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
88
89
|
import * as i1$9 from '@angular/material/table';
|
|
89
90
|
import { MatTableModule } from '@angular/material/table';
|
|
90
|
-
import * as i3$
|
|
91
|
+
import * as i3$2 from 'ng-table-virtual-scroll';
|
|
91
92
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
92
93
|
import * as Papa from 'papaparse';
|
|
93
94
|
import parseDate from 'date-fns/parse';
|
|
94
95
|
import parseIsoDate from 'date-fns/parseISO';
|
|
95
96
|
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
96
97
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
97
|
-
import * as i3$
|
|
98
|
+
import * as i3$3 from '@ngrx/router-store';
|
|
98
99
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
99
100
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
100
101
|
|
|
@@ -17271,6 +17272,7 @@ var next$6 = "weiter";
|
|
|
17271
17272
|
var previous$6 = "zurück";
|
|
17272
17273
|
var records$6 = "Datensätze";
|
|
17273
17274
|
var de = {
|
|
17275
|
+
"button.login": "",
|
|
17274
17276
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
17275
17277
|
"catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
17276
17278
|
"chart.aggregation.average": "Durchschnitt",
|
|
@@ -17416,6 +17418,17 @@ var de = {
|
|
|
17416
17418
|
"downloads.format.unknown": "unbekannt",
|
|
17417
17419
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17418
17420
|
dropFile: dropFile$6,
|
|
17421
|
+
"editor.record.form.license": "Lizenz",
|
|
17422
|
+
"editor.record.form.license.cc-by": "",
|
|
17423
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17424
|
+
"editor.record.form.license.cc-zero": "",
|
|
17425
|
+
"editor.record.form.license.etalab": "",
|
|
17426
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17427
|
+
"editor.record.form.license.odbl": "",
|
|
17428
|
+
"editor.record.form.license.odc-by": "",
|
|
17429
|
+
"editor.record.form.license.pddl": "",
|
|
17430
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17431
|
+
"editor.record.form.resourceUpdated": "",
|
|
17419
17432
|
"editor.record.loadError.body": "",
|
|
17420
17433
|
"editor.record.loadError.closeMessage": "",
|
|
17421
17434
|
"editor.record.loadError.title": "",
|
|
@@ -17550,6 +17563,14 @@ var de = {
|
|
|
17550
17563
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17551
17564
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17552
17565
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17566
|
+
"record.metadata.userFeedbacks": "",
|
|
17567
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17568
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17569
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17570
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17571
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17572
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17573
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17553
17574
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17554
17575
|
"record.metadata.status": "Status",
|
|
17555
17576
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17623,6 +17644,12 @@ var de = {
|
|
|
17623
17644
|
"table.loading.data": "Daten werden geladen...",
|
|
17624
17645
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17625
17646
|
"table.select.data": "Datenquelle",
|
|
17647
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
17648
|
+
"timeSincePipe.minutesAgo": "",
|
|
17649
|
+
"timeSincePipe.hoursAgo": "",
|
|
17650
|
+
"timeSincePipe.daysAgo": "",
|
|
17651
|
+
"timeSincePipe.monthsAgo": "",
|
|
17652
|
+
"timeSincePipe.yearsAgo": "",
|
|
17626
17653
|
"tooltip.html.copy": "HTML kopieren",
|
|
17627
17654
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17628
17655
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17641,6 +17668,7 @@ var next$5 = "next";
|
|
|
17641
17668
|
var previous$5 = "previous";
|
|
17642
17669
|
var records$5 = "records";
|
|
17643
17670
|
var en = {
|
|
17671
|
+
"button.login": "Log in",
|
|
17644
17672
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
17645
17673
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
17646
17674
|
"chart.aggregation.average": "average",
|
|
@@ -17786,6 +17814,17 @@ var en = {
|
|
|
17786
17814
|
"downloads.format.unknown": "unknown",
|
|
17787
17815
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17788
17816
|
dropFile: dropFile$5,
|
|
17817
|
+
"editor.record.form.license": "License",
|
|
17818
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17819
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17820
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17821
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17822
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17823
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17824
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17825
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17826
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17827
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17789
17828
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17790
17829
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17791
17830
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17920,6 +17959,14 @@ var en = {
|
|
|
17920
17959
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17921
17960
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17922
17961
|
"record.metadata.related": "Related records",
|
|
17962
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17963
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17964
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17965
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17966
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17967
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17968
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17969
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17923
17970
|
"record.metadata.sheet": "Original metadata",
|
|
17924
17971
|
"record.metadata.status": "Status",
|
|
17925
17972
|
"record.metadata.technical": "Technical information",
|
|
@@ -17993,6 +18040,12 @@ var en = {
|
|
|
17993
18040
|
"table.loading.data": "Loading data...",
|
|
17994
18041
|
"table.object.count": "objects in this dataset",
|
|
17995
18042
|
"table.select.data": "Data source",
|
|
18043
|
+
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18044
|
+
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18045
|
+
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18046
|
+
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18047
|
+
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18048
|
+
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
17996
18049
|
"tooltip.html.copy": "Copy HTML",
|
|
17997
18050
|
"tooltip.id.copy": "Copy unique identifier",
|
|
17998
18051
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18011,6 +18064,7 @@ var next$4 = "";
|
|
|
18011
18064
|
var previous$4 = "";
|
|
18012
18065
|
var records$4 = "";
|
|
18013
18066
|
var es = {
|
|
18067
|
+
"button.login": "",
|
|
18014
18068
|
"catalog.figures.datasets": "conjuntos de datos",
|
|
18015
18069
|
"catalog.figures.organisations": "organizaciones",
|
|
18016
18070
|
"chart.aggregation.average": "promedio",
|
|
@@ -18156,6 +18210,17 @@ var es = {
|
|
|
18156
18210
|
"downloads.format.unknown": "",
|
|
18157
18211
|
"downloads.wfs.featuretype.not.found": "",
|
|
18158
18212
|
dropFile: dropFile$4,
|
|
18213
|
+
"editor.record.form.license": "",
|
|
18214
|
+
"editor.record.form.license.cc-by": "",
|
|
18215
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18216
|
+
"editor.record.form.license.cc-zero": "",
|
|
18217
|
+
"editor.record.form.license.etalab": "",
|
|
18218
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18219
|
+
"editor.record.form.license.odbl": "",
|
|
18220
|
+
"editor.record.form.license.odc-by": "",
|
|
18221
|
+
"editor.record.form.license.pddl": "",
|
|
18222
|
+
"editor.record.form.license.unknown": "",
|
|
18223
|
+
"editor.record.form.resourceUpdated": "",
|
|
18159
18224
|
"editor.record.loadError.body": "",
|
|
18160
18225
|
"editor.record.loadError.closeMessage": "",
|
|
18161
18226
|
"editor.record.loadError.title": "",
|
|
@@ -18290,6 +18355,14 @@ var es = {
|
|
|
18290
18355
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18291
18356
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18292
18357
|
"record.metadata.related": "",
|
|
18358
|
+
"record.metadata.userFeedbacks": "",
|
|
18359
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18360
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18361
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18362
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18363
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18364
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18365
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18293
18366
|
"record.metadata.sheet": "",
|
|
18294
18367
|
"record.metadata.status": "",
|
|
18295
18368
|
"record.metadata.technical": "",
|
|
@@ -18363,6 +18436,12 @@ var es = {
|
|
|
18363
18436
|
"table.loading.data": "",
|
|
18364
18437
|
"table.object.count": "",
|
|
18365
18438
|
"table.select.data": "",
|
|
18439
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
18440
|
+
"timeSincePipe.minutesAgo": "",
|
|
18441
|
+
"timeSincePipe.hoursAgo": "",
|
|
18442
|
+
"timeSincePipe.daysAgo": "",
|
|
18443
|
+
"timeSincePipe.monthsAgo": "",
|
|
18444
|
+
"timeSincePipe.yearsAgo": "",
|
|
18366
18445
|
"tooltip.html.copy": "",
|
|
18367
18446
|
"tooltip.id.copy": "",
|
|
18368
18447
|
"tooltip.url.copy": "",
|
|
@@ -18381,6 +18460,7 @@ var next$3 = "suivant";
|
|
|
18381
18460
|
var previous$3 = "précédent";
|
|
18382
18461
|
var records$3 = "enregistrements";
|
|
18383
18462
|
var fr = {
|
|
18463
|
+
"button.login": "Se connecter",
|
|
18384
18464
|
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
|
|
18385
18465
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
18386
18466
|
"chart.aggregation.average": "moyenne",
|
|
@@ -18526,6 +18606,17 @@ var fr = {
|
|
|
18526
18606
|
"downloads.format.unknown": "inconnu",
|
|
18527
18607
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18528
18608
|
dropFile: dropFile$3,
|
|
18609
|
+
"editor.record.form.license": "Licence",
|
|
18610
|
+
"editor.record.form.license.cc-by": "",
|
|
18611
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18612
|
+
"editor.record.form.license.cc-zero": "",
|
|
18613
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18614
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18615
|
+
"editor.record.form.license.odbl": "",
|
|
18616
|
+
"editor.record.form.license.odc-by": "",
|
|
18617
|
+
"editor.record.form.license.pddl": "",
|
|
18618
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18619
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18529
18620
|
"editor.record.loadError.body": "",
|
|
18530
18621
|
"editor.record.loadError.closeMessage": "",
|
|
18531
18622
|
"editor.record.loadError.title": "",
|
|
@@ -18660,6 +18751,14 @@ var fr = {
|
|
|
18660
18751
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18661
18752
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18662
18753
|
"record.metadata.related": "Voir aussi",
|
|
18754
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18755
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18756
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18757
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18758
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18759
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18760
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18761
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18663
18762
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18664
18763
|
"record.metadata.status": "Statut",
|
|
18665
18764
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18733,6 +18832,12 @@ var fr = {
|
|
|
18733
18832
|
"table.loading.data": "Chargement des données...",
|
|
18734
18833
|
"table.object.count": "enregistrements dans ces données",
|
|
18735
18834
|
"table.select.data": "Source de données",
|
|
18835
|
+
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18836
|
+
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18837
|
+
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18838
|
+
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18839
|
+
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18840
|
+
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18736
18841
|
"tooltip.html.copy": "Copier le HTML",
|
|
18737
18842
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18738
18843
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18751,6 +18856,7 @@ var next$2 = "successivo";
|
|
|
18751
18856
|
var previous$2 = "precedente";
|
|
18752
18857
|
var records$2 = "record";
|
|
18753
18858
|
var it = {
|
|
18859
|
+
"button.login": "",
|
|
18754
18860
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
18755
18861
|
"catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
|
|
18756
18862
|
"chart.aggregation.average": "media",
|
|
@@ -18896,6 +19002,17 @@ var it = {
|
|
|
18896
19002
|
"downloads.format.unknown": "sconosciuto",
|
|
18897
19003
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18898
19004
|
dropFile: dropFile$2,
|
|
19005
|
+
"editor.record.form.license": "Licenza",
|
|
19006
|
+
"editor.record.form.license.cc-by": "",
|
|
19007
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19008
|
+
"editor.record.form.license.cc-zero": "",
|
|
19009
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
19010
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
19011
|
+
"editor.record.form.license.odbl": "",
|
|
19012
|
+
"editor.record.form.license.odc-by": "",
|
|
19013
|
+
"editor.record.form.license.pddl": "",
|
|
19014
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19015
|
+
"editor.record.form.resourceUpdated": "",
|
|
18899
19016
|
"editor.record.loadError.body": "",
|
|
18900
19017
|
"editor.record.loadError.closeMessage": "",
|
|
18901
19018
|
"editor.record.loadError.title": "",
|
|
@@ -19030,6 +19147,14 @@ var it = {
|
|
|
19030
19147
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19031
19148
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19032
19149
|
"record.metadata.related": "Vedi anche",
|
|
19150
|
+
"record.metadata.userFeedbacks": "",
|
|
19151
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19152
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19153
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19154
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19155
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19156
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19157
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19033
19158
|
"record.metadata.sheet": "Origine del metadata",
|
|
19034
19159
|
"record.metadata.status": "Stato",
|
|
19035
19160
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19103,6 +19228,12 @@ var it = {
|
|
|
19103
19228
|
"table.loading.data": "Caricamento dei dati...",
|
|
19104
19229
|
"table.object.count": "record in questi dati",
|
|
19105
19230
|
"table.select.data": "Sorgente dati",
|
|
19231
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19232
|
+
"timeSincePipe.minutesAgo": "",
|
|
19233
|
+
"timeSincePipe.hoursAgo": "",
|
|
19234
|
+
"timeSincePipe.daysAgo": "",
|
|
19235
|
+
"timeSincePipe.monthsAgo": "",
|
|
19236
|
+
"timeSincePipe.yearsAgo": "",
|
|
19106
19237
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19107
19238
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19108
19239
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19121,6 +19252,7 @@ var next$1 = "";
|
|
|
19121
19252
|
var previous$1 = "";
|
|
19122
19253
|
var records$1 = "";
|
|
19123
19254
|
var nl = {
|
|
19255
|
+
"button.login": "",
|
|
19124
19256
|
"catalog.figures.datasets": "datasets",
|
|
19125
19257
|
"catalog.figures.organisations": "organisaties",
|
|
19126
19258
|
"chart.aggregation.average": "gemiddelde",
|
|
@@ -19266,6 +19398,17 @@ var nl = {
|
|
|
19266
19398
|
"downloads.format.unknown": "",
|
|
19267
19399
|
"downloads.wfs.featuretype.not.found": "",
|
|
19268
19400
|
dropFile: dropFile$1,
|
|
19401
|
+
"editor.record.form.license": "",
|
|
19402
|
+
"editor.record.form.license.cc-by": "",
|
|
19403
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19404
|
+
"editor.record.form.license.cc-zero": "",
|
|
19405
|
+
"editor.record.form.license.etalab": "",
|
|
19406
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19407
|
+
"editor.record.form.license.odbl": "",
|
|
19408
|
+
"editor.record.form.license.odc-by": "",
|
|
19409
|
+
"editor.record.form.license.pddl": "",
|
|
19410
|
+
"editor.record.form.license.unknown": "",
|
|
19411
|
+
"editor.record.form.resourceUpdated": "",
|
|
19269
19412
|
"editor.record.loadError.body": "",
|
|
19270
19413
|
"editor.record.loadError.closeMessage": "",
|
|
19271
19414
|
"editor.record.loadError.title": "",
|
|
@@ -19400,6 +19543,14 @@ var nl = {
|
|
|
19400
19543
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19401
19544
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19402
19545
|
"record.metadata.related": "",
|
|
19546
|
+
"record.metadata.userFeedbacks": "",
|
|
19547
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19548
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19549
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19550
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19551
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19552
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19553
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19403
19554
|
"record.metadata.sheet": "",
|
|
19404
19555
|
"record.metadata.status": "",
|
|
19405
19556
|
"record.metadata.technical": "",
|
|
@@ -19473,6 +19624,12 @@ var nl = {
|
|
|
19473
19624
|
"table.loading.data": "",
|
|
19474
19625
|
"table.object.count": "",
|
|
19475
19626
|
"table.select.data": "",
|
|
19627
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19628
|
+
"timeSincePipe.minutesAgo": "",
|
|
19629
|
+
"timeSincePipe.hoursAgo": "",
|
|
19630
|
+
"timeSincePipe.daysAgo": "",
|
|
19631
|
+
"timeSincePipe.monthsAgo": "",
|
|
19632
|
+
"timeSincePipe.yearsAgo": "",
|
|
19476
19633
|
"tooltip.html.copy": "",
|
|
19477
19634
|
"tooltip.id.copy": "",
|
|
19478
19635
|
"tooltip.url.copy": "",
|
|
@@ -19491,6 +19648,7 @@ var next = "";
|
|
|
19491
19648
|
var previous = "";
|
|
19492
19649
|
var records = "";
|
|
19493
19650
|
var pt = {
|
|
19651
|
+
"button.login": "",
|
|
19494
19652
|
"catalog.figures.datasets": "conjuntos de dados",
|
|
19495
19653
|
"catalog.figures.organisations": "organizações",
|
|
19496
19654
|
"chart.aggregation.average": "média",
|
|
@@ -19636,6 +19794,17 @@ var pt = {
|
|
|
19636
19794
|
"downloads.format.unknown": "",
|
|
19637
19795
|
"downloads.wfs.featuretype.not.found": "",
|
|
19638
19796
|
dropFile: dropFile,
|
|
19797
|
+
"editor.record.form.license": "",
|
|
19798
|
+
"editor.record.form.license.cc-by": "",
|
|
19799
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19800
|
+
"editor.record.form.license.cc-zero": "",
|
|
19801
|
+
"editor.record.form.license.etalab": "",
|
|
19802
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19803
|
+
"editor.record.form.license.odbl": "",
|
|
19804
|
+
"editor.record.form.license.odc-by": "",
|
|
19805
|
+
"editor.record.form.license.pddl": "",
|
|
19806
|
+
"editor.record.form.license.unknown": "",
|
|
19807
|
+
"editor.record.form.resourceUpdated": "",
|
|
19639
19808
|
"editor.record.loadError.body": "",
|
|
19640
19809
|
"editor.record.loadError.closeMessage": "",
|
|
19641
19810
|
"editor.record.loadError.title": "",
|
|
@@ -19770,6 +19939,14 @@ var pt = {
|
|
|
19770
19939
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19771
19940
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19772
19941
|
"record.metadata.related": "",
|
|
19942
|
+
"record.metadata.userFeedbacks": "",
|
|
19943
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19944
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19945
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19946
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19947
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19948
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19949
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19773
19950
|
"record.metadata.sheet": "",
|
|
19774
19951
|
"record.metadata.status": "",
|
|
19775
19952
|
"record.metadata.technical": "",
|
|
@@ -19843,6 +20020,12 @@ var pt = {
|
|
|
19843
20020
|
"table.loading.data": "",
|
|
19844
20021
|
"table.object.count": "",
|
|
19845
20022
|
"table.select.data": "",
|
|
20023
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
20024
|
+
"timeSincePipe.minutesAgo": "",
|
|
20025
|
+
"timeSincePipe.hoursAgo": "",
|
|
20026
|
+
"timeSincePipe.daysAgo": "",
|
|
20027
|
+
"timeSincePipe.monthsAgo": "",
|
|
20028
|
+
"timeSincePipe.yearsAgo": "",
|
|
19846
20029
|
"tooltip.html.copy": "",
|
|
19847
20030
|
"tooltip.id.copy": "",
|
|
19848
20031
|
"tooltip.url.copy": "",
|
|
@@ -21166,6 +21349,16 @@ class GravatarService {
|
|
|
21166
21349
|
getProfileIcon(hash) {
|
|
21167
21350
|
return this.identicon$.pipe(map$1((identicon) => identicon || this.GRAVATAR_IDENTICON), map$1((identicon) => `${this.GRAVATAR_URL}${hash}?d=${identicon}`));
|
|
21168
21351
|
}
|
|
21352
|
+
async getProfileIconUrl(userId) {
|
|
21353
|
+
let iconUrl = '';
|
|
21354
|
+
try {
|
|
21355
|
+
iconUrl = await firstValueFrom(this.getProfileIcon(userId));
|
|
21356
|
+
}
|
|
21357
|
+
catch (error) {
|
|
21358
|
+
return '';
|
|
21359
|
+
}
|
|
21360
|
+
return iconUrl;
|
|
21361
|
+
}
|
|
21169
21362
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, deps: [{ token: Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21170
21363
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, providedIn: 'root' }); }
|
|
21171
21364
|
}
|
|
@@ -21317,6 +21510,39 @@ class Gn4PlatformMapper {
|
|
|
21317
21510
|
};
|
|
21318
21511
|
});
|
|
21319
21512
|
}
|
|
21513
|
+
userFeedbacksFromApi(userFeedback) {
|
|
21514
|
+
return {
|
|
21515
|
+
uuid: userFeedback.uuid,
|
|
21516
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21517
|
+
comment: userFeedback.comment,
|
|
21518
|
+
authorUserId: userFeedback.authorUserId.toString(),
|
|
21519
|
+
authorName: userFeedback.authorName,
|
|
21520
|
+
authorEmail: userFeedback.authorEmail,
|
|
21521
|
+
published: userFeedback.published,
|
|
21522
|
+
parentUuid: userFeedback.parentUuid ?? undefined,
|
|
21523
|
+
date: new Date(userFeedback.date),
|
|
21524
|
+
};
|
|
21525
|
+
}
|
|
21526
|
+
userFeedbacksToApi(userFeedback) {
|
|
21527
|
+
return {
|
|
21528
|
+
uuid: userFeedback.uuid,
|
|
21529
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21530
|
+
comment: userFeedback.comment,
|
|
21531
|
+
authorUserId: Number.parseInt(userFeedback.authorUserId),
|
|
21532
|
+
authorName: userFeedback.authorName,
|
|
21533
|
+
authorEmail: userFeedback.authorEmail,
|
|
21534
|
+
published: userFeedback.published,
|
|
21535
|
+
parentUuid: userFeedback.parentUuid,
|
|
21536
|
+
date: userFeedback.date.getTime().toString(),
|
|
21537
|
+
};
|
|
21538
|
+
}
|
|
21539
|
+
async createUserFeedbackViewModel(baseUserFeedback) {
|
|
21540
|
+
const userAvatarUrl = await this.avatarService.getProfileIconUrl(baseUserFeedback.authorUserId?.toString());
|
|
21541
|
+
return {
|
|
21542
|
+
...baseUserFeedback,
|
|
21543
|
+
avatarUrl: userAvatarUrl,
|
|
21544
|
+
};
|
|
21545
|
+
}
|
|
21320
21546
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformMapper, deps: [{ token: AvatarServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21321
21547
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformMapper }); }
|
|
21322
21548
|
}
|
|
@@ -21326,7 +21552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21326
21552
|
|
|
21327
21553
|
const minApiVersion = '4.2.2';
|
|
21328
21554
|
class Gn4PlatformService {
|
|
21329
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
21555
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService) {
|
|
21330
21556
|
this.siteApiService = siteApiService;
|
|
21331
21557
|
this.meApi = meApi;
|
|
21332
21558
|
this.usersApi = usersApi;
|
|
@@ -21334,6 +21560,7 @@ class Gn4PlatformService {
|
|
|
21334
21560
|
this.toolsApiService = toolsApiService;
|
|
21335
21561
|
this.registriesApiService = registriesApiService;
|
|
21336
21562
|
this.langService = langService;
|
|
21563
|
+
this.userfeedbackApiService = userfeedbackApiService;
|
|
21337
21564
|
this.type = 'GeoNetwork';
|
|
21338
21565
|
this.keyTranslations$ = this.toolsApiService
|
|
21339
21566
|
.getTranslationsPackage1('gnui')
|
|
@@ -21353,7 +21580,7 @@ class Gn4PlatformService {
|
|
|
21353
21580
|
*/
|
|
21354
21581
|
this.thesauri = {};
|
|
21355
21582
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
21356
|
-
this.
|
|
21583
|
+
this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
21357
21584
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
21358
21585
|
}
|
|
21359
21586
|
getType() {
|
|
@@ -21366,7 +21593,7 @@ class Gn4PlatformService {
|
|
|
21366
21593
|
return this.me$;
|
|
21367
21594
|
}
|
|
21368
21595
|
isAnonymous() {
|
|
21369
|
-
return this.
|
|
21596
|
+
return this.isUserAnonymous$;
|
|
21370
21597
|
}
|
|
21371
21598
|
getOrganizations() {
|
|
21372
21599
|
return undefined;
|
|
@@ -21402,12 +21629,23 @@ class Gn4PlatformService {
|
|
|
21402
21629
|
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
21403
21630
|
return this.thesauri[uri];
|
|
21404
21631
|
}
|
|
21405
|
-
|
|
21632
|
+
getUserFeedbacks(uuid) {
|
|
21633
|
+
return this.userfeedbackApiService
|
|
21634
|
+
.getUserComments(uuid)
|
|
21635
|
+
.pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)));
|
|
21636
|
+
}
|
|
21637
|
+
postUserFeedbacks(userFeedback) {
|
|
21638
|
+
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21639
|
+
return this.userfeedbackApiService
|
|
21640
|
+
.newUserFeedback(mappedUserFeedBack)
|
|
21641
|
+
.pipe(map$1(() => undefined));
|
|
21642
|
+
}
|
|
21643
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }, { token: UserfeedbackApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21406
21644
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
21407
21645
|
}
|
|
21408
21646
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
21409
21647
|
type: Injectable
|
|
21410
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
21648
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }]; } });
|
|
21411
21649
|
|
|
21412
21650
|
function provideGn4() {
|
|
21413
21651
|
return [
|
|
@@ -22134,6 +22372,27 @@ const FORMATS = {
|
|
|
22134
22372
|
color: '#de630b',
|
|
22135
22373
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22136
22374
|
},
|
|
22375
|
+
html: {
|
|
22376
|
+
extensions: ['html', 'htm'],
|
|
22377
|
+
priority: 12,
|
|
22378
|
+
color: '#f2bb3a',
|
|
22379
|
+
mimeTypes: ['text/html'],
|
|
22380
|
+
},
|
|
22381
|
+
fgb: {
|
|
22382
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22383
|
+
priority: 13,
|
|
22384
|
+
color: '#f2bb3a',
|
|
22385
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22386
|
+
},
|
|
22387
|
+
jsonfg: {
|
|
22388
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22389
|
+
priority: 14,
|
|
22390
|
+
color: '#f2bb3a',
|
|
22391
|
+
mimeTypes: [
|
|
22392
|
+
'application/vnd.ogc.fg+json',
|
|
22393
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22394
|
+
],
|
|
22395
|
+
},
|
|
22137
22396
|
};
|
|
22138
22397
|
function getFormatPriority(linkFormat) {
|
|
22139
22398
|
for (const format in FORMATS) {
|
|
@@ -22265,7 +22524,7 @@ class LinkClassifierService {
|
|
|
22265
22524
|
case 'wmts':
|
|
22266
22525
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22267
22526
|
case 'ogcFeatures':
|
|
22268
|
-
return [LinkUsage.API];
|
|
22527
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22269
22528
|
default:
|
|
22270
22529
|
return [LinkUsage.UNKNOWN];
|
|
22271
22530
|
}
|
|
@@ -23811,6 +24070,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23811
24070
|
type: Input
|
|
23812
24071
|
}] } });
|
|
23813
24072
|
|
|
24073
|
+
class PopupAlertComponent {
|
|
24074
|
+
constructor(changeDetector) {
|
|
24075
|
+
this.changeDetector = changeDetector;
|
|
24076
|
+
this.type = 'info';
|
|
24077
|
+
this.position = 'top';
|
|
24078
|
+
this.expanded = false;
|
|
24079
|
+
this.timeout = null;
|
|
24080
|
+
}
|
|
24081
|
+
get showDuration() {
|
|
24082
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24083
|
+
return Math.max(3000, chars * 20);
|
|
24084
|
+
}
|
|
24085
|
+
ngOnInit() {
|
|
24086
|
+
this.expandAndClose();
|
|
24087
|
+
}
|
|
24088
|
+
expand() {
|
|
24089
|
+
this.expanded = true;
|
|
24090
|
+
this.changeDetector.detectChanges();
|
|
24091
|
+
clearTimeout(this.timeout);
|
|
24092
|
+
}
|
|
24093
|
+
expandAndClose() {
|
|
24094
|
+
this.expanded = true;
|
|
24095
|
+
this.changeDetector.detectChanges();
|
|
24096
|
+
clearTimeout(this.timeout);
|
|
24097
|
+
this.timeout = setTimeout(() => {
|
|
24098
|
+
this.expanded = false;
|
|
24099
|
+
this.changeDetector.detectChanges();
|
|
24100
|
+
}, this.showDuration);
|
|
24101
|
+
}
|
|
24102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24103
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24104
|
+
}
|
|
24105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24106
|
+
type: Component,
|
|
24107
|
+
args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
|
|
24108
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24109
|
+
type: Input
|
|
24110
|
+
}], type: [{
|
|
24111
|
+
type: Input
|
|
24112
|
+
}], position: [{
|
|
24113
|
+
type: Input
|
|
24114
|
+
}], content: [{
|
|
24115
|
+
type: ViewChild,
|
|
24116
|
+
args: ['content']
|
|
24117
|
+
}] } });
|
|
24118
|
+
|
|
24119
|
+
class AutocompleteComponent {
|
|
24120
|
+
constructor(cdRef) {
|
|
24121
|
+
this.cdRef = cdRef;
|
|
24122
|
+
this.clearOnSelection = false;
|
|
24123
|
+
this.autoFocus = false;
|
|
24124
|
+
this.itemSelected = new EventEmitter();
|
|
24125
|
+
this.inputSubmitted = new EventEmitter();
|
|
24126
|
+
this.inputCleared = new EventEmitter();
|
|
24127
|
+
this.control = new UntypedFormControl();
|
|
24128
|
+
this.subscription = new Subscription();
|
|
24129
|
+
this.cancelEnter = true;
|
|
24130
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24131
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24132
|
+
this.error = null;
|
|
24133
|
+
this.displayWithFn = (item) => item;
|
|
24134
|
+
}
|
|
24135
|
+
ngOnChanges(changes) {
|
|
24136
|
+
const { value } = changes;
|
|
24137
|
+
if (value) {
|
|
24138
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24139
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24140
|
+
if (previousTextValue !== currentTextValue) {
|
|
24141
|
+
this.updateInputValue(value.currentValue);
|
|
24142
|
+
}
|
|
24143
|
+
}
|
|
24144
|
+
}
|
|
24145
|
+
ngOnInit() {
|
|
24146
|
+
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24147
|
+
this.error = error.message;
|
|
24148
|
+
return of([]);
|
|
24149
|
+
}), finalize(() => (this.searching = false)));
|
|
24150
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24151
|
+
if (any !== '') {
|
|
24152
|
+
this.cancelEnter = false;
|
|
24153
|
+
}
|
|
24154
|
+
});
|
|
24155
|
+
this.control.valueChanges
|
|
24156
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24157
|
+
.subscribe(this.lastInputValue$);
|
|
24158
|
+
}
|
|
24159
|
+
ngAfterViewInit() {
|
|
24160
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24161
|
+
if (this.autoFocus) {
|
|
24162
|
+
this.inputRef.nativeElement.focus();
|
|
24163
|
+
this.cdRef.detectChanges();
|
|
24164
|
+
}
|
|
24165
|
+
}
|
|
24166
|
+
ngOnDestroy() {
|
|
24167
|
+
this.subscription.unsubscribe();
|
|
24168
|
+
}
|
|
24169
|
+
updateInputValue(value) {
|
|
24170
|
+
if (value) {
|
|
24171
|
+
this.control.setValue(value);
|
|
24172
|
+
}
|
|
24173
|
+
if (this.inputRef) {
|
|
24174
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24175
|
+
}
|
|
24176
|
+
}
|
|
24177
|
+
clear() {
|
|
24178
|
+
this.inputRef.nativeElement.value = '';
|
|
24179
|
+
this.inputCleared.emit();
|
|
24180
|
+
this.selectionSubject
|
|
24181
|
+
.pipe(take(1))
|
|
24182
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24183
|
+
this.inputRef.nativeElement.focus();
|
|
24184
|
+
this.triggerRef.closePanel();
|
|
24185
|
+
}
|
|
24186
|
+
handleEnter(any) {
|
|
24187
|
+
if (!this.cancelEnter) {
|
|
24188
|
+
this.inputSubmitted.emit(any);
|
|
24189
|
+
this.triggerRef.closePanel();
|
|
24190
|
+
}
|
|
24191
|
+
}
|
|
24192
|
+
handleClickSearch() {
|
|
24193
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24194
|
+
this.triggerRef.closePanel();
|
|
24195
|
+
}
|
|
24196
|
+
handleSelection(event) {
|
|
24197
|
+
this.cancelEnter = true;
|
|
24198
|
+
this.itemSelected.emit(event.option.value);
|
|
24199
|
+
if (this.clearOnSelection) {
|
|
24200
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24201
|
+
this.inputRef.nativeElement.value = any;
|
|
24202
|
+
});
|
|
24203
|
+
}
|
|
24204
|
+
}
|
|
24205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24206
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24207
|
+
}
|
|
24208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24209
|
+
type: Component,
|
|
24210
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
24211
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24212
|
+
type: Input
|
|
24213
|
+
}], action: [{
|
|
24214
|
+
type: Input
|
|
24215
|
+
}], value: [{
|
|
24216
|
+
type: Input
|
|
24217
|
+
}], clearOnSelection: [{
|
|
24218
|
+
type: Input
|
|
24219
|
+
}], autoFocus: [{
|
|
24220
|
+
type: Input
|
|
24221
|
+
}], itemSelected: [{
|
|
24222
|
+
type: Output
|
|
24223
|
+
}], inputSubmitted: [{
|
|
24224
|
+
type: Output
|
|
24225
|
+
}], inputCleared: [{
|
|
24226
|
+
type: Output
|
|
24227
|
+
}], triggerRef: [{
|
|
24228
|
+
type: ViewChild,
|
|
24229
|
+
args: [MatAutocompleteTrigger]
|
|
24230
|
+
}], autocomplete: [{
|
|
24231
|
+
type: ViewChild,
|
|
24232
|
+
args: [MatAutocomplete]
|
|
24233
|
+
}], inputRef: [{
|
|
24234
|
+
type: ViewChild,
|
|
24235
|
+
args: ['searchInput']
|
|
24236
|
+
}], displayWithFn: [{
|
|
24237
|
+
type: Input
|
|
24238
|
+
}] } });
|
|
24239
|
+
|
|
23814
24240
|
class ButtonComponent {
|
|
23815
24241
|
constructor() {
|
|
23816
24242
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -23862,171 +24288,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23862
24288
|
type: Output
|
|
23863
24289
|
}] } });
|
|
23864
24290
|
|
|
23865
|
-
|
|
23866
|
-
class DropdownSelectorComponent {
|
|
24291
|
+
class CheckToggleComponent {
|
|
23867
24292
|
constructor() {
|
|
23868
|
-
this.
|
|
23869
|
-
this.
|
|
23870
|
-
this.minWidth = '';
|
|
23871
|
-
this.selectValue = new EventEmitter();
|
|
23872
|
-
this.overlayOpen = false;
|
|
23873
|
-
this.overlayWidth = 'auto';
|
|
23874
|
-
this.overlayMaxHeight = 'none';
|
|
23875
|
-
this.overlayPositions = [
|
|
23876
|
-
{
|
|
23877
|
-
originX: 'start',
|
|
23878
|
-
originY: 'bottom',
|
|
23879
|
-
overlayX: 'start',
|
|
23880
|
-
overlayY: 'top',
|
|
23881
|
-
offsetY: 8,
|
|
23882
|
-
},
|
|
23883
|
-
{
|
|
23884
|
-
originX: 'start',
|
|
23885
|
-
originY: 'top',
|
|
23886
|
-
overlayX: 'start',
|
|
23887
|
-
overlayY: 'bottom',
|
|
23888
|
-
offsetY: -8,
|
|
23889
|
-
},
|
|
23890
|
-
];
|
|
23891
|
-
}
|
|
23892
|
-
get selectedChoice() {
|
|
23893
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
23894
|
-
this.choices[0]);
|
|
23895
|
-
}
|
|
23896
|
-
get id() {
|
|
23897
|
-
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
23898
|
-
}
|
|
23899
|
-
getChoiceLabel() {
|
|
23900
|
-
return this.selectedChoice?.label;
|
|
23901
|
-
}
|
|
23902
|
-
ngOnInit() {
|
|
23903
|
-
if (!this.maxRows)
|
|
23904
|
-
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
23905
|
-
if (!this.choices || this.choices.length === 0) {
|
|
23906
|
-
this.choices = [];
|
|
23907
|
-
}
|
|
23908
|
-
}
|
|
23909
|
-
isSelected(choice) {
|
|
23910
|
-
return choice === this.selectedChoice;
|
|
24293
|
+
this.color = 'primary';
|
|
24294
|
+
this.toggled = new EventEmitter();
|
|
23911
24295
|
}
|
|
23912
|
-
|
|
23913
|
-
this.
|
|
23914
|
-
this.selected = choice.value;
|
|
23915
|
-
this.selectValue.emit(this.selected);
|
|
24296
|
+
toggle(event) {
|
|
24297
|
+
this.toggled.emit(event);
|
|
23916
24298
|
}
|
|
23917
|
-
|
|
23918
|
-
|
|
23919
|
-
|
|
23920
|
-
|
|
23921
|
-
|
|
23922
|
-
|
|
23923
|
-
|
|
23924
|
-
|
|
23925
|
-
|
|
23926
|
-
|
|
23927
|
-
|
|
23928
|
-
|
|
24299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24300
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24301
|
+
}
|
|
24302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24303
|
+
type: Component,
|
|
24304
|
+
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24305
|
+
}], propDecorators: { title: [{
|
|
24306
|
+
type: Input
|
|
24307
|
+
}], label: [{
|
|
24308
|
+
type: Input
|
|
24309
|
+
}], value: [{
|
|
24310
|
+
type: Input
|
|
24311
|
+
}], color: [{
|
|
24312
|
+
type: Input
|
|
24313
|
+
}], toggled: [{
|
|
24314
|
+
type: Output
|
|
24315
|
+
}] } });
|
|
24316
|
+
|
|
24317
|
+
class CheckboxComponent {
|
|
24318
|
+
constructor() {
|
|
24319
|
+
this.type = 'default';
|
|
24320
|
+
this.checked = false;
|
|
24321
|
+
this.indeterminate = false;
|
|
24322
|
+
this.changed = new EventEmitter();
|
|
23929
24323
|
}
|
|
23930
|
-
|
|
23931
|
-
this.
|
|
24324
|
+
get classList() {
|
|
24325
|
+
return `${this.type}`;
|
|
23932
24326
|
}
|
|
23933
|
-
|
|
23934
|
-
|
|
24327
|
+
handleClick(event) {
|
|
24328
|
+
event.stopPropagation();
|
|
24329
|
+
this.checked = !this.checked;
|
|
24330
|
+
this.changed.emit(this.checked);
|
|
23935
24331
|
}
|
|
23936
|
-
|
|
23937
|
-
|
|
24332
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24333
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24334
|
+
}
|
|
24335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24336
|
+
type: Component,
|
|
24337
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
24338
|
+
}], propDecorators: { type: [{
|
|
24339
|
+
type: Input
|
|
24340
|
+
}], checked: [{
|
|
24341
|
+
type: Input
|
|
24342
|
+
}], indeterminate: [{
|
|
24343
|
+
type: Input
|
|
24344
|
+
}], changed: [{
|
|
24345
|
+
type: Output
|
|
24346
|
+
}] } });
|
|
24347
|
+
|
|
24348
|
+
class ChipsInputComponent {
|
|
24349
|
+
onChange(event) {
|
|
24350
|
+
this.rawChange.next(event);
|
|
23938
24351
|
}
|
|
23939
|
-
|
|
23940
|
-
|
|
23941
|
-
|
|
23942
|
-
|
|
23943
|
-
|
|
23944
|
-
|
|
23945
|
-
|
|
23946
|
-
|
|
23947
|
-
|
|
23948
|
-
|
|
23949
|
-
|
|
23950
|
-
|
|
23951
|
-
|
|
24352
|
+
constructor(http, translate) {
|
|
24353
|
+
this.http = http;
|
|
24354
|
+
this.translate = translate;
|
|
24355
|
+
this.required = false;
|
|
24356
|
+
this.loadOnce = false;
|
|
24357
|
+
this.autocompleteItems = [];
|
|
24358
|
+
this.invalid = false;
|
|
24359
|
+
this.items = [];
|
|
24360
|
+
this.requestAutocompleteItems = (text) => {
|
|
24361
|
+
if (this.url) {
|
|
24362
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24363
|
+
return this.loadedItems;
|
|
24364
|
+
}
|
|
24365
|
+
const url = this.url(text);
|
|
24366
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24367
|
+
return this.http
|
|
24368
|
+
.get(url.replace('${lang}', lang))
|
|
24369
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
23952
24370
|
}
|
|
23953
|
-
|
|
23954
|
-
this.
|
|
23955
|
-
|
|
23956
|
-
|
|
23957
|
-
|
|
23958
|
-
|
|
23959
|
-
|
|
23960
|
-
this.closeOverlay();
|
|
23961
|
-
}
|
|
24371
|
+
else {
|
|
24372
|
+
return of(this.autocompleteItems || []);
|
|
24373
|
+
}
|
|
24374
|
+
};
|
|
24375
|
+
this.rawChange = new Subject();
|
|
24376
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24377
|
+
this.subscription = new Subscription();
|
|
23962
24378
|
}
|
|
23963
|
-
|
|
23964
|
-
if (
|
|
23965
|
-
|
|
23966
|
-
const keyCode = event.code;
|
|
23967
|
-
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
23968
|
-
event.preventDefault();
|
|
23969
|
-
this.shiftItemFocus(1);
|
|
23970
|
-
}
|
|
23971
|
-
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
23972
|
-
event.preventDefault();
|
|
23973
|
-
this.shiftItemFocus(-1);
|
|
23974
|
-
}
|
|
23975
|
-
else if (keyCode === 'Escape') {
|
|
23976
|
-
this.closeOverlay();
|
|
24379
|
+
ngOnInit() {
|
|
24380
|
+
if (this.loadOnce) {
|
|
24381
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
23977
24382
|
}
|
|
24383
|
+
this.items = this.selectedItems;
|
|
24384
|
+
this.subscription = this.rawChange
|
|
24385
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24386
|
+
.subscribe();
|
|
24387
|
+
this.rawChange.next(this.items);
|
|
23978
24388
|
}
|
|
23979
|
-
|
|
23980
|
-
|
|
23981
|
-
if (index === -1)
|
|
23982
|
-
return;
|
|
23983
|
-
const max = this.choiceInputs.length;
|
|
23984
|
-
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
23985
|
-
const newIndex = (((index + shift) % max) + max) % max;
|
|
23986
|
-
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24389
|
+
ngOnDestroy() {
|
|
24390
|
+
this.subscription.unsubscribe();
|
|
23987
24391
|
}
|
|
23988
|
-
|
|
23989
|
-
|
|
24392
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24393
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5$1.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
|
|
24394
|
+
}
|
|
24395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24396
|
+
type: Component,
|
|
24397
|
+
args: [{ selector: 'gn-ui-chips-input', template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24398
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24399
|
+
type: Input
|
|
24400
|
+
}], placeholder: [{
|
|
24401
|
+
type: Input
|
|
24402
|
+
}], selectedItems: [{
|
|
24403
|
+
type: Input
|
|
24404
|
+
}], required: [{
|
|
24405
|
+
type: Input
|
|
24406
|
+
}], loadOnce: [{
|
|
24407
|
+
type: Input
|
|
24408
|
+
}], autocompleteItems: [{
|
|
24409
|
+
type: Input
|
|
24410
|
+
}], itemsChange: [{
|
|
24411
|
+
type: Output
|
|
24412
|
+
}] } });
|
|
24413
|
+
|
|
24414
|
+
class CopyTextButtonComponent {
|
|
24415
|
+
constructor() {
|
|
24416
|
+
this.displayText = true;
|
|
24417
|
+
this.rows = 1;
|
|
23990
24418
|
}
|
|
23991
|
-
|
|
23992
|
-
|
|
23993
|
-
|
|
23994
|
-
this.onSelectValue(choice);
|
|
23995
|
-
}
|
|
24419
|
+
copyText(event) {
|
|
24420
|
+
navigator.clipboard.writeText(this.text);
|
|
24421
|
+
event.target.blur();
|
|
23996
24422
|
}
|
|
23997
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
23998
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24423
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24424
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23999
24425
|
}
|
|
24000
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24426
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24001
24427
|
type: Component,
|
|
24002
|
-
args: [{ selector: 'gn-ui-
|
|
24003
|
-
}], propDecorators: {
|
|
24004
|
-
type: Input
|
|
24005
|
-
}], showTitle: [{
|
|
24428
|
+
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24429
|
+
}], propDecorators: { text: [{
|
|
24006
24430
|
type: Input
|
|
24007
|
-
}],
|
|
24431
|
+
}], tooltipText: [{
|
|
24008
24432
|
type: Input
|
|
24009
|
-
}],
|
|
24433
|
+
}], displayText: [{
|
|
24010
24434
|
type: Input
|
|
24011
|
-
}],
|
|
24435
|
+
}], rows: [{
|
|
24012
24436
|
type: Input
|
|
24013
|
-
}]
|
|
24437
|
+
}] } });
|
|
24438
|
+
|
|
24439
|
+
class DatePickerComponent {
|
|
24440
|
+
constructor() {
|
|
24441
|
+
this.dateChange = new EventEmitter();
|
|
24442
|
+
}
|
|
24443
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24444
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24445
|
+
}
|
|
24446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24447
|
+
type: Component,
|
|
24448
|
+
args: [{ selector: 'gn-ui-date-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24449
|
+
}], propDecorators: { date: [{
|
|
24014
24450
|
type: Input
|
|
24015
|
-
}],
|
|
24451
|
+
}], dateChange: [{
|
|
24452
|
+
type: Output
|
|
24453
|
+
}] } });
|
|
24454
|
+
|
|
24455
|
+
class DateRangePickerComponent {
|
|
24456
|
+
startDateSelected(event) {
|
|
24457
|
+
this.startDate = event.value;
|
|
24458
|
+
}
|
|
24459
|
+
endDateSelected(event) {
|
|
24460
|
+
this.endDate = event.value;
|
|
24461
|
+
}
|
|
24462
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24463
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24464
|
+
}
|
|
24465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24466
|
+
type: Component,
|
|
24467
|
+
args: [{ selector: 'gn-ui-date-range-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24468
|
+
}] });
|
|
24469
|
+
|
|
24470
|
+
const placeholder = 'dropFile';
|
|
24471
|
+
marker('dropFile');
|
|
24472
|
+
class DragAndDropFileInputComponent {
|
|
24473
|
+
constructor() {
|
|
24474
|
+
this.placeholder = placeholder;
|
|
24475
|
+
this.accept = '*';
|
|
24476
|
+
this.fileChange = new EventEmitter();
|
|
24477
|
+
this.selectedFile = null;
|
|
24478
|
+
}
|
|
24479
|
+
get fileName() {
|
|
24480
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24481
|
+
}
|
|
24482
|
+
selectFile(event) {
|
|
24483
|
+
this.selectedFile = event.addedFiles[0];
|
|
24484
|
+
this.fileChange.emit(this.selectedFile);
|
|
24485
|
+
}
|
|
24486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24487
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$1.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24488
|
+
}
|
|
24489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24490
|
+
type: Component,
|
|
24491
|
+
args: [{ selector: 'gn-ui-drag-and-drop-file-input', template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"] }]
|
|
24492
|
+
}], propDecorators: { placeholder: [{
|
|
24016
24493
|
type: Input
|
|
24017
|
-
}],
|
|
24494
|
+
}], accept: [{
|
|
24018
24495
|
type: Input
|
|
24019
|
-
}],
|
|
24496
|
+
}], fileChange: [{
|
|
24020
24497
|
type: Output
|
|
24021
|
-
}], overlayOrigin: [{
|
|
24022
|
-
type: ViewChild,
|
|
24023
|
-
args: ['overlayOrigin']
|
|
24024
|
-
}], overlay: [{
|
|
24025
|
-
type: ViewChild,
|
|
24026
|
-
args: [CdkConnectedOverlay]
|
|
24027
|
-
}], choiceInputs: [{
|
|
24028
|
-
type: ViewChildren,
|
|
24029
|
-
args: ['choiceInputs', { read: ElementRef }]
|
|
24030
24498
|
}] } });
|
|
24031
24499
|
|
|
24032
24500
|
class DropdownMultiselectComponent {
|
|
@@ -24174,13 +24642,13 @@ class DropdownMultiselectComponent {
|
|
|
24174
24642
|
propagateToDocumentOnly(event);
|
|
24175
24643
|
this.setFocus();
|
|
24176
24644
|
}
|
|
24177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$
|
|
24178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$
|
|
24645
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$5.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24646
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24179
24647
|
}
|
|
24180
24648
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24181
24649
|
type: Component,
|
|
24182
24650
|
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24183
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
24651
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24184
24652
|
type: Input
|
|
24185
24653
|
}], choices: [{
|
|
24186
24654
|
type: Input
|
|
@@ -24211,311 +24679,263 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24211
24679
|
args: ['checkBox', { read: ElementRef }]
|
|
24212
24680
|
}] } });
|
|
24213
24681
|
|
|
24214
|
-
|
|
24682
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24683
|
+
class DropdownSelectorComponent {
|
|
24215
24684
|
constructor() {
|
|
24216
|
-
this.
|
|
24217
|
-
this.
|
|
24218
|
-
this.
|
|
24219
|
-
this.
|
|
24685
|
+
this.showTitle = true;
|
|
24686
|
+
this.extraBtnClass = '';
|
|
24687
|
+
this.minWidth = '';
|
|
24688
|
+
this.selectValue = new EventEmitter();
|
|
24689
|
+
this.overlayOpen = false;
|
|
24690
|
+
this.overlayWidth = 'auto';
|
|
24691
|
+
this.overlayMaxHeight = 'none';
|
|
24692
|
+
this.overlayPositions = [
|
|
24693
|
+
{
|
|
24694
|
+
originX: 'start',
|
|
24695
|
+
originY: 'bottom',
|
|
24696
|
+
overlayX: 'start',
|
|
24697
|
+
overlayY: 'top',
|
|
24698
|
+
offsetY: 8,
|
|
24699
|
+
},
|
|
24700
|
+
{
|
|
24701
|
+
originX: 'start',
|
|
24702
|
+
originY: 'top',
|
|
24703
|
+
overlayX: 'start',
|
|
24704
|
+
overlayY: 'bottom',
|
|
24705
|
+
offsetY: -8,
|
|
24706
|
+
},
|
|
24707
|
+
];
|
|
24220
24708
|
}
|
|
24221
|
-
|
|
24222
|
-
|
|
24709
|
+
get selectedChoice() {
|
|
24710
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24711
|
+
this.choices[0]);
|
|
24223
24712
|
}
|
|
24224
|
-
|
|
24225
|
-
this.
|
|
24713
|
+
get id() {
|
|
24714
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24226
24715
|
}
|
|
24227
|
-
|
|
24228
|
-
|
|
24229
|
-
this.checkRequired(value);
|
|
24230
|
-
this.rawChange.next(value);
|
|
24716
|
+
getChoiceLabel() {
|
|
24717
|
+
return this.selectedChoice?.label;
|
|
24231
24718
|
}
|
|
24232
|
-
|
|
24233
|
-
|
|
24234
|
-
|
|
24235
|
-
|
|
24236
|
-
|
|
24237
|
-
|
|
24238
|
-
}], propDecorators: { value: [{
|
|
24239
|
-
type: Input
|
|
24240
|
-
}], hint: [{
|
|
24241
|
-
type: Input
|
|
24242
|
-
}], required: [{
|
|
24243
|
-
type: Input
|
|
24244
|
-
}], valueChange: [{
|
|
24245
|
-
type: Output
|
|
24246
|
-
}], input: [{
|
|
24247
|
-
type: ViewChild,
|
|
24248
|
-
args: ['input']
|
|
24249
|
-
}] } });
|
|
24250
|
-
|
|
24251
|
-
class ChipsInputComponent {
|
|
24252
|
-
onChange(event) {
|
|
24253
|
-
this.rawChange.next(event);
|
|
24719
|
+
ngOnInit() {
|
|
24720
|
+
if (!this.maxRows)
|
|
24721
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24722
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24723
|
+
this.choices = [];
|
|
24724
|
+
}
|
|
24254
24725
|
}
|
|
24255
|
-
|
|
24256
|
-
this.
|
|
24257
|
-
|
|
24258
|
-
|
|
24259
|
-
this.
|
|
24260
|
-
this.
|
|
24261
|
-
this.
|
|
24262
|
-
|
|
24263
|
-
|
|
24264
|
-
|
|
24265
|
-
|
|
24266
|
-
|
|
24267
|
-
|
|
24268
|
-
|
|
24269
|
-
|
|
24270
|
-
|
|
24271
|
-
|
|
24272
|
-
|
|
24273
|
-
|
|
24274
|
-
|
|
24275
|
-
|
|
24726
|
+
isSelected(choice) {
|
|
24727
|
+
return choice === this.selectedChoice;
|
|
24728
|
+
}
|
|
24729
|
+
onSelectValue(choice) {
|
|
24730
|
+
this.closeOverlay();
|
|
24731
|
+
this.selected = choice.value;
|
|
24732
|
+
this.selectValue.emit(this.selected);
|
|
24733
|
+
}
|
|
24734
|
+
openOverlay() {
|
|
24735
|
+
this.overlayWidth =
|
|
24736
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24737
|
+
.width + 'px';
|
|
24738
|
+
this.overlayMaxHeight = this.maxRows
|
|
24739
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24740
|
+
: 'none';
|
|
24741
|
+
this.overlayOpen = true;
|
|
24742
|
+
return Promise.all([
|
|
24743
|
+
firstValueFrom(this.overlay.attach),
|
|
24744
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24745
|
+
]);
|
|
24746
|
+
}
|
|
24747
|
+
closeOverlay() {
|
|
24748
|
+
this.overlayOpen = false;
|
|
24749
|
+
}
|
|
24750
|
+
focusFirstItem() {
|
|
24751
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24752
|
+
}
|
|
24753
|
+
focusLastItem() {
|
|
24754
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24755
|
+
}
|
|
24756
|
+
async handleTriggerKeydown(event) {
|
|
24757
|
+
const keyCode = event.code;
|
|
24758
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24759
|
+
keyCode === 'ArrowUp' ||
|
|
24760
|
+
keyCode === 'ArrowLeft' ||
|
|
24761
|
+
keyCode === 'ArrowRight' ||
|
|
24762
|
+
keyCode === 'Enter' ||
|
|
24763
|
+
keyCode === 'Space';
|
|
24764
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24765
|
+
if (isOpenKey) {
|
|
24766
|
+
event.preventDefault();
|
|
24767
|
+
if (!this.overlayOpen) {
|
|
24768
|
+
await this.openOverlay();
|
|
24276
24769
|
}
|
|
24277
|
-
|
|
24278
|
-
|
|
24279
|
-
|
|
24280
|
-
|
|
24770
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24771
|
+
this.focusLastItem();
|
|
24772
|
+
else
|
|
24773
|
+
this.focusFirstItem();
|
|
24774
|
+
}
|
|
24775
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24776
|
+
event.preventDefault();
|
|
24777
|
+
this.closeOverlay();
|
|
24778
|
+
}
|
|
24281
24779
|
}
|
|
24282
|
-
|
|
24283
|
-
if (this.
|
|
24284
|
-
|
|
24780
|
+
handleOverlayKeydown(event) {
|
|
24781
|
+
if (!this.overlayOpen)
|
|
24782
|
+
return;
|
|
24783
|
+
const keyCode = event.code;
|
|
24784
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24785
|
+
event.preventDefault();
|
|
24786
|
+
this.shiftItemFocus(1);
|
|
24787
|
+
}
|
|
24788
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24789
|
+
event.preventDefault();
|
|
24790
|
+
this.shiftItemFocus(-1);
|
|
24791
|
+
}
|
|
24792
|
+
else if (keyCode === 'Escape') {
|
|
24793
|
+
this.closeOverlay();
|
|
24285
24794
|
}
|
|
24286
|
-
this.items = this.selectedItems;
|
|
24287
|
-
this.subscription = this.rawChange
|
|
24288
|
-
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24289
|
-
.subscribe();
|
|
24290
|
-
this.rawChange.next(this.items);
|
|
24291
24795
|
}
|
|
24292
|
-
|
|
24293
|
-
this.
|
|
24796
|
+
shiftItemFocus(shift) {
|
|
24797
|
+
const index = this.focusedIndex;
|
|
24798
|
+
if (index === -1)
|
|
24799
|
+
return;
|
|
24800
|
+
const max = this.choiceInputs.length;
|
|
24801
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24802
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24803
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24294
24804
|
}
|
|
24295
|
-
|
|
24296
|
-
|
|
24805
|
+
get focusedIndex() {
|
|
24806
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24807
|
+
}
|
|
24808
|
+
selectIfEnter(event, choice) {
|
|
24809
|
+
if (event.code === 'Enter') {
|
|
24810
|
+
event.preventDefault();
|
|
24811
|
+
this.onSelectValue(choice);
|
|
24812
|
+
}
|
|
24813
|
+
}
|
|
24814
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24297
24816
|
}
|
|
24298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24817
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24299
24818
|
type: Component,
|
|
24300
|
-
args: [{ selector: 'gn-ui-
|
|
24301
|
-
|
|
24819
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24820
|
+
CommonModule,
|
|
24821
|
+
ButtonComponent,
|
|
24822
|
+
OverlayModule,
|
|
24823
|
+
MatIconModule,
|
|
24824
|
+
TranslateModule,
|
|
24825
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24826
|
+
}], propDecorators: { title: [{
|
|
24302
24827
|
type: Input
|
|
24303
|
-
}],
|
|
24828
|
+
}], showTitle: [{
|
|
24304
24829
|
type: Input
|
|
24305
|
-
}],
|
|
24830
|
+
}], ariaName: [{
|
|
24306
24831
|
type: Input
|
|
24307
|
-
}],
|
|
24832
|
+
}], choices: [{
|
|
24308
24833
|
type: Input
|
|
24309
|
-
}],
|
|
24834
|
+
}], selected: [{
|
|
24310
24835
|
type: Input
|
|
24311
|
-
}],
|
|
24836
|
+
}], maxRows: [{
|
|
24312
24837
|
type: Input
|
|
24313
|
-
}],
|
|
24838
|
+
}], extraBtnClass: [{
|
|
24839
|
+
type: Input
|
|
24840
|
+
}], minWidth: [{
|
|
24841
|
+
type: Input
|
|
24842
|
+
}], selectValue: [{
|
|
24314
24843
|
type: Output
|
|
24844
|
+
}], overlayOrigin: [{
|
|
24845
|
+
type: ViewChild,
|
|
24846
|
+
args: ['overlayOrigin']
|
|
24847
|
+
}], overlay: [{
|
|
24848
|
+
type: ViewChild,
|
|
24849
|
+
args: [CdkConnectedOverlay]
|
|
24850
|
+
}], choiceInputs: [{
|
|
24851
|
+
type: ViewChildren,
|
|
24852
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24315
24853
|
}] } });
|
|
24316
24854
|
|
|
24317
|
-
class
|
|
24318
|
-
constructor() {
|
|
24319
|
-
this.
|
|
24320
|
-
this.
|
|
24321
|
-
this.
|
|
24322
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24855
|
+
class EditableLabelDirective {
|
|
24856
|
+
constructor(el, renderer) {
|
|
24857
|
+
this.el = el;
|
|
24858
|
+
this.renderer = renderer;
|
|
24859
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24323
24860
|
}
|
|
24324
24861
|
ngAfterViewInit() {
|
|
24325
|
-
|
|
24326
|
-
|
|
24327
|
-
|
|
24328
|
-
|
|
24329
|
-
|
|
24330
|
-
|
|
24331
|
-
|
|
24332
|
-
|
|
24333
|
-
|
|
24862
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24863
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24864
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24865
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24866
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24867
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24868
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24869
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24870
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24871
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24872
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24873
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24874
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24875
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24876
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24877
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24878
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24879
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24880
|
+
});
|
|
24881
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24882
|
+
}
|
|
24334
24883
|
}
|
|
24335
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24336
|
-
static { this.ɵ
|
|
24884
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24885
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
24337
24886
|
}
|
|
24338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24339
|
-
type:
|
|
24340
|
-
args: [{
|
|
24341
|
-
|
|
24342
|
-
|
|
24343
|
-
|
|
24344
|
-
|
|
24345
|
-
}], required: [{
|
|
24346
|
-
type: Input
|
|
24347
|
-
}], valueChange: [{
|
|
24887
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24888
|
+
type: Directive,
|
|
24889
|
+
args: [{
|
|
24890
|
+
selector: '[gnUiEditableLabel]',
|
|
24891
|
+
standalone: true,
|
|
24892
|
+
}]
|
|
24893
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24348
24894
|
type: Output
|
|
24349
|
-
}],
|
|
24350
|
-
type:
|
|
24351
|
-
args: ['input']
|
|
24895
|
+
}], gnUiEditableLabel: [{
|
|
24896
|
+
type: Input
|
|
24352
24897
|
}] } });
|
|
24353
24898
|
|
|
24354
|
-
class
|
|
24355
|
-
|
|
24356
|
-
|
|
24357
|
-
this.type = 'info';
|
|
24358
|
-
this.position = 'top';
|
|
24359
|
-
this.expanded = false;
|
|
24360
|
-
this.timeout = null;
|
|
24361
|
-
}
|
|
24362
|
-
get showDuration() {
|
|
24363
|
-
const chars = this.content.nativeElement.innerHTML.length;
|
|
24364
|
-
return Math.max(3000, chars * 20);
|
|
24365
|
-
}
|
|
24366
|
-
ngOnInit() {
|
|
24367
|
-
this.expandAndClose();
|
|
24368
|
-
}
|
|
24369
|
-
expand() {
|
|
24370
|
-
this.expanded = true;
|
|
24371
|
-
this.changeDetector.detectChanges();
|
|
24372
|
-
clearTimeout(this.timeout);
|
|
24373
|
-
}
|
|
24374
|
-
expandAndClose() {
|
|
24375
|
-
this.expanded = true;
|
|
24376
|
-
this.changeDetector.detectChanges();
|
|
24377
|
-
clearTimeout(this.timeout);
|
|
24378
|
-
this.timeout = setTimeout(() => {
|
|
24379
|
-
this.expanded = false;
|
|
24380
|
-
this.changeDetector.detectChanges();
|
|
24381
|
-
}, this.showDuration);
|
|
24382
|
-
}
|
|
24383
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24384
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24899
|
+
class NavigationButtonComponent {
|
|
24900
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24901
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24385
24902
|
}
|
|
24386
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24387
24904
|
type: Component,
|
|
24388
|
-
args: [{ selector: 'gn-ui-
|
|
24389
|
-
}],
|
|
24390
|
-
type: Input
|
|
24391
|
-
}], type: [{
|
|
24905
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24906
|
+
}], propDecorators: { label: [{
|
|
24392
24907
|
type: Input
|
|
24393
|
-
}],
|
|
24908
|
+
}], icon: [{
|
|
24394
24909
|
type: Input
|
|
24395
|
-
}], content: [{
|
|
24396
|
-
type: ViewChild,
|
|
24397
|
-
args: ['content']
|
|
24398
24910
|
}] } });
|
|
24399
24911
|
|
|
24400
|
-
class
|
|
24401
|
-
constructor(
|
|
24402
|
-
this.
|
|
24403
|
-
this.
|
|
24404
|
-
this.
|
|
24405
|
-
this.
|
|
24406
|
-
this.inputSubmitted = new EventEmitter();
|
|
24407
|
-
this.inputCleared = new EventEmitter();
|
|
24408
|
-
this.control = new UntypedFormControl();
|
|
24409
|
-
this.subscription = new Subscription();
|
|
24410
|
-
this.cancelEnter = true;
|
|
24411
|
-
this.selectionSubject = new ReplaySubject(1);
|
|
24412
|
-
this.lastInputValue$ = new ReplaySubject(1);
|
|
24413
|
-
this.error = null;
|
|
24414
|
-
this.displayWithFn = (item) => item;
|
|
24415
|
-
}
|
|
24416
|
-
ngOnChanges(changes) {
|
|
24417
|
-
const { value } = changes;
|
|
24418
|
-
if (value) {
|
|
24419
|
-
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24420
|
-
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24421
|
-
if (previousTextValue !== currentTextValue) {
|
|
24422
|
-
this.updateInputValue(value.currentValue);
|
|
24423
|
-
}
|
|
24424
|
-
}
|
|
24425
|
-
}
|
|
24426
|
-
ngOnInit() {
|
|
24427
|
-
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24428
|
-
this.error = error.message;
|
|
24429
|
-
return of([]);
|
|
24430
|
-
}), finalize(() => (this.searching = false)));
|
|
24431
|
-
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24432
|
-
if (any !== '') {
|
|
24433
|
-
this.cancelEnter = false;
|
|
24434
|
-
}
|
|
24435
|
-
});
|
|
24436
|
-
this.control.valueChanges
|
|
24437
|
-
.pipe(filter((value) => typeof value === 'string'))
|
|
24438
|
-
.subscribe(this.lastInputValue$);
|
|
24439
|
-
}
|
|
24440
|
-
ngAfterViewInit() {
|
|
24441
|
-
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24442
|
-
if (this.autoFocus) {
|
|
24443
|
-
this.inputRef.nativeElement.focus();
|
|
24444
|
-
this.cdRef.detectChanges();
|
|
24445
|
-
}
|
|
24446
|
-
}
|
|
24447
|
-
ngOnDestroy() {
|
|
24448
|
-
this.subscription.unsubscribe();
|
|
24912
|
+
class SearchInputComponent {
|
|
24913
|
+
constructor() {
|
|
24914
|
+
this.value = '';
|
|
24915
|
+
this.placeholder = '';
|
|
24916
|
+
this.rawChange = new Subject();
|
|
24917
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24449
24918
|
}
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
}
|
|
24454
|
-
if (this.inputRef) {
|
|
24455
|
-
this.inputRef.nativeElement.value = value?.title || '';
|
|
24456
|
-
}
|
|
24919
|
+
handleChange($event) {
|
|
24920
|
+
const value = $event.target.value;
|
|
24921
|
+
this.rawChange.next(value);
|
|
24457
24922
|
}
|
|
24458
24923
|
clear() {
|
|
24459
|
-
this.
|
|
24460
|
-
this.
|
|
24461
|
-
this.selectionSubject
|
|
24462
|
-
.pipe(take(1))
|
|
24463
|
-
.subscribe((selection) => selection && selection.option.deselect());
|
|
24464
|
-
this.inputRef.nativeElement.focus();
|
|
24465
|
-
this.triggerRef.closePanel();
|
|
24466
|
-
}
|
|
24467
|
-
handleEnter(any) {
|
|
24468
|
-
if (!this.cancelEnter) {
|
|
24469
|
-
this.inputSubmitted.emit(any);
|
|
24470
|
-
this.triggerRef.closePanel();
|
|
24471
|
-
}
|
|
24472
|
-
}
|
|
24473
|
-
handleClickSearch() {
|
|
24474
|
-
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24475
|
-
this.triggerRef.closePanel();
|
|
24476
|
-
}
|
|
24477
|
-
handleSelection(event) {
|
|
24478
|
-
this.cancelEnter = true;
|
|
24479
|
-
this.itemSelected.emit(event.option.value);
|
|
24480
|
-
if (this.clearOnSelection) {
|
|
24481
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24482
|
-
this.inputRef.nativeElement.value = any;
|
|
24483
|
-
});
|
|
24484
|
-
}
|
|
24924
|
+
this.value = null;
|
|
24925
|
+
this.rawChange.next(null);
|
|
24485
24926
|
}
|
|
24486
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24487
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24927
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24928
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24488
24929
|
}
|
|
24489
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24930
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24490
24931
|
type: Component,
|
|
24491
|
-
args: [{ selector: 'gn-ui-
|
|
24492
|
-
}],
|
|
24493
|
-
type: Input
|
|
24494
|
-
}], action: [{
|
|
24495
|
-
type: Input
|
|
24496
|
-
}], value: [{
|
|
24497
|
-
type: Input
|
|
24498
|
-
}], clearOnSelection: [{
|
|
24932
|
+
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24933
|
+
}], propDecorators: { value: [{
|
|
24499
24934
|
type: Input
|
|
24500
|
-
}],
|
|
24935
|
+
}], placeholder: [{
|
|
24501
24936
|
type: Input
|
|
24502
|
-
}],
|
|
24503
|
-
type: Output
|
|
24504
|
-
}], inputSubmitted: [{
|
|
24505
|
-
type: Output
|
|
24506
|
-
}], inputCleared: [{
|
|
24937
|
+
}], valueChange: [{
|
|
24507
24938
|
type: Output
|
|
24508
|
-
}], triggerRef: [{
|
|
24509
|
-
type: ViewChild,
|
|
24510
|
-
args: [MatAutocompleteTrigger]
|
|
24511
|
-
}], autocomplete: [{
|
|
24512
|
-
type: ViewChild,
|
|
24513
|
-
args: [MatAutocomplete]
|
|
24514
|
-
}], inputRef: [{
|
|
24515
|
-
type: ViewChild,
|
|
24516
|
-
args: ['searchInput']
|
|
24517
|
-
}], displayWithFn: [{
|
|
24518
|
-
type: Input
|
|
24519
24939
|
}] } });
|
|
24520
24940
|
|
|
24521
24941
|
class StarToggleComponent {
|
|
@@ -24553,115 +24973,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24553
24973
|
args: ['starOverlay']
|
|
24554
24974
|
}] } });
|
|
24555
24975
|
|
|
24556
|
-
class
|
|
24557
|
-
constructor(
|
|
24558
|
-
this.
|
|
24559
|
-
this.
|
|
24560
|
-
this.
|
|
24561
|
-
this.
|
|
24562
|
-
|
|
24563
|
-
|
|
24564
|
-
|
|
24565
|
-
|
|
24566
|
-
|
|
24567
|
-
|
|
24568
|
-
|
|
24569
|
-
|
|
24976
|
+
class TextAreaComponent {
|
|
24977
|
+
constructor() {
|
|
24978
|
+
this.value = '';
|
|
24979
|
+
this.disabled = false;
|
|
24980
|
+
this.extraClass = '';
|
|
24981
|
+
this.required = false;
|
|
24982
|
+
this.rawChange = new Subject();
|
|
24983
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24984
|
+
this.baseClasses = [
|
|
24985
|
+
'w-full',
|
|
24986
|
+
'pt-2',
|
|
24987
|
+
'pl-2',
|
|
24988
|
+
'resize-none',
|
|
24989
|
+
'border',
|
|
24990
|
+
'border-gray-800',
|
|
24991
|
+
'rounded italic',
|
|
24992
|
+
'leading-tight',
|
|
24993
|
+
'focus:outline-none',
|
|
24994
|
+
'focus:bg-background',
|
|
24995
|
+
'focus:border-primary',
|
|
24996
|
+
].join(' ');
|
|
24997
|
+
this.disabledClasses = ['cursor-not-allowed'].join(' ');
|
|
24570
24998
|
}
|
|
24571
|
-
|
|
24572
|
-
|
|
24573
|
-
this.observer = new IntersectionObserver((entries) => {
|
|
24574
|
-
entries.forEach((entry) => {
|
|
24575
|
-
this.isInViewport.emit(entry.isIntersecting);
|
|
24576
|
-
});
|
|
24577
|
-
}, { root: null, threshold: 0 });
|
|
24578
|
-
}
|
|
24579
|
-
this.observer.observe(elToObserve);
|
|
24999
|
+
get classList() {
|
|
25000
|
+
return `${this.baseClasses} ${this.extraClass} ${this.disabled ? this.disabledClasses : ''}`;
|
|
24580
25001
|
}
|
|
24581
|
-
|
|
24582
|
-
this.
|
|
25002
|
+
ngAfterViewInit() {
|
|
25003
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24583
25004
|
}
|
|
24584
|
-
|
|
24585
|
-
|
|
24586
|
-
}
|
|
24587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24588
|
-
type: Component,
|
|
24589
|
-
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
24590
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24591
|
-
type: Output
|
|
24592
|
-
}], entersViewport: [{
|
|
24593
|
-
type: Output
|
|
24594
|
-
}], exitsViewport: [{
|
|
24595
|
-
type: Output
|
|
24596
|
-
}] } });
|
|
24597
|
-
|
|
24598
|
-
class CheckToggleComponent {
|
|
24599
|
-
constructor() {
|
|
24600
|
-
this.color = 'primary';
|
|
24601
|
-
this.toggled = new EventEmitter();
|
|
25005
|
+
checkRequired(value) {
|
|
25006
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24602
25007
|
}
|
|
24603
|
-
|
|
24604
|
-
|
|
25008
|
+
handleChange($event) {
|
|
25009
|
+
const value = $event.target.value;
|
|
25010
|
+
this.checkRequired(value);
|
|
25011
|
+
this.rawChange.next(value);
|
|
24605
25012
|
}
|
|
24606
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24607
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25013
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25014
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", disabled: "disabled", extraClass: "extraClass", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24608
25015
|
}
|
|
24609
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
24610
25017
|
type: Component,
|
|
24611
|
-
args: [{ selector: 'gn-ui-
|
|
24612
|
-
}], propDecorators: {
|
|
25018
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25019
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
24613
25020
|
type: Input
|
|
24614
|
-
}],
|
|
25021
|
+
}], disabled: [{
|
|
24615
25022
|
type: Input
|
|
24616
|
-
}],
|
|
25023
|
+
}], extraClass: [{
|
|
24617
25024
|
type: Input
|
|
24618
|
-
}],
|
|
25025
|
+
}], placeholder: [{
|
|
24619
25026
|
type: Input
|
|
24620
|
-
}],
|
|
25027
|
+
}], required: [{
|
|
25028
|
+
type: Input
|
|
25029
|
+
}], valueChange: [{
|
|
24621
25030
|
type: Output
|
|
25031
|
+
}], input: [{
|
|
25032
|
+
type: ViewChild,
|
|
25033
|
+
args: ['input']
|
|
24622
25034
|
}] } });
|
|
24623
25035
|
|
|
24624
|
-
|
|
24625
|
-
marker('dropFile');
|
|
24626
|
-
class DragAndDropFileInputComponent {
|
|
25036
|
+
class TextInputComponent {
|
|
24627
25037
|
constructor() {
|
|
24628
|
-
this.
|
|
24629
|
-
|
|
24630
|
-
|
|
24631
|
-
|
|
25038
|
+
this.baseClass = [
|
|
25039
|
+
'appearance-none',
|
|
25040
|
+
'border border-gray-300',
|
|
25041
|
+
'rounded w-full',
|
|
25042
|
+
'p-2',
|
|
25043
|
+
'text-gray-700',
|
|
25044
|
+
'leading-tight',
|
|
25045
|
+
'focus:outline-none',
|
|
25046
|
+
'focus:border-primary',
|
|
25047
|
+
].join(' ');
|
|
25048
|
+
this.value = '';
|
|
25049
|
+
this.extraClass = '';
|
|
25050
|
+
this.required = false;
|
|
25051
|
+
this.rawChange = new Subject();
|
|
25052
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24632
25053
|
}
|
|
24633
|
-
get
|
|
24634
|
-
return this.
|
|
25054
|
+
get classList() {
|
|
25055
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24635
25056
|
}
|
|
24636
|
-
|
|
24637
|
-
this.
|
|
24638
|
-
this.fileChange.emit(this.selectedFile);
|
|
25057
|
+
ngAfterViewInit() {
|
|
25058
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24639
25059
|
}
|
|
24640
|
-
|
|
24641
|
-
|
|
25060
|
+
checkRequired(value) {
|
|
25061
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
25062
|
+
}
|
|
25063
|
+
handleChange($event) {
|
|
25064
|
+
const value = $event.target.value;
|
|
25065
|
+
this.checkRequired(value);
|
|
25066
|
+
this.rawChange.next(value);
|
|
25067
|
+
}
|
|
25068
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25069
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24642
25070
|
}
|
|
24643
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25071
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24644
25072
|
type: Component,
|
|
24645
|
-
args: [{ selector: 'gn-ui-
|
|
24646
|
-
}], propDecorators: {
|
|
25073
|
+
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25074
|
+
}], propDecorators: { value: [{
|
|
24647
25075
|
type: Input
|
|
24648
|
-
}],
|
|
25076
|
+
}], extraClass: [{
|
|
24649
25077
|
type: Input
|
|
24650
|
-
}],
|
|
24651
|
-
type: Output
|
|
24652
|
-
}] } });
|
|
24653
|
-
|
|
24654
|
-
class NavigationButtonComponent {
|
|
24655
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24657
|
-
}
|
|
24658
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24659
|
-
type: Component,
|
|
24660
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24661
|
-
}], propDecorators: { label: [{
|
|
25078
|
+
}], hint: [{
|
|
24662
25079
|
type: Input
|
|
24663
|
-
}],
|
|
25080
|
+
}], required: [{
|
|
24664
25081
|
type: Input
|
|
25082
|
+
}], valueChange: [{
|
|
25083
|
+
type: Output
|
|
25084
|
+
}], input: [{
|
|
25085
|
+
type: ViewChild,
|
|
25086
|
+
args: ['input']
|
|
24665
25087
|
}] } });
|
|
24666
25088
|
|
|
24667
25089
|
class ColorScaleComponent {
|
|
@@ -24769,7 +25191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24769
25191
|
|
|
24770
25192
|
class LoadingMaskComponent {
|
|
24771
25193
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24772
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$
|
|
25194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24773
25195
|
}
|
|
24774
25196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24775
25197
|
type: Component,
|
|
@@ -24865,148 +25287,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24865
25287
|
}]
|
|
24866
25288
|
}] });
|
|
24867
25289
|
|
|
24868
|
-
class
|
|
24869
|
-
constructor() {
|
|
24870
|
-
this.
|
|
24871
|
-
this.
|
|
25290
|
+
class ViewportIntersectorComponent {
|
|
25291
|
+
constructor(vcRef) {
|
|
25292
|
+
this.vcRef = vcRef;
|
|
25293
|
+
this.isInViewport = new EventEmitter();
|
|
25294
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25295
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
24872
25296
|
}
|
|
24873
|
-
|
|
24874
|
-
|
|
24875
|
-
|
|
25297
|
+
ngOnInit() {
|
|
25298
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25299
|
+
this.observeInputElement(elToObserve);
|
|
24876
25300
|
}
|
|
24877
|
-
|
|
24878
|
-
|
|
24879
|
-
|
|
24880
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24881
|
-
type: Component,
|
|
24882
|
-
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24883
|
-
}], propDecorators: { text: [{
|
|
24884
|
-
type: Input
|
|
24885
|
-
}], tooltipText: [{
|
|
24886
|
-
type: Input
|
|
24887
|
-
}], displayText: [{
|
|
24888
|
-
type: Input
|
|
24889
|
-
}], rows: [{
|
|
24890
|
-
type: Input
|
|
24891
|
-
}] } });
|
|
24892
|
-
|
|
24893
|
-
class CheckboxComponent {
|
|
24894
|
-
constructor() {
|
|
24895
|
-
this.type = 'default';
|
|
24896
|
-
this.checked = false;
|
|
24897
|
-
this.indeterminate = false;
|
|
24898
|
-
this.changed = new EventEmitter();
|
|
25301
|
+
ngOnDestroy() {
|
|
25302
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25303
|
+
this.unObserveInputElement(elToObserve);
|
|
24899
25304
|
}
|
|
24900
|
-
|
|
24901
|
-
|
|
25305
|
+
observeInputElement(elToObserve) {
|
|
25306
|
+
if (!this.observer) {
|
|
25307
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25308
|
+
entries.forEach((entry) => {
|
|
25309
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25310
|
+
});
|
|
25311
|
+
}, { root: null, threshold: 0 });
|
|
25312
|
+
}
|
|
25313
|
+
this.observer.observe(elToObserve);
|
|
24902
25314
|
}
|
|
24903
|
-
|
|
24904
|
-
|
|
24905
|
-
this.checked = !this.checked;
|
|
24906
|
-
this.changed.emit(this.checked);
|
|
25315
|
+
unObserveInputElement(elToObserve) {
|
|
25316
|
+
this.observer?.unobserve(elToObserve);
|
|
24907
25317
|
}
|
|
24908
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24909
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25318
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: { isInViewport: "isInViewport", entersViewport: "entersViewport", exitsViewport: "exitsViewport" }, ngImport: i0, template: "<div class=\"w-full h-full\"></div>\n", styles: [""] }); }
|
|
24910
25320
|
}
|
|
24911
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24912
25322
|
type: Component,
|
|
24913
|
-
args: [{ selector: 'gn-ui-
|
|
24914
|
-
}],
|
|
24915
|
-
type: Input
|
|
24916
|
-
}], checked: [{
|
|
24917
|
-
type: Input
|
|
24918
|
-
}], indeterminate: [{
|
|
24919
|
-
type: Input
|
|
24920
|
-
}], changed: [{
|
|
25323
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25324
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24921
25325
|
type: Output
|
|
24922
|
-
}]
|
|
24923
|
-
|
|
24924
|
-
class SearchInputComponent {
|
|
24925
|
-
constructor() {
|
|
24926
|
-
this.value = '';
|
|
24927
|
-
this.placeholder = '';
|
|
24928
|
-
this.rawChange = new Subject();
|
|
24929
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24930
|
-
}
|
|
24931
|
-
handleChange($event) {
|
|
24932
|
-
const value = $event.target.value;
|
|
24933
|
-
this.rawChange.next(value);
|
|
24934
|
-
}
|
|
24935
|
-
clear() {
|
|
24936
|
-
this.value = null;
|
|
24937
|
-
this.rawChange.next(null);
|
|
24938
|
-
}
|
|
24939
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24940
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24941
|
-
}
|
|
24942
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24943
|
-
type: Component,
|
|
24944
|
-
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24945
|
-
}], propDecorators: { value: [{
|
|
24946
|
-
type: Input
|
|
24947
|
-
}], placeholder: [{
|
|
24948
|
-
type: Input
|
|
24949
|
-
}], valueChange: [{
|
|
25326
|
+
}], entersViewport: [{
|
|
24950
25327
|
type: Output
|
|
24951
|
-
}]
|
|
24952
|
-
|
|
24953
|
-
class DateRangePickerComponent {
|
|
24954
|
-
startDateSelected(event) {
|
|
24955
|
-
this.startDate = event.value;
|
|
24956
|
-
}
|
|
24957
|
-
endDateSelected(event) {
|
|
24958
|
-
this.endDate = event.value;
|
|
24959
|
-
}
|
|
24960
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24962
|
-
}
|
|
24963
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24964
|
-
type: Component,
|
|
24965
|
-
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24966
|
-
}] });
|
|
24967
|
-
|
|
24968
|
-
class EditableLabelDirective {
|
|
24969
|
-
constructor(el, renderer) {
|
|
24970
|
-
this.el = el;
|
|
24971
|
-
this.renderer = renderer;
|
|
24972
|
-
this.editableLabelChanged = new EventEmitter();
|
|
24973
|
-
}
|
|
24974
|
-
ngAfterViewInit() {
|
|
24975
|
-
if (this.gnUiEditableLabel !== false) {
|
|
24976
|
-
const appendedInput = this.renderer.createElement('input');
|
|
24977
|
-
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24978
|
-
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24979
|
-
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24980
|
-
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24981
|
-
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24982
|
-
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24983
|
-
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24984
|
-
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24985
|
-
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24986
|
-
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24987
|
-
const hostContent = this.el.nativeElement.textContent || '';
|
|
24988
|
-
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24989
|
-
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24990
|
-
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24991
|
-
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24992
|
-
this.editableLabelChanged.emit(event.target.value);
|
|
24993
|
-
});
|
|
24994
|
-
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24995
|
-
}
|
|
24996
|
-
}
|
|
24997
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24998
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
24999
|
-
}
|
|
25000
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25001
|
-
type: Directive,
|
|
25002
|
-
args: [{
|
|
25003
|
-
selector: '[gnUiEditableLabel]',
|
|
25004
|
-
standalone: true,
|
|
25005
|
-
}]
|
|
25006
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25328
|
+
}], exitsViewport: [{
|
|
25007
25329
|
type: Output
|
|
25008
|
-
}], gnUiEditableLabel: [{
|
|
25009
|
-
type: Input
|
|
25010
25330
|
}] } });
|
|
25011
25331
|
|
|
25012
25332
|
class FilesDropDirective {
|
|
@@ -25198,7 +25518,7 @@ class ImageInputComponent {
|
|
|
25198
25518
|
});
|
|
25199
25519
|
}
|
|
25200
25520
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
25521
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25202
25522
|
}
|
|
25203
25523
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25204
25524
|
type: Component,
|
|
@@ -25234,8 +25554,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25234
25554
|
|
|
25235
25555
|
class UiInputsModule {
|
|
25236
25556
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25237
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [
|
|
25238
|
-
AutocompleteComponent,
|
|
25557
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25239
25558
|
TextInputComponent,
|
|
25240
25559
|
DragAndDropFileInputComponent,
|
|
25241
25560
|
ChipsInputComponent,
|
|
@@ -25246,8 +25565,7 @@ class UiInputsModule {
|
|
|
25246
25565
|
CheckToggleComponent,
|
|
25247
25566
|
CopyTextButtonComponent,
|
|
25248
25567
|
CheckboxComponent,
|
|
25249
|
-
SearchInputComponent,
|
|
25250
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25568
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25251
25569
|
FormsModule,
|
|
25252
25570
|
ReactiveFormsModule,
|
|
25253
25571
|
TagInputModule,
|
|
@@ -25265,7 +25583,9 @@ class UiInputsModule {
|
|
|
25265
25583
|
EditableLabelDirective,
|
|
25266
25584
|
TextAreaComponent,
|
|
25267
25585
|
ButtonComponent,
|
|
25268
|
-
ImageInputComponent
|
|
25586
|
+
ImageInputComponent,
|
|
25587
|
+
DropdownSelectorComponent,
|
|
25588
|
+
DateRangePickerComponent], exports: [DropdownSelectorComponent,
|
|
25269
25589
|
AutocompleteComponent,
|
|
25270
25590
|
ButtonComponent,
|
|
25271
25591
|
TextInputComponent,
|
|
@@ -25300,13 +25620,14 @@ class UiInputsModule {
|
|
|
25300
25620
|
MatInputModule,
|
|
25301
25621
|
MatDatepickerModule,
|
|
25302
25622
|
MatNativeDateModule,
|
|
25303
|
-
ImageInputComponent
|
|
25623
|
+
ImageInputComponent,
|
|
25624
|
+
DropdownSelectorComponent,
|
|
25625
|
+
DateRangePickerComponent] }); }
|
|
25304
25626
|
}
|
|
25305
25627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25306
25628
|
type: NgModule,
|
|
25307
25629
|
args: [{
|
|
25308
25630
|
declarations: [
|
|
25309
|
-
DropdownSelectorComponent,
|
|
25310
25631
|
AutocompleteComponent,
|
|
25311
25632
|
TextInputComponent,
|
|
25312
25633
|
DragAndDropFileInputComponent,
|
|
@@ -25319,7 +25640,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25319
25640
|
CopyTextButtonComponent,
|
|
25320
25641
|
CheckboxComponent,
|
|
25321
25642
|
SearchInputComponent,
|
|
25322
|
-
DateRangePickerComponent,
|
|
25323
25643
|
],
|
|
25324
25644
|
imports: [
|
|
25325
25645
|
CommonModule,
|
|
@@ -25343,6 +25663,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25343
25663
|
TextAreaComponent,
|
|
25344
25664
|
ButtonComponent,
|
|
25345
25665
|
ImageInputComponent,
|
|
25666
|
+
DropdownSelectorComponent,
|
|
25667
|
+
DateRangePickerComponent,
|
|
25346
25668
|
],
|
|
25347
25669
|
exports: [
|
|
25348
25670
|
DropdownSelectorComponent,
|
|
@@ -25416,7 +25738,7 @@ class AddLayerFromOgcApiComponent {
|
|
|
25416
25738
|
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25417
25739
|
}
|
|
25418
25740
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25419
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }] }); }
|
|
25741
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }] }); }
|
|
25420
25742
|
}
|
|
25421
25743
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25422
25744
|
type: Component,
|
|
@@ -26175,7 +26497,7 @@ class ApiCardComponent {
|
|
|
26175
26497
|
}
|
|
26176
26498
|
}
|
|
26177
26499
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
26500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26179
26501
|
}
|
|
26180
26502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26181
26503
|
type: Component,
|
|
@@ -26372,7 +26694,7 @@ class MarkdownEditorComponent {
|
|
|
26372
26694
|
this.textContentChanged.emit(this.textContent);
|
|
26373
26695
|
}
|
|
26374
26696
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26375
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26376
26698
|
}
|
|
26377
26699
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
26378
26700
|
type: Component,
|
|
@@ -26807,10 +27129,7 @@ class RecordApiFormComponent {
|
|
|
26807
27129
|
this.offset$ = new BehaviorSubject('');
|
|
26808
27130
|
this.limit$ = new BehaviorSubject('');
|
|
26809
27131
|
this.format$ = new BehaviorSubject('');
|
|
26810
|
-
this.
|
|
26811
|
-
{ label: 'JSON', value: 'json' },
|
|
26812
|
-
{ label: 'CSV', value: 'csv' },
|
|
26813
|
-
];
|
|
27132
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
26814
27133
|
this.apiQueryUrl$ = combineLatest([this.offset$, this.limit$, this.format$]).pipe(map$2(([offset, limit, format]) => {
|
|
26815
27134
|
let outputUrl;
|
|
26816
27135
|
if (this.apiBaseUrl) {
|
|
@@ -26833,6 +27152,8 @@ class RecordApiFormComponent {
|
|
|
26833
27152
|
}
|
|
26834
27153
|
set apiLink(value) {
|
|
26835
27154
|
this.apiBaseUrl = value ? value.url.href : undefined;
|
|
27155
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27156
|
+
this.parseOutputFormats();
|
|
26836
27157
|
this.resetUrl();
|
|
26837
27158
|
}
|
|
26838
27159
|
setOffset(value) {
|
|
@@ -26850,19 +27171,45 @@ class RecordApiFormComponent {
|
|
|
26850
27171
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
26851
27172
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26852
27173
|
}
|
|
27174
|
+
parseOutputFormats() {
|
|
27175
|
+
const apiUrl = this.apiBaseUrl.slice(-1) === '?'
|
|
27176
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27177
|
+
: this.apiBaseUrl;
|
|
27178
|
+
this.getOutputFormats(apiUrl).then((outputFormats) => {
|
|
27179
|
+
const formatsList = outputFormats.itemFormats.map((format) => {
|
|
27180
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27181
|
+
if (normalizedFormat) {
|
|
27182
|
+
return {
|
|
27183
|
+
label: normalizedFormat?.toUpperCase(),
|
|
27184
|
+
value: normalizedFormat,
|
|
27185
|
+
};
|
|
27186
|
+
}
|
|
27187
|
+
return null;
|
|
27188
|
+
});
|
|
27189
|
+
this.outputFormats = this.outputFormats.concat(formatsList.filter(Boolean));
|
|
27190
|
+
this.outputFormats = this.outputFormats
|
|
27191
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27192
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27193
|
+
});
|
|
27194
|
+
}
|
|
27195
|
+
async getOutputFormats(url) {
|
|
27196
|
+
const endpoint = await new OgcApiEndpoint(url);
|
|
27197
|
+
const firstCollection = (await endpoint.featureCollections)[0];
|
|
27198
|
+
return endpoint.getCollectionInfo(firstCollection);
|
|
27199
|
+
}
|
|
26853
27200
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"
|
|
27201
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26855
27202
|
}
|
|
26856
27203
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26857
27204
|
type: Component,
|
|
26858
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"
|
|
27205
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
26859
27206
|
}], propDecorators: { apiLink: [{
|
|
26860
27207
|
type: Input
|
|
26861
27208
|
}] } });
|
|
26862
27209
|
|
|
26863
27210
|
class RelatedRecordCardComponent {
|
|
26864
27211
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26865
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
27212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26866
27213
|
}
|
|
26867
27214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
26868
27215
|
type: Component,
|
|
@@ -26999,7 +27346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26999
27346
|
|
|
27000
27347
|
class FormFieldWrapperComponent {
|
|
27001
27348
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27002
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3
|
|
27349
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27003
27350
|
}
|
|
27004
27351
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27005
27352
|
type: Component,
|
|
@@ -27187,7 +27534,7 @@ class UserPreviewComponent {
|
|
|
27187
27534
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27188
27535
|
}
|
|
27189
27536
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27190
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3
|
|
27537
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27191
27538
|
}
|
|
27192
27539
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27193
27540
|
type: Component,
|
|
@@ -27198,6 +27545,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27198
27545
|
type: Input
|
|
27199
27546
|
}] } });
|
|
27200
27547
|
|
|
27548
|
+
class TimeSincePipe {
|
|
27549
|
+
constructor(translate) {
|
|
27550
|
+
this.translate = translate;
|
|
27551
|
+
}
|
|
27552
|
+
transform(value) {
|
|
27553
|
+
if (isNaN(value.getTime())) {
|
|
27554
|
+
throw new Error('Invalid Date');
|
|
27555
|
+
}
|
|
27556
|
+
const maintenant = new Date();
|
|
27557
|
+
let locale;
|
|
27558
|
+
switch (this.translate.currentLang) {
|
|
27559
|
+
case 'fr':
|
|
27560
|
+
locale = fr$1;
|
|
27561
|
+
break;
|
|
27562
|
+
case 'de':
|
|
27563
|
+
locale = de$1;
|
|
27564
|
+
break;
|
|
27565
|
+
case 'es':
|
|
27566
|
+
locale = es$1;
|
|
27567
|
+
break;
|
|
27568
|
+
case 'it':
|
|
27569
|
+
locale = it$1;
|
|
27570
|
+
break;
|
|
27571
|
+
case 'nl':
|
|
27572
|
+
locale = nl$1;
|
|
27573
|
+
break;
|
|
27574
|
+
case 'pt':
|
|
27575
|
+
locale = pt$1;
|
|
27576
|
+
break;
|
|
27577
|
+
case 'sk':
|
|
27578
|
+
locale = sk;
|
|
27579
|
+
break;
|
|
27580
|
+
case 'en':
|
|
27581
|
+
default:
|
|
27582
|
+
locale = enUS;
|
|
27583
|
+
break;
|
|
27584
|
+
}
|
|
27585
|
+
return formatDistance(value, maintenant, {
|
|
27586
|
+
addSuffix: true,
|
|
27587
|
+
locale: locale,
|
|
27588
|
+
});
|
|
27589
|
+
}
|
|
27590
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27591
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, isStandalone: true, name: "timeSince" }); }
|
|
27592
|
+
}
|
|
27593
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, decorators: [{
|
|
27594
|
+
type: Pipe,
|
|
27595
|
+
args: [{
|
|
27596
|
+
name: 'timeSince',
|
|
27597
|
+
standalone: true,
|
|
27598
|
+
}]
|
|
27599
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
27600
|
+
|
|
27601
|
+
class UserFeedbackItemComponent {
|
|
27602
|
+
constructor() {
|
|
27603
|
+
this.newUserFeedbackAnswer = new EventEmitter();
|
|
27604
|
+
this.isAnAnswer = false;
|
|
27605
|
+
this.newAnswer = '';
|
|
27606
|
+
this.isAnswerEmpty = true;
|
|
27607
|
+
}
|
|
27608
|
+
ngOnInit() {
|
|
27609
|
+
this.isAnAnswer = !!this.userFeedbackParent.parentUuid;
|
|
27610
|
+
}
|
|
27611
|
+
onNewAnswerValueChange() {
|
|
27612
|
+
this.isAnswerEmpty = this.newAnswer.length === 0;
|
|
27613
|
+
}
|
|
27614
|
+
publishNewAnswer() {
|
|
27615
|
+
if (this.newAnswer.trim() === '')
|
|
27616
|
+
return;
|
|
27617
|
+
const newAnswer = {
|
|
27618
|
+
...this.userFeedbackParent,
|
|
27619
|
+
uuid: undefined,
|
|
27620
|
+
published: true,
|
|
27621
|
+
comment: this.newAnswer,
|
|
27622
|
+
parentUuid: this.userFeedbackParent.uuid,
|
|
27623
|
+
authorUserId: this.activeUser?.id,
|
|
27624
|
+
authorEmail: this.activeUser?.email,
|
|
27625
|
+
date: new Date(),
|
|
27626
|
+
authorName: `${this.activeUser?.name} ${this.activeUser?.surname}`,
|
|
27627
|
+
};
|
|
27628
|
+
this.newUserFeedbackAnswer.emit(newAnswer);
|
|
27629
|
+
this.newAnswer = '';
|
|
27630
|
+
this.onNewAnswerValueChange();
|
|
27631
|
+
}
|
|
27632
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27633
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", isActiveUserEditor: "isActiveUserEditor", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"isActiveUserEditor\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], 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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: ["userFeedbackParent", "userFeedBacksAnswers", "isActiveUserEditor", "activeUser", "isLastComment", "isAddUserFeedbackLoading"], outputs: ["newUserFeedbackAnswer"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeSincePipe, name: "timeSince" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27634
|
+
}
|
|
27635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27636
|
+
type: Component,
|
|
27637
|
+
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"isActiveUserEditor\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
27638
|
+
}], propDecorators: { userFeedbackParent: [{
|
|
27639
|
+
type: Input
|
|
27640
|
+
}], userFeedBacksAnswers: [{
|
|
27641
|
+
type: Input
|
|
27642
|
+
}], isActiveUserEditor: [{
|
|
27643
|
+
type: Input
|
|
27644
|
+
}], activeUser: [{
|
|
27645
|
+
type: Input
|
|
27646
|
+
}], isLastComment: [{
|
|
27647
|
+
type: Input
|
|
27648
|
+
}], isAddUserFeedbackLoading: [{
|
|
27649
|
+
type: Input
|
|
27650
|
+
}], newUserFeedbackAnswer: [{
|
|
27651
|
+
type: Output
|
|
27652
|
+
}] } });
|
|
27653
|
+
|
|
27201
27654
|
class UiElementsModule {
|
|
27202
27655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27203
27656
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, declarations: [MetadataInfoComponent,
|
|
@@ -27219,6 +27672,7 @@ class UiElementsModule {
|
|
|
27219
27672
|
PaginationButtonsComponent,
|
|
27220
27673
|
MaxLinesComponent,
|
|
27221
27674
|
RecordApiFormComponent,
|
|
27675
|
+
UserFeedbackItemComponent,
|
|
27222
27676
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
27223
27677
|
MatIconModule,
|
|
27224
27678
|
MatTooltipModule,
|
|
@@ -27229,7 +27683,8 @@ class UiElementsModule {
|
|
|
27229
27683
|
FormsModule,
|
|
27230
27684
|
NgOptimizedImage,
|
|
27231
27685
|
MarkdownParserComponent,
|
|
27232
|
-
ThumbnailComponent
|
|
27686
|
+
ThumbnailComponent,
|
|
27687
|
+
TimeSincePipe], exports: [MetadataInfoComponent,
|
|
27233
27688
|
ContentGhostComponent,
|
|
27234
27689
|
DownloadItemComponent,
|
|
27235
27690
|
DownloadsListComponent,
|
|
@@ -27249,6 +27704,7 @@ class UiElementsModule {
|
|
|
27249
27704
|
MaxLinesComponent,
|
|
27250
27705
|
RecordApiFormComponent,
|
|
27251
27706
|
MarkdownParserComponent,
|
|
27707
|
+
UserFeedbackItemComponent,
|
|
27252
27708
|
ImageOverlayPreviewComponent] }); }
|
|
27253
27709
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, imports: [CommonModule,
|
|
27254
27710
|
MatIconModule,
|
|
@@ -27279,6 +27735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27279
27735
|
NgOptimizedImage,
|
|
27280
27736
|
MarkdownParserComponent,
|
|
27281
27737
|
ThumbnailComponent,
|
|
27738
|
+
TimeSincePipe,
|
|
27282
27739
|
],
|
|
27283
27740
|
declarations: [
|
|
27284
27741
|
MetadataInfoComponent,
|
|
@@ -27300,6 +27757,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27300
27757
|
PaginationButtonsComponent,
|
|
27301
27758
|
MaxLinesComponent,
|
|
27302
27759
|
RecordApiFormComponent,
|
|
27760
|
+
UserFeedbackItemComponent,
|
|
27303
27761
|
ImageOverlayPreviewComponent,
|
|
27304
27762
|
],
|
|
27305
27763
|
exports: [
|
|
@@ -27323,6 +27781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27323
27781
|
MaxLinesComponent,
|
|
27324
27782
|
RecordApiFormComponent,
|
|
27325
27783
|
MarkdownParserComponent,
|
|
27784
|
+
UserFeedbackItemComponent,
|
|
27326
27785
|
ImageOverlayPreviewComponent,
|
|
27327
27786
|
],
|
|
27328
27787
|
}]
|
|
@@ -29652,7 +30111,7 @@ class AddLayerFromWmsComponent {
|
|
|
29652
30111
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29653
30112
|
}
|
|
29654
30113
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29655
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29656
30115
|
}
|
|
29657
30116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29658
30117
|
type: Component,
|
|
@@ -29803,7 +30262,7 @@ class AddLayerFromWfsComponent {
|
|
|
29803
30262
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29804
30263
|
}
|
|
29805
30264
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29806
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29807
30266
|
}
|
|
29808
30267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
29809
30268
|
type: Component,
|
|
@@ -30198,31 +30657,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30198
30657
|
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
30199
30658
|
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
30200
30659
|
|
|
30660
|
+
/*
|
|
30661
|
+
Metadata actions
|
|
30662
|
+
*/
|
|
30201
30663
|
const loadFullMetadata = createAction('[Metadata view] Load full metadata', props());
|
|
30202
30664
|
const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
|
|
30203
|
-
const
|
|
30204
|
-
const
|
|
30665
|
+
const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
|
|
30666
|
+
const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
|
|
30667
|
+
const closeMetadata = createAction('[Metadata view] close');
|
|
30668
|
+
/*
|
|
30669
|
+
Related actions
|
|
30670
|
+
*/
|
|
30205
30671
|
const setRelated = createAction('[Metadata view] Set related records', props());
|
|
30672
|
+
/*
|
|
30673
|
+
ChartConfig actions
|
|
30674
|
+
*/
|
|
30206
30675
|
const setChartConfig = createAction('[Metadata view] Set chart config', props());
|
|
30207
|
-
|
|
30676
|
+
/*
|
|
30677
|
+
User Feedbacks actions
|
|
30678
|
+
*/
|
|
30679
|
+
const addUserFeedback = createAction('[Metadata view] Add UserFeedback', props());
|
|
30680
|
+
const addUserFeedbackSuccess = createAction('[Metadata view] Add UserFeedback Success', props());
|
|
30681
|
+
const addUserFeedbackFailure = createAction('[Metadata view] Add UserFeedback Failure', props());
|
|
30682
|
+
const loadUserFeedbacks = createAction('[Metadata view] Load UserFeedbacks', props());
|
|
30683
|
+
const loadUserFeedbacksSuccess = createAction('[Metadata view] Load UserFeedbacks Success', props());
|
|
30684
|
+
const loadUserFeedbacksFailure = createAction('[Metadata view] Load UserFeedbacks Failure', props());
|
|
30208
30685
|
|
|
30209
30686
|
var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
30210
30687
|
__proto__: null,
|
|
30211
|
-
|
|
30212
|
-
|
|
30688
|
+
addUserFeedback: addUserFeedback,
|
|
30689
|
+
addUserFeedbackFailure: addUserFeedbackFailure,
|
|
30690
|
+
addUserFeedbackSuccess: addUserFeedbackSuccess,
|
|
30691
|
+
closeMetadata: closeMetadata,
|
|
30213
30692
|
loadFullMetadata: loadFullMetadata,
|
|
30214
|
-
|
|
30693
|
+
loadFullMetadataFailure: loadFullMetadataFailure,
|
|
30694
|
+
loadFullMetadataSuccess: loadFullMetadataSuccess,
|
|
30695
|
+
loadUserFeedbacks: loadUserFeedbacks,
|
|
30696
|
+
loadUserFeedbacksFailure: loadUserFeedbacksFailure,
|
|
30697
|
+
loadUserFeedbacksSuccess: loadUserFeedbacksSuccess,
|
|
30215
30698
|
setChartConfig: setChartConfig,
|
|
30216
30699
|
setIncompleteMetadata: setIncompleteMetadata,
|
|
30217
30700
|
setRelated: setRelated
|
|
30218
30701
|
});
|
|
30219
30702
|
|
|
30220
|
-
const
|
|
30221
|
-
const
|
|
30703
|
+
const METADATA_VIEW_FEATURE_STATE_KEY = 'metadataView';
|
|
30704
|
+
const initialMetadataViewState = {
|
|
30222
30705
|
error: null,
|
|
30223
30706
|
loadingFull: false,
|
|
30707
|
+
allUserFeedbacksLoading: false,
|
|
30708
|
+
addUserFeedbackLoading: false,
|
|
30224
30709
|
};
|
|
30225
|
-
const
|
|
30710
|
+
const metadataViewReducer = createReducer(initialMetadataViewState,
|
|
30711
|
+
/*
|
|
30712
|
+
Metadata reducers
|
|
30713
|
+
*/
|
|
30714
|
+
on(loadFullMetadata, (state) => ({
|
|
30226
30715
|
...state,
|
|
30227
30716
|
error: null,
|
|
30228
30717
|
loadingFull: true,
|
|
@@ -30230,38 +30719,82 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
30230
30719
|
...state,
|
|
30231
30720
|
error: null,
|
|
30232
30721
|
metadata: incomplete,
|
|
30233
|
-
})), on(
|
|
30722
|
+
})), on(loadFullMetadataSuccess, (state, { full }) => ({
|
|
30234
30723
|
...state,
|
|
30235
30724
|
error: null,
|
|
30236
30725
|
metadata: full,
|
|
30237
30726
|
loadingFull: false,
|
|
30238
|
-
})), on(
|
|
30727
|
+
})), on(loadFullMetadataFailure, (state, { otherError, notFound }) => ({
|
|
30239
30728
|
...state,
|
|
30240
30729
|
error: { otherError, notFound },
|
|
30241
30730
|
loadingFull: false,
|
|
30242
|
-
})), on(
|
|
30731
|
+
})), on(closeMetadata, (state) => {
|
|
30732
|
+
const { metadata, related, userFeedbacks, ...stateWithoutMetadata } = state;
|
|
30733
|
+
return stateWithoutMetadata;
|
|
30734
|
+
}),
|
|
30735
|
+
/*
|
|
30736
|
+
Related reducers
|
|
30737
|
+
*/
|
|
30738
|
+
on(setRelated, (state, { related }) => ({
|
|
30243
30739
|
...state,
|
|
30244
30740
|
related,
|
|
30245
|
-
})),
|
|
30741
|
+
})),
|
|
30742
|
+
/*
|
|
30743
|
+
ChartConfig reducers
|
|
30744
|
+
*/
|
|
30745
|
+
on(setChartConfig, (state, { chartConfig }) => ({
|
|
30246
30746
|
...state,
|
|
30247
30747
|
chartConfig,
|
|
30248
|
-
})),
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30748
|
+
})),
|
|
30749
|
+
/*
|
|
30750
|
+
UserFeedbacks reducers
|
|
30751
|
+
*/
|
|
30752
|
+
on(loadUserFeedbacks, (state) => ({
|
|
30753
|
+
...state,
|
|
30754
|
+
error: null,
|
|
30755
|
+
allUserFeedbacksLoading: true,
|
|
30756
|
+
})), on(addUserFeedback, (state) => ({
|
|
30757
|
+
...state,
|
|
30758
|
+
addUserFeedbackLoading: true,
|
|
30759
|
+
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30760
|
+
...state,
|
|
30761
|
+
error: null,
|
|
30762
|
+
userFeedbacks: userFeedbacks,
|
|
30763
|
+
addUserFeedbackLoading: false,
|
|
30764
|
+
allUserFeedbacksLoading: false,
|
|
30765
|
+
})), on(loadUserFeedbacksFailure, (state, { otherError, notFound }) => ({
|
|
30766
|
+
...state,
|
|
30767
|
+
error: { otherError, notFound },
|
|
30768
|
+
addUserFeedbackLoading: false,
|
|
30769
|
+
allUserFeedbacksLoading: false,
|
|
30770
|
+
})));
|
|
30771
|
+
function reducer$1(metadataViewState, action) {
|
|
30772
|
+
return metadataViewReducer(metadataViewState, action);
|
|
30255
30773
|
}
|
|
30256
30774
|
|
|
30257
|
-
const getMdViewState = createFeatureSelector(
|
|
30775
|
+
const getMdViewState = createFeatureSelector(METADATA_VIEW_FEATURE_STATE_KEY);
|
|
30776
|
+
/*
|
|
30777
|
+
Metadata selectors
|
|
30778
|
+
*/
|
|
30258
30779
|
const getMetadataUuid = createSelector(getMdViewState, (state) => state.metadata ? state.metadata.uniqueIdentifier : null);
|
|
30259
30780
|
const getMetadata = createSelector(getMdViewState, (state) => state.metadata);
|
|
30260
30781
|
const getMetadataIsIncomplete = createSelector(getMdViewState, (state) => (state.metadata ? state.loadingFull : null));
|
|
30261
30782
|
const getMetadataIsLoading = createSelector(getMdViewState, (state) => state.loadingFull);
|
|
30262
30783
|
const getMetadataError = createSelector(getMdViewState, (state) => state.error);
|
|
30784
|
+
/*
|
|
30785
|
+
Related selectors
|
|
30786
|
+
*/
|
|
30263
30787
|
const getRelated = createSelector(getMdViewState, (state) => state.related);
|
|
30788
|
+
/*
|
|
30789
|
+
Metadata selectors
|
|
30790
|
+
*/
|
|
30264
30791
|
const getChartConfig = createSelector(getMdViewState, (state) => state.chartConfig);
|
|
30792
|
+
/*
|
|
30793
|
+
UserFeedback selectors
|
|
30794
|
+
*/
|
|
30795
|
+
const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
|
|
30796
|
+
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
30797
|
+
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
30265
30798
|
|
|
30266
30799
|
/**
|
|
30267
30800
|
* The Metadata View Facade is used to render complete metadata records.
|
|
@@ -30270,11 +30803,12 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
|
|
|
30270
30803
|
* To clear the current record use the `close()` method.
|
|
30271
30804
|
*/
|
|
30272
30805
|
class MdViewFacade {
|
|
30273
|
-
constructor(store, linkClassifier) {
|
|
30806
|
+
constructor(store, linkClassifier, avatarService) {
|
|
30274
30807
|
this.store = store;
|
|
30275
30808
|
this.linkClassifier = linkClassifier;
|
|
30809
|
+
this.avatarService = avatarService;
|
|
30276
30810
|
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
30277
|
-
this.
|
|
30811
|
+
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
30278
30812
|
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
30279
30813
|
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
30280
30814
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
@@ -30288,6 +30822,9 @@ class MdViewFacade {
|
|
|
30288
30822
|
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
30289
30823
|
this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
|
|
30290
30824
|
this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
|
|
30825
|
+
this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
|
|
30826
|
+
this.isAllUserFeedbackLoading$ = this.store.pipe(select(getAllUserFeedbacksLoading));
|
|
30827
|
+
this.isAddUserFeedbackLoading$ = this.store.pipe(select(getAddUserFeedbacksLoading));
|
|
30291
30828
|
}
|
|
30292
30829
|
/**
|
|
30293
30830
|
* This will show an incomplete record (e.g. from a search result) as a preview
|
|
@@ -30302,39 +30839,73 @@ class MdViewFacade {
|
|
|
30302
30839
|
loadFull(uuid) {
|
|
30303
30840
|
this.store.dispatch(loadFullMetadata({ uuid }));
|
|
30304
30841
|
}
|
|
30305
|
-
|
|
30306
|
-
this.store.dispatch(
|
|
30842
|
+
closeMetadata() {
|
|
30843
|
+
this.store.dispatch(closeMetadata());
|
|
30307
30844
|
}
|
|
30308
30845
|
setChartConfig(chartConfig) {
|
|
30309
30846
|
this.store.dispatch(setChartConfig({ chartConfig }));
|
|
30310
30847
|
}
|
|
30311
|
-
|
|
30848
|
+
/**
|
|
30849
|
+
* UserFeedbacks
|
|
30850
|
+
*/
|
|
30851
|
+
addUserFeedback(userFeedback) {
|
|
30852
|
+
this.store.dispatch(addUserFeedback({ userFeedback }));
|
|
30853
|
+
}
|
|
30854
|
+
loadUserFeedbacks(datasetUuid) {
|
|
30855
|
+
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
30856
|
+
}
|
|
30857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, deps: [{ token: i1$2.Store }, { token: LinkClassifierService }, { token: AvatarServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30312
30858
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade }); }
|
|
30313
30859
|
}
|
|
30314
30860
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
|
|
30315
30861
|
type: Injectable
|
|
30316
|
-
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }]; } });
|
|
30862
|
+
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }]; } });
|
|
30317
30863
|
|
|
30318
30864
|
class MdViewEffects {
|
|
30319
|
-
constructor(actions$, recordsRepository) {
|
|
30865
|
+
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
30320
30866
|
this.actions$ = actions$;
|
|
30321
30867
|
this.recordsRepository = recordsRepository;
|
|
30322
|
-
this.
|
|
30868
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
30869
|
+
/*
|
|
30870
|
+
Metadata effects
|
|
30871
|
+
*/
|
|
30872
|
+
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getByUniqueIdentifier(uuid)), map$1((record) => {
|
|
30323
30873
|
if (record === null) {
|
|
30324
|
-
return
|
|
30874
|
+
return loadFullMetadataFailure({ notFound: true });
|
|
30325
30875
|
}
|
|
30326
|
-
return
|
|
30327
|
-
}), catchError((error) => of(
|
|
30328
|
-
|
|
30876
|
+
return loadFullMetadataSuccess({ full: record });
|
|
30877
|
+
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
30878
|
+
/*
|
|
30879
|
+
Related effects
|
|
30880
|
+
*/
|
|
30881
|
+
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
30329
30882
|
return setRelated({ related });
|
|
30330
30883
|
}), catchError((error) => of(setRelated({ related: null })))));
|
|
30884
|
+
/*
|
|
30885
|
+
UserFeedback effects
|
|
30886
|
+
*/
|
|
30887
|
+
this.loadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(loadUserFeedbacks), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30888
|
+
otherError: error.message,
|
|
30889
|
+
})))))));
|
|
30890
|
+
this.reloadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedbackSuccess), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30891
|
+
otherError: error.message,
|
|
30892
|
+
})))))));
|
|
30893
|
+
this.addUserFeedback$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedback), mergeMap$1((action) => this.platformServiceInterface
|
|
30894
|
+
.postUserFeedbacks(action.userFeedback)
|
|
30895
|
+
.pipe(map$1(() => addUserFeedbackSuccess({
|
|
30896
|
+
datasetUuid: action.userFeedback.metadataUUID,
|
|
30897
|
+
})), catchError((error) => {
|
|
30898
|
+
return of(addUserFeedbackFailure({
|
|
30899
|
+
otherError: error.message,
|
|
30900
|
+
}));
|
|
30901
|
+
})))));
|
|
30331
30902
|
}
|
|
30332
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30903
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30333
30904
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects }); }
|
|
30334
30905
|
}
|
|
30335
30906
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
30336
30907
|
type: Injectable
|
|
30337
|
-
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }]; } });
|
|
30908
|
+
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
30338
30909
|
|
|
30339
30910
|
class FigureComponent {
|
|
30340
30911
|
constructor() {
|
|
@@ -30569,7 +31140,7 @@ class TableComponent {
|
|
|
30569
31140
|
return rowIdPrefix + id;
|
|
30570
31141
|
}
|
|
30571
31142
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30572
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$
|
|
31143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$2.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30573
31144
|
}
|
|
30574
31145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
30575
31146
|
type: Component,
|
|
@@ -31518,6 +32089,46 @@ class DataService {
|
|
|
31518
32089
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31519
32090
|
}))));
|
|
31520
32091
|
}
|
|
32092
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32093
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32094
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32095
|
+
return {
|
|
32096
|
+
...ogcApiLink,
|
|
32097
|
+
type: 'download',
|
|
32098
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32099
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32100
|
+
};
|
|
32101
|
+
});
|
|
32102
|
+
}
|
|
32103
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32104
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32105
|
+
return await endpoint.featureCollections
|
|
32106
|
+
.then((collections) => {
|
|
32107
|
+
return endpoint.getCollectionInfo(collections[0]);
|
|
32108
|
+
})
|
|
32109
|
+
.catch((error) => {
|
|
32110
|
+
if (error instanceof Error) {
|
|
32111
|
+
throw new Error(`wfs.unreachable.unknown`);
|
|
32112
|
+
}
|
|
32113
|
+
else {
|
|
32114
|
+
if (error.type === 'network') {
|
|
32115
|
+
throw new Error(`wfs.unreachable.cors`);
|
|
32116
|
+
}
|
|
32117
|
+
if (error.type === 'http') {
|
|
32118
|
+
throw new Error(`wfs.unreachable.http`);
|
|
32119
|
+
}
|
|
32120
|
+
if (error.type === 'parse') {
|
|
32121
|
+
throw new Error(`wfs.unreachable.parse`);
|
|
32122
|
+
}
|
|
32123
|
+
if (error.type === 'unsupportedType') {
|
|
32124
|
+
throw new Error(`wfs.unreachable.unsupportedType`);
|
|
32125
|
+
}
|
|
32126
|
+
else {
|
|
32127
|
+
throw new Error(`wfs.unreachable.unknown`);
|
|
32128
|
+
}
|
|
32129
|
+
}
|
|
32130
|
+
});
|
|
32131
|
+
}
|
|
31521
32132
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31522
32133
|
return ['json', 'geojson'].map((format) => ({
|
|
31523
32134
|
...esriRestLink,
|
|
@@ -31561,6 +32172,17 @@ class DataService {
|
|
|
31561
32172
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31562
32173
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31563
32174
|
}
|
|
32175
|
+
else if (link.type === 'service' &&
|
|
32176
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32177
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32178
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32179
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32180
|
+
}), tap$1((url) => {
|
|
32181
|
+
if (url === null) {
|
|
32182
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32183
|
+
}
|
|
32184
|
+
}));
|
|
32185
|
+
}
|
|
31564
32186
|
return throwError(() => 'protocol not supported');
|
|
31565
32187
|
}
|
|
31566
32188
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -32019,7 +32641,8 @@ class MapViewComponent {
|
|
|
32019
32641
|
}
|
|
32020
32642
|
else if ((link.type === 'service' &&
|
|
32021
32643
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32022
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32644
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32645
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32023
32646
|
link.type === 'download') {
|
|
32024
32647
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32025
32648
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -32653,7 +33276,7 @@ class FeatureRecordModule {
|
|
|
32653
33276
|
DataViewWebComponentComponent,
|
|
32654
33277
|
DataViewShareComponent] }); }
|
|
32655
33278
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
32656
|
-
StoreModule.forFeature(
|
|
33279
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32657
33280
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32658
33281
|
UiLayoutModule,
|
|
32659
33282
|
FeatureMapModule,
|
|
@@ -32681,7 +33304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32681
33304
|
],
|
|
32682
33305
|
imports: [
|
|
32683
33306
|
CommonModule,
|
|
32684
|
-
StoreModule.forFeature(
|
|
33307
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32685
33308
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32686
33309
|
UiLayoutModule,
|
|
32687
33310
|
FeatureMapModule,
|
|
@@ -32746,6 +33369,20 @@ const DEFAULT_FIELDS = [
|
|
|
32746
33369
|
},
|
|
32747
33370
|
onSaveProcess: '${dateNow()}',
|
|
32748
33371
|
},
|
|
33372
|
+
{
|
|
33373
|
+
model: 'licenses',
|
|
33374
|
+
formFieldConfig: {
|
|
33375
|
+
labelKey: marker('editor.record.form.license'),
|
|
33376
|
+
type: 'list',
|
|
33377
|
+
},
|
|
33378
|
+
},
|
|
33379
|
+
{
|
|
33380
|
+
model: 'resourceUpdated',
|
|
33381
|
+
formFieldConfig: {
|
|
33382
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33383
|
+
type: 'date',
|
|
33384
|
+
},
|
|
33385
|
+
},
|
|
32749
33386
|
];
|
|
32750
33387
|
|
|
32751
33388
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33130,7 +33767,7 @@ class WizardFieldComponent {
|
|
|
33130
33767
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33131
33768
|
},
|
|
33132
33769
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
33133
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type:
|
|
33770
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33134
33771
|
}
|
|
33135
33772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33136
33773
|
type: Component,
|
|
@@ -33459,6 +34096,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33459
34096
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33460
34097
|
}] });
|
|
33461
34098
|
|
|
34099
|
+
class FormFieldLicenseComponent {
|
|
34100
|
+
constructor() {
|
|
34101
|
+
this.choices = [
|
|
34102
|
+
{
|
|
34103
|
+
value: 'cc-by',
|
|
34104
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34105
|
+
},
|
|
34106
|
+
{
|
|
34107
|
+
value: 'cc-by-sa',
|
|
34108
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34109
|
+
},
|
|
34110
|
+
{
|
|
34111
|
+
value: 'cc-zero',
|
|
34112
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34113
|
+
},
|
|
34114
|
+
{
|
|
34115
|
+
value: 'etalab',
|
|
34116
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34117
|
+
},
|
|
34118
|
+
{
|
|
34119
|
+
value: 'etalab-v2',
|
|
34120
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34121
|
+
},
|
|
34122
|
+
{
|
|
34123
|
+
value: 'odbl',
|
|
34124
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34125
|
+
},
|
|
34126
|
+
{
|
|
34127
|
+
value: 'odc-by',
|
|
34128
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34129
|
+
},
|
|
34130
|
+
{
|
|
34131
|
+
value: 'pddl',
|
|
34132
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34133
|
+
},
|
|
34134
|
+
{
|
|
34135
|
+
value: 'unknown',
|
|
34136
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34137
|
+
},
|
|
34138
|
+
];
|
|
34139
|
+
}
|
|
34140
|
+
get selected() {
|
|
34141
|
+
return this.control.value[0]?.text;
|
|
34142
|
+
}
|
|
34143
|
+
onSelectValue(value) {
|
|
34144
|
+
this.control.setValue([{ text: value }]);
|
|
34145
|
+
}
|
|
34146
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34147
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34148
|
+
}
|
|
34149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34150
|
+
type: Component,
|
|
34151
|
+
args: [{ selector: 'gn-ui-form-field-license', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DropdownSelectorComponent], template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34152
|
+
}], propDecorators: { control: [{
|
|
34153
|
+
type: Input
|
|
34154
|
+
}], label: [{
|
|
34155
|
+
type: Input
|
|
34156
|
+
}] } });
|
|
34157
|
+
|
|
34158
|
+
class FormFieldResourceUpdatedComponent {
|
|
34159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34160
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldResourceUpdatedComponent, isStandalone: true, selector: "gn-ui-form-field-resource-updated", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n", styles: [""], dependencies: [{ kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34161
|
+
}
|
|
34162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34163
|
+
type: Component,
|
|
34164
|
+
args: [{ selector: 'gn-ui-form-field-resource-updated', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DatePickerComponent], template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n" }]
|
|
34165
|
+
}], propDecorators: { control: [{
|
|
34166
|
+
type: Input
|
|
34167
|
+
}] } });
|
|
34168
|
+
|
|
33462
34169
|
class FormFieldComponent {
|
|
33463
34170
|
set value(v) {
|
|
33464
34171
|
this.formControl.setValue(v, {
|
|
@@ -33513,8 +34220,17 @@ class FormFieldComponent {
|
|
|
33513
34220
|
get isAbstract() {
|
|
33514
34221
|
return this.model === 'abstract';
|
|
33515
34222
|
}
|
|
34223
|
+
get isLicenses() {
|
|
34224
|
+
return this.model === 'licenses';
|
|
34225
|
+
}
|
|
34226
|
+
get isResourceUpdated() {
|
|
34227
|
+
return this.model === 'resourceUpdated';
|
|
34228
|
+
}
|
|
34229
|
+
get withoutWrapper() {
|
|
34230
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34231
|
+
}
|
|
33516
34232
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33517
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <
|
|
34233
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldObjectComponent, selector: "gn-ui-form-field-object" }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldTemporalExtentComponent, selector: "gn-ui-form-field-temporal-extent" }, { kind: "component", type: FormFieldFileComponent, selector: "gn-ui-form-field-file", inputs: ["control", "readonly", "invalid", "placeholder"] }, { kind: "component", type: FormFieldArrayComponent, selector: "gn-ui-form-field-array" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33518
34234
|
}
|
|
33519
34235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33520
34236
|
type: Component,
|
|
@@ -33524,6 +34240,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33524
34240
|
EditableLabelDirective,
|
|
33525
34241
|
MatIconModule,
|
|
33526
34242
|
MatTooltipModule,
|
|
34243
|
+
FormFieldWrapperComponent,
|
|
34244
|
+
FormFieldLicenseComponent,
|
|
34245
|
+
FormFieldResourceUpdatedComponent,
|
|
33527
34246
|
FormFieldSimpleComponent,
|
|
33528
34247
|
FormFieldRichComponent,
|
|
33529
34248
|
FormFieldObjectComponent,
|
|
@@ -33532,7 +34251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33532
34251
|
FormFieldFileComponent,
|
|
33533
34252
|
FormFieldArrayComponent,
|
|
33534
34253
|
TranslateModule,
|
|
33535
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34254
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
33536
34255
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33537
34256
|
type: Input
|
|
33538
34257
|
}], config: [{
|
|
@@ -33863,7 +34582,7 @@ class RouterEffects {
|
|
|
33863
34582
|
* the search results happens
|
|
33864
34583
|
*/
|
|
33865
34584
|
this.navigateToSearch$ = createEffect(() => this._actions$.pipe(navigation(this.routerConfig.searchRouteComponent, {
|
|
33866
|
-
run: () =>
|
|
34585
|
+
run: () => closeMetadata(),
|
|
33867
34586
|
})));
|
|
33868
34587
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
33869
34588
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
@@ -33890,7 +34609,7 @@ class DefaultRouterModule {
|
|
|
33890
34609
|
};
|
|
33891
34610
|
}
|
|
33892
34611
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
33893
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
34612
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$3.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
33894
34613
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
33895
34614
|
RouterFacade,
|
|
33896
34615
|
{
|
|
@@ -33933,5 +34652,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33933
34652
|
* Generated bundle index. Do not edit.
|
|
33934
34653
|
*/
|
|
33935
34654
|
|
|
33936
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34655
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
33937
34656
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|