geonetwork-ui 2.3.0-dev.6083baae → 2.3.0-dev.61774f7d
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/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
- 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/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +24 -10
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -13
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -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/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 +1 -1
- 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/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/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/translations/de.json +15 -0
- package/esm2022/translations/en.json +15 -0
- package/esm2022/translations/es.json +15 -0
- package/esm2022/translations/fr.json +15 -0
- package/esm2022/translations/it.json +15 -0
- package/esm2022/translations/nl.json +15 -0
- package/esm2022/translations/pt.json +15 -0
- package/fesm2022/geonetwork-ui.mjs +505 -79
- 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/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -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/components/record-form/record-form.component.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/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/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/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/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
- 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 +1 -1
- package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css +0 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +24 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +19 -4
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -21
- package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
- 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/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/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/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -5
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/tailwind.base.css +7 -0
- package/translations/de.json +15 -0
- package/translations/en.json +15 -0
- package/translations/es.json +15 -0
- package/translations/fr.json +15 -0
- package/translations/it.json +15 -0
- package/translations/nl.json +15 -0
- package/translations/pt.json +15 -0
- package/translations/sk.json +15 -0
|
@@ -1,7 +1,7 @@
|
|
|
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';
|
|
@@ -12,7 +12,7 @@ import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestF
|
|
|
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';
|
|
@@ -73,6 +73,8 @@ import Duration from 'duration-relativetimeformat';
|
|
|
73
73
|
import * as basicLightbox from 'basiclightbox';
|
|
74
74
|
import { marked } from 'marked';
|
|
75
75
|
import EmblaCarousel from 'embla-carousel';
|
|
76
|
+
import { formatDistance } from 'date-fns';
|
|
77
|
+
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
78
|
import * as i1$8 from '@ngrx/effects';
|
|
77
79
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
78
80
|
import tippy from 'tippy.js';
|
|
@@ -17271,6 +17273,7 @@ var next$6 = "weiter";
|
|
|
17271
17273
|
var previous$6 = "zurück";
|
|
17272
17274
|
var records$6 = "Datensätze";
|
|
17273
17275
|
var de = {
|
|
17276
|
+
"button.login": "",
|
|
17274
17277
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
17275
17278
|
"catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
17276
17279
|
"chart.aggregation.average": "Durchschnitt",
|
|
@@ -17550,6 +17553,14 @@ var de = {
|
|
|
17550
17553
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17551
17554
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17552
17555
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17556
|
+
"record.metadata.userFeedbacks": "",
|
|
17557
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17558
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17559
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17560
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17561
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17562
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17563
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17553
17564
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17554
17565
|
"record.metadata.status": "Status",
|
|
17555
17566
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17623,6 +17634,12 @@ var de = {
|
|
|
17623
17634
|
"table.loading.data": "Daten werden geladen...",
|
|
17624
17635
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17625
17636
|
"table.select.data": "Datenquelle",
|
|
17637
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
17638
|
+
"timeSincePipe.minutesAgo": "",
|
|
17639
|
+
"timeSincePipe.hoursAgo": "",
|
|
17640
|
+
"timeSincePipe.daysAgo": "",
|
|
17641
|
+
"timeSincePipe.monthsAgo": "",
|
|
17642
|
+
"timeSincePipe.yearsAgo": "",
|
|
17626
17643
|
"tooltip.html.copy": "HTML kopieren",
|
|
17627
17644
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17628
17645
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17641,6 +17658,7 @@ var next$5 = "next";
|
|
|
17641
17658
|
var previous$5 = "previous";
|
|
17642
17659
|
var records$5 = "records";
|
|
17643
17660
|
var en = {
|
|
17661
|
+
"button.login": "Log in",
|
|
17644
17662
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
17645
17663
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
17646
17664
|
"chart.aggregation.average": "average",
|
|
@@ -17920,6 +17938,14 @@ var en = {
|
|
|
17920
17938
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17921
17939
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17922
17940
|
"record.metadata.related": "Related records",
|
|
17941
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17942
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17943
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17944
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17945
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17946
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17947
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17948
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17923
17949
|
"record.metadata.sheet": "Original metadata",
|
|
17924
17950
|
"record.metadata.status": "Status",
|
|
17925
17951
|
"record.metadata.technical": "Technical information",
|
|
@@ -17993,6 +18019,12 @@ var en = {
|
|
|
17993
18019
|
"table.loading.data": "Loading data...",
|
|
17994
18020
|
"table.object.count": "objects in this dataset",
|
|
17995
18021
|
"table.select.data": "Data source",
|
|
18022
|
+
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18023
|
+
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18024
|
+
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18025
|
+
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18026
|
+
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18027
|
+
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
17996
18028
|
"tooltip.html.copy": "Copy HTML",
|
|
17997
18029
|
"tooltip.id.copy": "Copy unique identifier",
|
|
17998
18030
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18011,6 +18043,7 @@ var next$4 = "";
|
|
|
18011
18043
|
var previous$4 = "";
|
|
18012
18044
|
var records$4 = "";
|
|
18013
18045
|
var es = {
|
|
18046
|
+
"button.login": "",
|
|
18014
18047
|
"catalog.figures.datasets": "conjuntos de datos",
|
|
18015
18048
|
"catalog.figures.organisations": "organizaciones",
|
|
18016
18049
|
"chart.aggregation.average": "promedio",
|
|
@@ -18290,6 +18323,14 @@ var es = {
|
|
|
18290
18323
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18291
18324
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18292
18325
|
"record.metadata.related": "",
|
|
18326
|
+
"record.metadata.userFeedbacks": "",
|
|
18327
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18328
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18329
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18330
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18331
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18332
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18333
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18293
18334
|
"record.metadata.sheet": "",
|
|
18294
18335
|
"record.metadata.status": "",
|
|
18295
18336
|
"record.metadata.technical": "",
|
|
@@ -18363,6 +18404,12 @@ var es = {
|
|
|
18363
18404
|
"table.loading.data": "",
|
|
18364
18405
|
"table.object.count": "",
|
|
18365
18406
|
"table.select.data": "",
|
|
18407
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
18408
|
+
"timeSincePipe.minutesAgo": "",
|
|
18409
|
+
"timeSincePipe.hoursAgo": "",
|
|
18410
|
+
"timeSincePipe.daysAgo": "",
|
|
18411
|
+
"timeSincePipe.monthsAgo": "",
|
|
18412
|
+
"timeSincePipe.yearsAgo": "",
|
|
18366
18413
|
"tooltip.html.copy": "",
|
|
18367
18414
|
"tooltip.id.copy": "",
|
|
18368
18415
|
"tooltip.url.copy": "",
|
|
@@ -18381,6 +18428,7 @@ var next$3 = "suivant";
|
|
|
18381
18428
|
var previous$3 = "précédent";
|
|
18382
18429
|
var records$3 = "enregistrements";
|
|
18383
18430
|
var fr = {
|
|
18431
|
+
"button.login": "Se connecter",
|
|
18384
18432
|
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
|
|
18385
18433
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
18386
18434
|
"chart.aggregation.average": "moyenne",
|
|
@@ -18660,6 +18708,14 @@ var fr = {
|
|
|
18660
18708
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18661
18709
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18662
18710
|
"record.metadata.related": "Voir aussi",
|
|
18711
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18712
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18713
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18714
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18715
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18716
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18717
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18718
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18663
18719
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18664
18720
|
"record.metadata.status": "Statut",
|
|
18665
18721
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18733,6 +18789,12 @@ var fr = {
|
|
|
18733
18789
|
"table.loading.data": "Chargement des données...",
|
|
18734
18790
|
"table.object.count": "enregistrements dans ces données",
|
|
18735
18791
|
"table.select.data": "Source de données",
|
|
18792
|
+
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18793
|
+
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18794
|
+
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18795
|
+
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18796
|
+
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18797
|
+
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18736
18798
|
"tooltip.html.copy": "Copier le HTML",
|
|
18737
18799
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18738
18800
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18751,6 +18813,7 @@ var next$2 = "successivo";
|
|
|
18751
18813
|
var previous$2 = "precedente";
|
|
18752
18814
|
var records$2 = "record";
|
|
18753
18815
|
var it = {
|
|
18816
|
+
"button.login": "",
|
|
18754
18817
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
18755
18818
|
"catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
|
|
18756
18819
|
"chart.aggregation.average": "media",
|
|
@@ -19030,6 +19093,14 @@ var it = {
|
|
|
19030
19093
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19031
19094
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19032
19095
|
"record.metadata.related": "Vedi anche",
|
|
19096
|
+
"record.metadata.userFeedbacks": "",
|
|
19097
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19098
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19099
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19100
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19101
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19102
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19103
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19033
19104
|
"record.metadata.sheet": "Origine del metadata",
|
|
19034
19105
|
"record.metadata.status": "Stato",
|
|
19035
19106
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19103,6 +19174,12 @@ var it = {
|
|
|
19103
19174
|
"table.loading.data": "Caricamento dei dati...",
|
|
19104
19175
|
"table.object.count": "record in questi dati",
|
|
19105
19176
|
"table.select.data": "Sorgente dati",
|
|
19177
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19178
|
+
"timeSincePipe.minutesAgo": "",
|
|
19179
|
+
"timeSincePipe.hoursAgo": "",
|
|
19180
|
+
"timeSincePipe.daysAgo": "",
|
|
19181
|
+
"timeSincePipe.monthsAgo": "",
|
|
19182
|
+
"timeSincePipe.yearsAgo": "",
|
|
19106
19183
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19107
19184
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19108
19185
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19121,6 +19198,7 @@ var next$1 = "";
|
|
|
19121
19198
|
var previous$1 = "";
|
|
19122
19199
|
var records$1 = "";
|
|
19123
19200
|
var nl = {
|
|
19201
|
+
"button.login": "",
|
|
19124
19202
|
"catalog.figures.datasets": "datasets",
|
|
19125
19203
|
"catalog.figures.organisations": "organisaties",
|
|
19126
19204
|
"chart.aggregation.average": "gemiddelde",
|
|
@@ -19400,6 +19478,14 @@ var nl = {
|
|
|
19400
19478
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19401
19479
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19402
19480
|
"record.metadata.related": "",
|
|
19481
|
+
"record.metadata.userFeedbacks": "",
|
|
19482
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19483
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19484
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19485
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19486
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19487
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19488
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19403
19489
|
"record.metadata.sheet": "",
|
|
19404
19490
|
"record.metadata.status": "",
|
|
19405
19491
|
"record.metadata.technical": "",
|
|
@@ -19473,6 +19559,12 @@ var nl = {
|
|
|
19473
19559
|
"table.loading.data": "",
|
|
19474
19560
|
"table.object.count": "",
|
|
19475
19561
|
"table.select.data": "",
|
|
19562
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19563
|
+
"timeSincePipe.minutesAgo": "",
|
|
19564
|
+
"timeSincePipe.hoursAgo": "",
|
|
19565
|
+
"timeSincePipe.daysAgo": "",
|
|
19566
|
+
"timeSincePipe.monthsAgo": "",
|
|
19567
|
+
"timeSincePipe.yearsAgo": "",
|
|
19476
19568
|
"tooltip.html.copy": "",
|
|
19477
19569
|
"tooltip.id.copy": "",
|
|
19478
19570
|
"tooltip.url.copy": "",
|
|
@@ -19491,6 +19583,7 @@ var next = "";
|
|
|
19491
19583
|
var previous = "";
|
|
19492
19584
|
var records = "";
|
|
19493
19585
|
var pt = {
|
|
19586
|
+
"button.login": "",
|
|
19494
19587
|
"catalog.figures.datasets": "conjuntos de dados",
|
|
19495
19588
|
"catalog.figures.organisations": "organizações",
|
|
19496
19589
|
"chart.aggregation.average": "média",
|
|
@@ -19770,6 +19863,14 @@ var pt = {
|
|
|
19770
19863
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19771
19864
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19772
19865
|
"record.metadata.related": "",
|
|
19866
|
+
"record.metadata.userFeedbacks": "",
|
|
19867
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19868
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19869
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19870
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19871
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19872
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19873
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19773
19874
|
"record.metadata.sheet": "",
|
|
19774
19875
|
"record.metadata.status": "",
|
|
19775
19876
|
"record.metadata.technical": "",
|
|
@@ -19843,6 +19944,12 @@ var pt = {
|
|
|
19843
19944
|
"table.loading.data": "",
|
|
19844
19945
|
"table.object.count": "",
|
|
19845
19946
|
"table.select.data": "",
|
|
19947
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19948
|
+
"timeSincePipe.minutesAgo": "",
|
|
19949
|
+
"timeSincePipe.hoursAgo": "",
|
|
19950
|
+
"timeSincePipe.daysAgo": "",
|
|
19951
|
+
"timeSincePipe.monthsAgo": "",
|
|
19952
|
+
"timeSincePipe.yearsAgo": "",
|
|
19846
19953
|
"tooltip.html.copy": "",
|
|
19847
19954
|
"tooltip.id.copy": "",
|
|
19848
19955
|
"tooltip.url.copy": "",
|
|
@@ -19937,11 +20044,11 @@ class Gn4FieldMapper {
|
|
|
19937
20044
|
}),
|
|
19938
20045
|
creationDateForResource: (output, source) => ({
|
|
19939
20046
|
...output,
|
|
19940
|
-
|
|
20047
|
+
resourceCreated: toDate(getFirstValue(selectField(source, 'creationDateForResource'))),
|
|
19941
20048
|
}),
|
|
19942
20049
|
revisionDateForResource: (output, source) => ({
|
|
19943
20050
|
...output,
|
|
19944
|
-
|
|
20051
|
+
resourceUpdated: toDate(getFirstValue(selectField(source, 'revisionDateForResource'))),
|
|
19945
20052
|
}),
|
|
19946
20053
|
createDate: (output, source) => ({
|
|
19947
20054
|
...output,
|
|
@@ -21166,6 +21273,16 @@ class GravatarService {
|
|
|
21166
21273
|
getProfileIcon(hash) {
|
|
21167
21274
|
return this.identicon$.pipe(map$1((identicon) => identicon || this.GRAVATAR_IDENTICON), map$1((identicon) => `${this.GRAVATAR_URL}${hash}?d=${identicon}`));
|
|
21168
21275
|
}
|
|
21276
|
+
async getProfileIconUrl(userId) {
|
|
21277
|
+
let iconUrl = '';
|
|
21278
|
+
try {
|
|
21279
|
+
iconUrl = await firstValueFrom(this.getProfileIcon(userId));
|
|
21280
|
+
}
|
|
21281
|
+
catch (error) {
|
|
21282
|
+
return '';
|
|
21283
|
+
}
|
|
21284
|
+
return iconUrl;
|
|
21285
|
+
}
|
|
21169
21286
|
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
21287
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, providedIn: 'root' }); }
|
|
21171
21288
|
}
|
|
@@ -21317,6 +21434,39 @@ class Gn4PlatformMapper {
|
|
|
21317
21434
|
};
|
|
21318
21435
|
});
|
|
21319
21436
|
}
|
|
21437
|
+
userFeedbacksFromApi(userFeedback) {
|
|
21438
|
+
return {
|
|
21439
|
+
uuid: userFeedback.uuid,
|
|
21440
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21441
|
+
comment: userFeedback.comment,
|
|
21442
|
+
authorUserId: userFeedback.authorUserId.toString(),
|
|
21443
|
+
authorName: userFeedback.authorName,
|
|
21444
|
+
authorEmail: userFeedback.authorEmail,
|
|
21445
|
+
published: userFeedback.published,
|
|
21446
|
+
parentUuid: userFeedback.parentUuid ?? undefined,
|
|
21447
|
+
date: new Date(userFeedback.date),
|
|
21448
|
+
};
|
|
21449
|
+
}
|
|
21450
|
+
userFeedbacksToApi(userFeedback) {
|
|
21451
|
+
return {
|
|
21452
|
+
uuid: userFeedback.uuid,
|
|
21453
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21454
|
+
comment: userFeedback.comment,
|
|
21455
|
+
authorUserId: Number.parseInt(userFeedback.authorUserId),
|
|
21456
|
+
authorName: userFeedback.authorName,
|
|
21457
|
+
authorEmail: userFeedback.authorEmail,
|
|
21458
|
+
published: userFeedback.published,
|
|
21459
|
+
parentUuid: userFeedback.parentUuid,
|
|
21460
|
+
date: userFeedback.date.getTime().toString(),
|
|
21461
|
+
};
|
|
21462
|
+
}
|
|
21463
|
+
async createUserFeedbackViewModel(baseUserFeedback) {
|
|
21464
|
+
const userAvatarUrl = await this.avatarService.getProfileIconUrl(baseUserFeedback.authorUserId?.toString());
|
|
21465
|
+
return {
|
|
21466
|
+
...baseUserFeedback,
|
|
21467
|
+
avatarUrl: userAvatarUrl,
|
|
21468
|
+
};
|
|
21469
|
+
}
|
|
21320
21470
|
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
21471
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformMapper }); }
|
|
21322
21472
|
}
|
|
@@ -21326,7 +21476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21326
21476
|
|
|
21327
21477
|
const minApiVersion = '4.2.2';
|
|
21328
21478
|
class Gn4PlatformService {
|
|
21329
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
21479
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService) {
|
|
21330
21480
|
this.siteApiService = siteApiService;
|
|
21331
21481
|
this.meApi = meApi;
|
|
21332
21482
|
this.usersApi = usersApi;
|
|
@@ -21334,6 +21484,7 @@ class Gn4PlatformService {
|
|
|
21334
21484
|
this.toolsApiService = toolsApiService;
|
|
21335
21485
|
this.registriesApiService = registriesApiService;
|
|
21336
21486
|
this.langService = langService;
|
|
21487
|
+
this.userfeedbackApiService = userfeedbackApiService;
|
|
21337
21488
|
this.type = 'GeoNetwork';
|
|
21338
21489
|
this.keyTranslations$ = this.toolsApiService
|
|
21339
21490
|
.getTranslationsPackage1('gnui')
|
|
@@ -21353,7 +21504,7 @@ class Gn4PlatformService {
|
|
|
21353
21504
|
*/
|
|
21354
21505
|
this.thesauri = {};
|
|
21355
21506
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
21356
|
-
this.
|
|
21507
|
+
this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
21357
21508
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
21358
21509
|
}
|
|
21359
21510
|
getType() {
|
|
@@ -21366,7 +21517,7 @@ class Gn4PlatformService {
|
|
|
21366
21517
|
return this.me$;
|
|
21367
21518
|
}
|
|
21368
21519
|
isAnonymous() {
|
|
21369
|
-
return this.
|
|
21520
|
+
return this.isUserAnonymous$;
|
|
21370
21521
|
}
|
|
21371
21522
|
getOrganizations() {
|
|
21372
21523
|
return undefined;
|
|
@@ -21402,12 +21553,23 @@ class Gn4PlatformService {
|
|
|
21402
21553
|
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
21403
21554
|
return this.thesauri[uri];
|
|
21404
21555
|
}
|
|
21405
|
-
|
|
21556
|
+
getUserFeedbacks(uuid) {
|
|
21557
|
+
return this.userfeedbackApiService
|
|
21558
|
+
.getUserComments(uuid)
|
|
21559
|
+
.pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)));
|
|
21560
|
+
}
|
|
21561
|
+
postUserFeedbacks(userFeedback) {
|
|
21562
|
+
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21563
|
+
return this.userfeedbackApiService
|
|
21564
|
+
.newUserFeedback(mappedUserFeedBack)
|
|
21565
|
+
.pipe(map$1(() => undefined));
|
|
21566
|
+
}
|
|
21567
|
+
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
21568
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
21407
21569
|
}
|
|
21408
21570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
21409
21571
|
type: Injectable
|
|
21410
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
21572
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }]; } });
|
|
21411
21573
|
|
|
21412
21574
|
function provideGn4() {
|
|
21413
21575
|
return [
|
|
@@ -24213,11 +24375,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24213
24375
|
|
|
24214
24376
|
class TextInputComponent {
|
|
24215
24377
|
constructor() {
|
|
24378
|
+
this.baseClass = [
|
|
24379
|
+
'appearance-none',
|
|
24380
|
+
'border border-gray-300',
|
|
24381
|
+
'rounded w-full',
|
|
24382
|
+
'p-2',
|
|
24383
|
+
'text-gray-700',
|
|
24384
|
+
'leading-tight',
|
|
24385
|
+
'focus:outline-none',
|
|
24386
|
+
'focus:border-primary',
|
|
24387
|
+
].join(' ');
|
|
24216
24388
|
this.value = '';
|
|
24389
|
+
this.extraClass = '';
|
|
24217
24390
|
this.required = false;
|
|
24218
24391
|
this.rawChange = new Subject();
|
|
24219
24392
|
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24220
24393
|
}
|
|
24394
|
+
get classList() {
|
|
24395
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24396
|
+
}
|
|
24221
24397
|
ngAfterViewInit() {
|
|
24222
24398
|
this.checkRequired(this.input.nativeElement.value);
|
|
24223
24399
|
}
|
|
@@ -24230,13 +24406,15 @@ class TextInputComponent {
|
|
|
24230
24406
|
this.rawChange.next(value);
|
|
24231
24407
|
}
|
|
24232
24408
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24233
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", hint: "hint", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n class=\"
|
|
24409
|
+
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"] }); }
|
|
24234
24410
|
}
|
|
24235
24411
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24236
24412
|
type: Component,
|
|
24237
|
-
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n class=\"
|
|
24413
|
+
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"] }]
|
|
24238
24414
|
}], propDecorators: { value: [{
|
|
24239
24415
|
type: Input
|
|
24416
|
+
}], extraClass: [{
|
|
24417
|
+
type: Input
|
|
24240
24418
|
}], hint: [{
|
|
24241
24419
|
type: Input
|
|
24242
24420
|
}], required: [{
|
|
@@ -24317,9 +24495,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24317
24495
|
class TextAreaComponent {
|
|
24318
24496
|
constructor() {
|
|
24319
24497
|
this.value = '';
|
|
24498
|
+
this.disabled = false;
|
|
24499
|
+
this.extraClass = '';
|
|
24320
24500
|
this.required = false;
|
|
24321
24501
|
this.rawChange = new Subject();
|
|
24322
24502
|
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24503
|
+
this.baseClasses = [
|
|
24504
|
+
'w-full',
|
|
24505
|
+
'pt-2',
|
|
24506
|
+
'pl-2',
|
|
24507
|
+
'resize-none',
|
|
24508
|
+
'border',
|
|
24509
|
+
'border-gray-800',
|
|
24510
|
+
'rounded italic',
|
|
24511
|
+
'leading-tight',
|
|
24512
|
+
'focus:outline-none',
|
|
24513
|
+
'focus:bg-background',
|
|
24514
|
+
'focus:border-primary',
|
|
24515
|
+
].join(' ');
|
|
24516
|
+
this.disabledClasses = ['cursor-not-allowed'].join(' ');
|
|
24517
|
+
}
|
|
24518
|
+
get classList() {
|
|
24519
|
+
return `${this.baseClasses} ${this.extraClass} ${this.disabled ? this.disabledClasses : ''}`;
|
|
24323
24520
|
}
|
|
24324
24521
|
ngAfterViewInit() {
|
|
24325
24522
|
this.checkRequired(this.input.nativeElement.value);
|
|
@@ -24333,12 +24530,16 @@ class TextAreaComponent {
|
|
|
24333
24530
|
this.rawChange.next(value);
|
|
24334
24531
|
}
|
|
24335
24532
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24336
|
-
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", 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 [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"
|
|
24533
|
+
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"] }); }
|
|
24337
24534
|
}
|
|
24338
24535
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
24339
24536
|
type: Component,
|
|
24340
|
-
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n class=\"
|
|
24341
|
-
}], propDecorators: { value: [{
|
|
24537
|
+
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"] }]
|
|
24538
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
24539
|
+
type: Input
|
|
24540
|
+
}], disabled: [{
|
|
24541
|
+
type: Input
|
|
24542
|
+
}], extraClass: [{
|
|
24342
24543
|
type: Input
|
|
24343
24544
|
}], placeholder: [{
|
|
24344
24545
|
type: Input
|
|
@@ -25416,7 +25617,7 @@ class AddLayerFromOgcApiComponent {
|
|
|
25416
25617
|
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25417
25618
|
}
|
|
25418
25619
|
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"] }] }); }
|
|
25620
|
+
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
25621
|
}
|
|
25421
25622
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25422
25623
|
type: Component,
|
|
@@ -26372,7 +26573,7 @@ class MarkdownEditorComponent {
|
|
|
26372
26573
|
this.textContentChanged.emit(this.textContent);
|
|
26373
26574
|
}
|
|
26374
26575
|
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 }); }
|
|
26576
|
+
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
26577
|
}
|
|
26377
26578
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
26378
26579
|
type: Component,
|
|
@@ -26851,7 +27052,7 @@ class RecordApiFormComponent {
|
|
|
26851
27052
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26852
27053
|
}
|
|
26853
27054
|
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]=\"formatsList\"\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", "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 }); }
|
|
27055
|
+
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]=\"formatsList\"\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
27056
|
}
|
|
26856
27057
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26857
27058
|
type: Component,
|
|
@@ -26999,11 +27200,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26999
27200
|
|
|
27000
27201
|
class FormFieldWrapperComponent {
|
|
27001
27202
|
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 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: ["
|
|
27203
|
+
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$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27003
27204
|
}
|
|
27004
27205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27005
27206
|
type: Component,
|
|
27006
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], 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 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"
|
|
27207
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], 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" }]
|
|
27007
27208
|
}], propDecorators: { label: [{
|
|
27008
27209
|
type: Input
|
|
27009
27210
|
}], hint: [{
|
|
@@ -27198,6 +27399,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27198
27399
|
type: Input
|
|
27199
27400
|
}] } });
|
|
27200
27401
|
|
|
27402
|
+
class TimeSincePipe {
|
|
27403
|
+
constructor(translate) {
|
|
27404
|
+
this.translate = translate;
|
|
27405
|
+
}
|
|
27406
|
+
transform(value) {
|
|
27407
|
+
if (isNaN(value.getTime())) {
|
|
27408
|
+
throw new Error('Invalid Date');
|
|
27409
|
+
}
|
|
27410
|
+
const maintenant = new Date();
|
|
27411
|
+
let locale;
|
|
27412
|
+
switch (this.translate.currentLang) {
|
|
27413
|
+
case 'fr':
|
|
27414
|
+
locale = fr$1;
|
|
27415
|
+
break;
|
|
27416
|
+
case 'de':
|
|
27417
|
+
locale = de$1;
|
|
27418
|
+
break;
|
|
27419
|
+
case 'es':
|
|
27420
|
+
locale = es$1;
|
|
27421
|
+
break;
|
|
27422
|
+
case 'it':
|
|
27423
|
+
locale = it$1;
|
|
27424
|
+
break;
|
|
27425
|
+
case 'nl':
|
|
27426
|
+
locale = nl$1;
|
|
27427
|
+
break;
|
|
27428
|
+
case 'pt':
|
|
27429
|
+
locale = pt$1;
|
|
27430
|
+
break;
|
|
27431
|
+
case 'sk':
|
|
27432
|
+
locale = sk;
|
|
27433
|
+
break;
|
|
27434
|
+
case 'en':
|
|
27435
|
+
default:
|
|
27436
|
+
locale = enUS;
|
|
27437
|
+
break;
|
|
27438
|
+
}
|
|
27439
|
+
return formatDistance(value, maintenant, {
|
|
27440
|
+
addSuffix: true,
|
|
27441
|
+
locale: locale,
|
|
27442
|
+
});
|
|
27443
|
+
}
|
|
27444
|
+
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 }); }
|
|
27445
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, isStandalone: true, name: "timeSince" }); }
|
|
27446
|
+
}
|
|
27447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, decorators: [{
|
|
27448
|
+
type: Pipe,
|
|
27449
|
+
args: [{
|
|
27450
|
+
name: 'timeSince',
|
|
27451
|
+
standalone: true,
|
|
27452
|
+
}]
|
|
27453
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
27454
|
+
|
|
27455
|
+
class UserFeedbackItemComponent {
|
|
27456
|
+
constructor() {
|
|
27457
|
+
this.newUserFeedbackAnswer = new EventEmitter();
|
|
27458
|
+
this.isAnAnswer = false;
|
|
27459
|
+
this.newAnswer = '';
|
|
27460
|
+
this.isAnswerEmpty = true;
|
|
27461
|
+
}
|
|
27462
|
+
ngOnInit() {
|
|
27463
|
+
this.isAnAnswer = !!this.userFeedbackParent.parentUuid;
|
|
27464
|
+
}
|
|
27465
|
+
onNewAnswerValueChange() {
|
|
27466
|
+
this.isAnswerEmpty = this.newAnswer.length === 0;
|
|
27467
|
+
}
|
|
27468
|
+
publishNewAnswer() {
|
|
27469
|
+
if (this.newAnswer.trim() === '')
|
|
27470
|
+
return;
|
|
27471
|
+
const newAnswer = {
|
|
27472
|
+
...this.userFeedbackParent,
|
|
27473
|
+
uuid: undefined,
|
|
27474
|
+
published: true,
|
|
27475
|
+
comment: this.newAnswer,
|
|
27476
|
+
parentUuid: this.userFeedbackParent.uuid,
|
|
27477
|
+
authorUserId: this.activeUser?.id,
|
|
27478
|
+
authorEmail: this.activeUser?.email,
|
|
27479
|
+
date: new Date(),
|
|
27480
|
+
authorName: `${this.activeUser?.name} ${this.activeUser?.surname}`,
|
|
27481
|
+
};
|
|
27482
|
+
this.newUserFeedbackAnswer.emit(newAnswer);
|
|
27483
|
+
this.newAnswer = '';
|
|
27484
|
+
this.onNewAnswerValueChange();
|
|
27485
|
+
}
|
|
27486
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27487
|
+
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 }); }
|
|
27488
|
+
}
|
|
27489
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27490
|
+
type: Component,
|
|
27491
|
+
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" }]
|
|
27492
|
+
}], propDecorators: { userFeedbackParent: [{
|
|
27493
|
+
type: Input
|
|
27494
|
+
}], userFeedBacksAnswers: [{
|
|
27495
|
+
type: Input
|
|
27496
|
+
}], isActiveUserEditor: [{
|
|
27497
|
+
type: Input
|
|
27498
|
+
}], activeUser: [{
|
|
27499
|
+
type: Input
|
|
27500
|
+
}], isLastComment: [{
|
|
27501
|
+
type: Input
|
|
27502
|
+
}], isAddUserFeedbackLoading: [{
|
|
27503
|
+
type: Input
|
|
27504
|
+
}], newUserFeedbackAnswer: [{
|
|
27505
|
+
type: Output
|
|
27506
|
+
}] } });
|
|
27507
|
+
|
|
27201
27508
|
class UiElementsModule {
|
|
27202
27509
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27203
27510
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, declarations: [MetadataInfoComponent,
|
|
@@ -27219,6 +27526,7 @@ class UiElementsModule {
|
|
|
27219
27526
|
PaginationButtonsComponent,
|
|
27220
27527
|
MaxLinesComponent,
|
|
27221
27528
|
RecordApiFormComponent,
|
|
27529
|
+
UserFeedbackItemComponent,
|
|
27222
27530
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
27223
27531
|
MatIconModule,
|
|
27224
27532
|
MatTooltipModule,
|
|
@@ -27229,7 +27537,8 @@ class UiElementsModule {
|
|
|
27229
27537
|
FormsModule,
|
|
27230
27538
|
NgOptimizedImage,
|
|
27231
27539
|
MarkdownParserComponent,
|
|
27232
|
-
ThumbnailComponent
|
|
27540
|
+
ThumbnailComponent,
|
|
27541
|
+
TimeSincePipe], exports: [MetadataInfoComponent,
|
|
27233
27542
|
ContentGhostComponent,
|
|
27234
27543
|
DownloadItemComponent,
|
|
27235
27544
|
DownloadsListComponent,
|
|
@@ -27249,6 +27558,7 @@ class UiElementsModule {
|
|
|
27249
27558
|
MaxLinesComponent,
|
|
27250
27559
|
RecordApiFormComponent,
|
|
27251
27560
|
MarkdownParserComponent,
|
|
27561
|
+
UserFeedbackItemComponent,
|
|
27252
27562
|
ImageOverlayPreviewComponent] }); }
|
|
27253
27563
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, imports: [CommonModule,
|
|
27254
27564
|
MatIconModule,
|
|
@@ -27279,6 +27589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27279
27589
|
NgOptimizedImage,
|
|
27280
27590
|
MarkdownParserComponent,
|
|
27281
27591
|
ThumbnailComponent,
|
|
27592
|
+
TimeSincePipe,
|
|
27282
27593
|
],
|
|
27283
27594
|
declarations: [
|
|
27284
27595
|
MetadataInfoComponent,
|
|
@@ -27300,6 +27611,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27300
27611
|
PaginationButtonsComponent,
|
|
27301
27612
|
MaxLinesComponent,
|
|
27302
27613
|
RecordApiFormComponent,
|
|
27614
|
+
UserFeedbackItemComponent,
|
|
27303
27615
|
ImageOverlayPreviewComponent,
|
|
27304
27616
|
],
|
|
27305
27617
|
exports: [
|
|
@@ -27323,6 +27635,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27323
27635
|
MaxLinesComponent,
|
|
27324
27636
|
RecordApiFormComponent,
|
|
27325
27637
|
MarkdownParserComponent,
|
|
27638
|
+
UserFeedbackItemComponent,
|
|
27326
27639
|
ImageOverlayPreviewComponent,
|
|
27327
27640
|
],
|
|
27328
27641
|
}]
|
|
@@ -29652,7 +29965,7 @@ class AddLayerFromWmsComponent {
|
|
|
29652
29965
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29653
29966
|
}
|
|
29654
29967
|
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" }] }); }
|
|
29968
|
+
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
29969
|
}
|
|
29657
29970
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29658
29971
|
type: Component,
|
|
@@ -29803,7 +30116,7 @@ class AddLayerFromWfsComponent {
|
|
|
29803
30116
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29804
30117
|
}
|
|
29805
30118
|
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" }] }); }
|
|
30119
|
+
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
30120
|
}
|
|
29808
30121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
29809
30122
|
type: Component,
|
|
@@ -30198,31 +30511,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30198
30511
|
], 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
30512
|
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
30200
30513
|
|
|
30514
|
+
/*
|
|
30515
|
+
Metadata actions
|
|
30516
|
+
*/
|
|
30201
30517
|
const loadFullMetadata = createAction('[Metadata view] Load full metadata', props());
|
|
30202
30518
|
const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
|
|
30203
|
-
const
|
|
30204
|
-
const
|
|
30519
|
+
const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
|
|
30520
|
+
const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
|
|
30521
|
+
const closeMetadata = createAction('[Metadata view] close');
|
|
30522
|
+
/*
|
|
30523
|
+
Related actions
|
|
30524
|
+
*/
|
|
30205
30525
|
const setRelated = createAction('[Metadata view] Set related records', props());
|
|
30526
|
+
/*
|
|
30527
|
+
ChartConfig actions
|
|
30528
|
+
*/
|
|
30206
30529
|
const setChartConfig = createAction('[Metadata view] Set chart config', props());
|
|
30207
|
-
|
|
30530
|
+
/*
|
|
30531
|
+
User Feedbacks actions
|
|
30532
|
+
*/
|
|
30533
|
+
const addUserFeedback = createAction('[Metadata view] Add UserFeedback', props());
|
|
30534
|
+
const addUserFeedbackSuccess = createAction('[Metadata view] Add UserFeedback Success', props());
|
|
30535
|
+
const addUserFeedbackFailure = createAction('[Metadata view] Add UserFeedback Failure', props());
|
|
30536
|
+
const loadUserFeedbacks = createAction('[Metadata view] Load UserFeedbacks', props());
|
|
30537
|
+
const loadUserFeedbacksSuccess = createAction('[Metadata view] Load UserFeedbacks Success', props());
|
|
30538
|
+
const loadUserFeedbacksFailure = createAction('[Metadata view] Load UserFeedbacks Failure', props());
|
|
30208
30539
|
|
|
30209
30540
|
var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
30210
30541
|
__proto__: null,
|
|
30211
|
-
|
|
30212
|
-
|
|
30542
|
+
addUserFeedback: addUserFeedback,
|
|
30543
|
+
addUserFeedbackFailure: addUserFeedbackFailure,
|
|
30544
|
+
addUserFeedbackSuccess: addUserFeedbackSuccess,
|
|
30545
|
+
closeMetadata: closeMetadata,
|
|
30213
30546
|
loadFullMetadata: loadFullMetadata,
|
|
30214
|
-
|
|
30547
|
+
loadFullMetadataFailure: loadFullMetadataFailure,
|
|
30548
|
+
loadFullMetadataSuccess: loadFullMetadataSuccess,
|
|
30549
|
+
loadUserFeedbacks: loadUserFeedbacks,
|
|
30550
|
+
loadUserFeedbacksFailure: loadUserFeedbacksFailure,
|
|
30551
|
+
loadUserFeedbacksSuccess: loadUserFeedbacksSuccess,
|
|
30215
30552
|
setChartConfig: setChartConfig,
|
|
30216
30553
|
setIncompleteMetadata: setIncompleteMetadata,
|
|
30217
30554
|
setRelated: setRelated
|
|
30218
30555
|
});
|
|
30219
30556
|
|
|
30220
|
-
const
|
|
30221
|
-
const
|
|
30557
|
+
const METADATA_VIEW_FEATURE_STATE_KEY = 'metadataView';
|
|
30558
|
+
const initialMetadataViewState = {
|
|
30222
30559
|
error: null,
|
|
30223
30560
|
loadingFull: false,
|
|
30561
|
+
allUserFeedbacksLoading: false,
|
|
30562
|
+
addUserFeedbackLoading: false,
|
|
30224
30563
|
};
|
|
30225
|
-
const
|
|
30564
|
+
const metadataViewReducer = createReducer(initialMetadataViewState,
|
|
30565
|
+
/*
|
|
30566
|
+
Metadata reducers
|
|
30567
|
+
*/
|
|
30568
|
+
on(loadFullMetadata, (state) => ({
|
|
30226
30569
|
...state,
|
|
30227
30570
|
error: null,
|
|
30228
30571
|
loadingFull: true,
|
|
@@ -30230,38 +30573,82 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
30230
30573
|
...state,
|
|
30231
30574
|
error: null,
|
|
30232
30575
|
metadata: incomplete,
|
|
30233
|
-
})), on(
|
|
30576
|
+
})), on(loadFullMetadataSuccess, (state, { full }) => ({
|
|
30234
30577
|
...state,
|
|
30235
30578
|
error: null,
|
|
30236
30579
|
metadata: full,
|
|
30237
30580
|
loadingFull: false,
|
|
30238
|
-
})), on(
|
|
30581
|
+
})), on(loadFullMetadataFailure, (state, { otherError, notFound }) => ({
|
|
30239
30582
|
...state,
|
|
30240
30583
|
error: { otherError, notFound },
|
|
30241
30584
|
loadingFull: false,
|
|
30242
|
-
})), on(
|
|
30585
|
+
})), on(closeMetadata, (state) => {
|
|
30586
|
+
const { metadata, related, userFeedbacks, ...stateWithoutMetadata } = state;
|
|
30587
|
+
return stateWithoutMetadata;
|
|
30588
|
+
}),
|
|
30589
|
+
/*
|
|
30590
|
+
Related reducers
|
|
30591
|
+
*/
|
|
30592
|
+
on(setRelated, (state, { related }) => ({
|
|
30243
30593
|
...state,
|
|
30244
30594
|
related,
|
|
30245
|
-
})),
|
|
30595
|
+
})),
|
|
30596
|
+
/*
|
|
30597
|
+
ChartConfig reducers
|
|
30598
|
+
*/
|
|
30599
|
+
on(setChartConfig, (state, { chartConfig }) => ({
|
|
30246
30600
|
...state,
|
|
30247
30601
|
chartConfig,
|
|
30248
|
-
})),
|
|
30249
|
-
|
|
30250
|
-
|
|
30251
|
-
|
|
30252
|
-
|
|
30253
|
-
|
|
30254
|
-
|
|
30602
|
+
})),
|
|
30603
|
+
/*
|
|
30604
|
+
UserFeedbacks reducers
|
|
30605
|
+
*/
|
|
30606
|
+
on(loadUserFeedbacks, (state) => ({
|
|
30607
|
+
...state,
|
|
30608
|
+
error: null,
|
|
30609
|
+
allUserFeedbacksLoading: true,
|
|
30610
|
+
})), on(addUserFeedback, (state) => ({
|
|
30611
|
+
...state,
|
|
30612
|
+
addUserFeedbackLoading: true,
|
|
30613
|
+
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30614
|
+
...state,
|
|
30615
|
+
error: null,
|
|
30616
|
+
userFeedbacks: userFeedbacks,
|
|
30617
|
+
addUserFeedbackLoading: false,
|
|
30618
|
+
allUserFeedbacksLoading: false,
|
|
30619
|
+
})), on(loadUserFeedbacksFailure, (state, { otherError, notFound }) => ({
|
|
30620
|
+
...state,
|
|
30621
|
+
error: { otherError, notFound },
|
|
30622
|
+
addUserFeedbackLoading: false,
|
|
30623
|
+
allUserFeedbacksLoading: false,
|
|
30624
|
+
})));
|
|
30625
|
+
function reducer$1(metadataViewState, action) {
|
|
30626
|
+
return metadataViewReducer(metadataViewState, action);
|
|
30255
30627
|
}
|
|
30256
30628
|
|
|
30257
|
-
const getMdViewState = createFeatureSelector(
|
|
30629
|
+
const getMdViewState = createFeatureSelector(METADATA_VIEW_FEATURE_STATE_KEY);
|
|
30630
|
+
/*
|
|
30631
|
+
Metadata selectors
|
|
30632
|
+
*/
|
|
30258
30633
|
const getMetadataUuid = createSelector(getMdViewState, (state) => state.metadata ? state.metadata.uniqueIdentifier : null);
|
|
30259
30634
|
const getMetadata = createSelector(getMdViewState, (state) => state.metadata);
|
|
30260
30635
|
const getMetadataIsIncomplete = createSelector(getMdViewState, (state) => (state.metadata ? state.loadingFull : null));
|
|
30261
30636
|
const getMetadataIsLoading = createSelector(getMdViewState, (state) => state.loadingFull);
|
|
30262
30637
|
const getMetadataError = createSelector(getMdViewState, (state) => state.error);
|
|
30638
|
+
/*
|
|
30639
|
+
Related selectors
|
|
30640
|
+
*/
|
|
30263
30641
|
const getRelated = createSelector(getMdViewState, (state) => state.related);
|
|
30642
|
+
/*
|
|
30643
|
+
Metadata selectors
|
|
30644
|
+
*/
|
|
30264
30645
|
const getChartConfig = createSelector(getMdViewState, (state) => state.chartConfig);
|
|
30646
|
+
/*
|
|
30647
|
+
UserFeedback selectors
|
|
30648
|
+
*/
|
|
30649
|
+
const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
|
|
30650
|
+
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
30651
|
+
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
30265
30652
|
|
|
30266
30653
|
/**
|
|
30267
30654
|
* The Metadata View Facade is used to render complete metadata records.
|
|
@@ -30270,11 +30657,12 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
|
|
|
30270
30657
|
* To clear the current record use the `close()` method.
|
|
30271
30658
|
*/
|
|
30272
30659
|
class MdViewFacade {
|
|
30273
|
-
constructor(store, linkClassifier) {
|
|
30660
|
+
constructor(store, linkClassifier, avatarService) {
|
|
30274
30661
|
this.store = store;
|
|
30275
30662
|
this.linkClassifier = linkClassifier;
|
|
30663
|
+
this.avatarService = avatarService;
|
|
30276
30664
|
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
30277
|
-
this.
|
|
30665
|
+
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
30278
30666
|
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
30279
30667
|
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
30280
30668
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
@@ -30288,6 +30676,9 @@ class MdViewFacade {
|
|
|
30288
30676
|
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
30289
30677
|
this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
|
|
30290
30678
|
this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
|
|
30679
|
+
this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
|
|
30680
|
+
this.isAllUserFeedbackLoading$ = this.store.pipe(select(getAllUserFeedbacksLoading));
|
|
30681
|
+
this.isAddUserFeedbackLoading$ = this.store.pipe(select(getAddUserFeedbacksLoading));
|
|
30291
30682
|
}
|
|
30292
30683
|
/**
|
|
30293
30684
|
* This will show an incomplete record (e.g. from a search result) as a preview
|
|
@@ -30302,39 +30693,73 @@ class MdViewFacade {
|
|
|
30302
30693
|
loadFull(uuid) {
|
|
30303
30694
|
this.store.dispatch(loadFullMetadata({ uuid }));
|
|
30304
30695
|
}
|
|
30305
|
-
|
|
30306
|
-
this.store.dispatch(
|
|
30696
|
+
closeMetadata() {
|
|
30697
|
+
this.store.dispatch(closeMetadata());
|
|
30307
30698
|
}
|
|
30308
30699
|
setChartConfig(chartConfig) {
|
|
30309
30700
|
this.store.dispatch(setChartConfig({ chartConfig }));
|
|
30310
30701
|
}
|
|
30311
|
-
|
|
30702
|
+
/**
|
|
30703
|
+
* UserFeedbacks
|
|
30704
|
+
*/
|
|
30705
|
+
addUserFeedback(userFeedback) {
|
|
30706
|
+
this.store.dispatch(addUserFeedback({ userFeedback }));
|
|
30707
|
+
}
|
|
30708
|
+
loadUserFeedbacks(datasetUuid) {
|
|
30709
|
+
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
30710
|
+
}
|
|
30711
|
+
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
30712
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade }); }
|
|
30313
30713
|
}
|
|
30314
30714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
|
|
30315
30715
|
type: Injectable
|
|
30316
|
-
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }]; } });
|
|
30716
|
+
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }]; } });
|
|
30317
30717
|
|
|
30318
30718
|
class MdViewEffects {
|
|
30319
|
-
constructor(actions$, recordsRepository) {
|
|
30719
|
+
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
30320
30720
|
this.actions$ = actions$;
|
|
30321
30721
|
this.recordsRepository = recordsRepository;
|
|
30322
|
-
this.
|
|
30722
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
30723
|
+
/*
|
|
30724
|
+
Metadata effects
|
|
30725
|
+
*/
|
|
30726
|
+
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getByUniqueIdentifier(uuid)), map$1((record) => {
|
|
30323
30727
|
if (record === null) {
|
|
30324
|
-
return
|
|
30728
|
+
return loadFullMetadataFailure({ notFound: true });
|
|
30325
30729
|
}
|
|
30326
|
-
return
|
|
30327
|
-
}), catchError((error) => of(
|
|
30328
|
-
|
|
30730
|
+
return loadFullMetadataSuccess({ full: record });
|
|
30731
|
+
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
30732
|
+
/*
|
|
30733
|
+
Related effects
|
|
30734
|
+
*/
|
|
30735
|
+
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
30329
30736
|
return setRelated({ related });
|
|
30330
30737
|
}), catchError((error) => of(setRelated({ related: null })))));
|
|
30738
|
+
/*
|
|
30739
|
+
UserFeedback effects
|
|
30740
|
+
*/
|
|
30741
|
+
this.loadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(loadUserFeedbacks), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30742
|
+
otherError: error.message,
|
|
30743
|
+
})))))));
|
|
30744
|
+
this.reloadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedbackSuccess), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30745
|
+
otherError: error.message,
|
|
30746
|
+
})))))));
|
|
30747
|
+
this.addUserFeedback$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedback), mergeMap$1((action) => this.platformServiceInterface
|
|
30748
|
+
.postUserFeedbacks(action.userFeedback)
|
|
30749
|
+
.pipe(map$1(() => addUserFeedbackSuccess({
|
|
30750
|
+
datasetUuid: action.userFeedback.metadataUUID,
|
|
30751
|
+
})), catchError((error) => {
|
|
30752
|
+
return of(addUserFeedbackFailure({
|
|
30753
|
+
otherError: error.message,
|
|
30754
|
+
}));
|
|
30755
|
+
})))));
|
|
30331
30756
|
}
|
|
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 }); }
|
|
30757
|
+
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
30758
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects }); }
|
|
30334
30759
|
}
|
|
30335
30760
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
30336
30761
|
type: Injectable
|
|
30337
|
-
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }]; } });
|
|
30762
|
+
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
30338
30763
|
|
|
30339
30764
|
class FigureComponent {
|
|
30340
30765
|
constructor() {
|
|
@@ -32653,7 +33078,7 @@ class FeatureRecordModule {
|
|
|
32653
33078
|
DataViewWebComponentComponent,
|
|
32654
33079
|
DataViewShareComponent] }); }
|
|
32655
33080
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
32656
|
-
StoreModule.forFeature(
|
|
33081
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32657
33082
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32658
33083
|
UiLayoutModule,
|
|
32659
33084
|
FeatureMapModule,
|
|
@@ -32681,7 +33106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32681
33106
|
],
|
|
32682
33107
|
imports: [
|
|
32683
33108
|
CommonModule,
|
|
32684
|
-
StoreModule.forFeature(
|
|
33109
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32685
33110
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32686
33111
|
UiLayoutModule,
|
|
32687
33112
|
FeatureMapModule,
|
|
@@ -33130,7 +33555,7 @@ class WizardFieldComponent {
|
|
|
33130
33555
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33131
33556
|
},
|
|
33132
33557
|
{ 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: i3$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33558
|
+
], 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: i3$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33134
33559
|
}
|
|
33135
33560
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33136
33561
|
type: Component,
|
|
@@ -33400,7 +33825,7 @@ class FormFieldRichComponent {
|
|
|
33400
33825
|
this.control.setValue(textContent);
|
|
33401
33826
|
}
|
|
33402
33827
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldRichComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33403
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldRichComponent, isStandalone: true, selector: "gn-ui-form-field-rich", inputs: { control: "control", label: "label", hint: "hint", helperText: "helperText", placeholder: "placeholder" }, ngImport: i0, template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n", styles: ["
|
|
33828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldRichComponent, isStandalone: true, selector: "gn-ui-form-field-rich", inputs: { control: "control", label: "label", hint: "hint", helperText: "helperText", placeholder: "placeholder" }, ngImport: i0, template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 gn-ui-icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MarkdownEditorComponent, selector: "gn-ui-markdown-editor", inputs: ["preview", "helperText", "placeholder", "textContent"], outputs: ["textContentChanged"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33404
33829
|
}
|
|
33405
33830
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldRichComponent, decorators: [{
|
|
33406
33831
|
type: Component,
|
|
@@ -33410,7 +33835,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33410
33835
|
MarkdownEditorComponent,
|
|
33411
33836
|
FormFieldWrapperComponent,
|
|
33412
33837
|
ButtonComponent,
|
|
33413
|
-
], template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n"
|
|
33838
|
+
], template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 gn-ui-icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n" }]
|
|
33414
33839
|
}], propDecorators: { control: [{
|
|
33415
33840
|
type: Input
|
|
33416
33841
|
}], label: [{
|
|
@@ -33469,6 +33894,9 @@ class FormFieldComponent {
|
|
|
33469
33894
|
this.formControl = new FormControl();
|
|
33470
33895
|
this.valueChange = this.formControl.valueChanges;
|
|
33471
33896
|
}
|
|
33897
|
+
focusTitleInput() {
|
|
33898
|
+
this.titleInput.nativeElement.children[0].focus();
|
|
33899
|
+
}
|
|
33472
33900
|
get simpleType() {
|
|
33473
33901
|
return this.config.type;
|
|
33474
33902
|
}
|
|
@@ -33504,15 +33932,23 @@ class FormFieldComponent {
|
|
|
33504
33932
|
get isFieldInvalid() {
|
|
33505
33933
|
return !this.config.locked && this.config.invalid;
|
|
33506
33934
|
}
|
|
33935
|
+
get isTitle() {
|
|
33936
|
+
return this.model === 'title';
|
|
33937
|
+
}
|
|
33507
33938
|
get isAbstract() {
|
|
33508
33939
|
return this.model === 'abstract';
|
|
33509
33940
|
}
|
|
33510
33941
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33511
|
-
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" }, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <div class=\"mb-2 flex flex-row\">\n <label class=\"grow\">\n <span class=\"font-medium field-label\">{{\n config.labelKey | translate\n }}</span>\n <span *ngIf=\"config.hintKey\" class=\"text-gray-900 text-sm\">\n - {{ config.hintKey | translate }}\n </span>\n </label>\n <mat-icon\n *ngIf=\"isFieldOk\"\n class=\"material-symbols-outlined text-[#c6d950] icon-ok\"\n >check_circle</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldLocked\"\n class=\"material-symbols-outlined text-blue-400 icon-locked\"\n >lock</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldInvalid\"\n class=\"material-symbols-outlined text-pink-500 icon-invalid\"\n >cancel</mat-icon\n >\n </div>\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=\"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=\"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</div>\n", styles: [""], dependencies: [{ kind: "
|
|
33942
|
+
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 <div class=\"mb-2 flex flex-row\">\n <label class=\"grow\">\n <span class=\"font-medium field-label\">{{\n config.labelKey | translate\n }}</span>\n <span *ngIf=\"config.hintKey\" class=\"text-gray-900 text-sm\">\n - {{ config.hintKey | translate }}\n </span>\n </label>\n <mat-icon\n *ngIf=\"isFieldOk\"\n class=\"material-symbols-outlined text-[#c6d950] icon-ok\"\n >check_circle</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldLocked\"\n class=\"material-symbols-outlined text-blue-400 icon-locked\"\n >lock</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldInvalid\"\n class=\"material-symbols-outlined text-pink-500 icon-invalid\"\n >cancel</mat-icon\n >\n </div>\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=\"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=\"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=\"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</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { 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 }); }
|
|
33512
33943
|
}
|
|
33513
33944
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33514
33945
|
type: Component,
|
|
33515
33946
|
args: [{ selector: 'gn-ui-form-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
33947
|
+
CommonModule,
|
|
33948
|
+
ReactiveFormsModule,
|
|
33949
|
+
EditableLabelDirective,
|
|
33950
|
+
MatIconModule,
|
|
33951
|
+
MatTooltipModule,
|
|
33516
33952
|
FormFieldSimpleComponent,
|
|
33517
33953
|
FormFieldRichComponent,
|
|
33518
33954
|
FormFieldObjectComponent,
|
|
@@ -33520,11 +33956,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33520
33956
|
FormFieldTemporalExtentComponent,
|
|
33521
33957
|
FormFieldFileComponent,
|
|
33522
33958
|
FormFieldArrayComponent,
|
|
33523
|
-
CommonModule,
|
|
33524
|
-
ReactiveFormsModule,
|
|
33525
33959
|
TranslateModule,
|
|
33526
|
-
|
|
33527
|
-
], template: "<div class=\"flex flex-col h-full\">\n <div class=\"mb-2 flex flex-row\">\n <label class=\"grow\">\n <span class=\"font-medium field-label\">{{\n config.labelKey | translate\n }}</span>\n <span *ngIf=\"config.hintKey\" class=\"text-gray-900 text-sm\">\n - {{ config.hintKey | translate }}\n </span>\n </label>\n <mat-icon\n *ngIf=\"isFieldOk\"\n class=\"material-symbols-outlined text-[#c6d950] icon-ok\"\n >check_circle</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldLocked\"\n class=\"material-symbols-outlined text-blue-400 icon-locked\"\n >lock</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldInvalid\"\n class=\"material-symbols-outlined text-pink-500 icon-invalid\"\n >cancel</mat-icon\n >\n </div>\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=\"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=\"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</div>\n" }]
|
|
33960
|
+
], template: "<div class=\"flex flex-col h-full\">\n <div class=\"mb-2 flex flex-row\">\n <label class=\"grow\">\n <span class=\"font-medium field-label\">{{\n config.labelKey | translate\n }}</span>\n <span *ngIf=\"config.hintKey\" class=\"text-gray-900 text-sm\">\n - {{ config.hintKey | translate }}\n </span>\n </label>\n <mat-icon\n *ngIf=\"isFieldOk\"\n class=\"material-symbols-outlined text-[#c6d950] icon-ok\"\n >check_circle</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldLocked\"\n class=\"material-symbols-outlined text-blue-400 icon-locked\"\n >lock</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldInvalid\"\n class=\"material-symbols-outlined text-pink-500 icon-invalid\"\n >cancel</mat-icon\n >\n </div>\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=\"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=\"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=\"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</div>\n" }]
|
|
33528
33961
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33529
33962
|
type: Input
|
|
33530
33963
|
}], config: [{
|
|
@@ -33533,6 +33966,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33533
33966
|
type: Input
|
|
33534
33967
|
}], valueChange: [{
|
|
33535
33968
|
type: Output
|
|
33969
|
+
}], titleInput: [{
|
|
33970
|
+
type: ViewChild,
|
|
33971
|
+
args: ['titleInput']
|
|
33536
33972
|
}] } });
|
|
33537
33973
|
|
|
33538
33974
|
class RecordFormComponent {
|
|
@@ -33554,17 +33990,7 @@ class RecordFormComponent {
|
|
|
33554
33990
|
}
|
|
33555
33991
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
33556
33992
|
type: Component,
|
|
33557
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
33558
|
-
CommonModule,
|
|
33559
|
-
FormFieldComponent,
|
|
33560
|
-
FormFieldArrayComponent,
|
|
33561
|
-
FormFieldFileComponent,
|
|
33562
|
-
FormFieldObjectComponent,
|
|
33563
|
-
FormFieldRichComponent,
|
|
33564
|
-
FormFieldSimpleComponent,
|
|
33565
|
-
FormFieldSpatialExtentComponent,
|
|
33566
|
-
FormFieldTemporalExtentComponent,
|
|
33567
|
-
], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
33993
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
33568
33994
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
33569
33995
|
|
|
33570
33996
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -33862,7 +34288,7 @@ class RouterEffects {
|
|
|
33862
34288
|
* the search results happens
|
|
33863
34289
|
*/
|
|
33864
34290
|
this.navigateToSearch$ = createEffect(() => this._actions$.pipe(navigation(this.routerConfig.searchRouteComponent, {
|
|
33865
|
-
run: () =>
|
|
34291
|
+
run: () => closeMetadata(),
|
|
33866
34292
|
})));
|
|
33867
34293
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
33868
34294
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|