geonetwork-ui 2.10.0-dev.db7545cdc → 2.10.0-dev.dc20f8516
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/geonetwork-ui.mjs +369 -269
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +60 -16
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +0 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/field-focus.directive.ts +4 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +6 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-topics/form-field-topics.component.ts +2 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +0 -34
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +35 -0
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +5 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +35 -19
- package/src/libs/feature/editor/src/lib/fields.config.ts +60 -47
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +33 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +9 -1
- package/src/libs/ui/elements/src/lib/contact-details/contact-details.component.html +1 -1
- package/src/libs/ui/elements/src/lib/contact-pill/contact-pill.component.html +7 -3
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +4 -0
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +4 -54
- package/src/libs/ui/map/src/lib/map-utils.ts +48 -0
- package/src/libs/util/shared/src/lib/utils/geojson.ts +58 -1
- package/tailwind.base.css +6 -0
- package/translations/de.json +19 -19
- package/translations/en.json +19 -19
- package/translations/es.json +19 -19
- package/translations/fr.json +19 -19
- package/translations/it.json +19 -19
- package/translations/nl.json +19 -19
- package/translations/pt.json +19 -19
- package/translations/sk.json +19 -19
|
@@ -23,7 +23,7 @@ import { formatDistance } from 'date-fns/formatDistance';
|
|
|
23
23
|
import { Scroll, NavigationEnd, Router, RouteReuseStrategy } from '@angular/router';
|
|
24
24
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, StacEndpoint, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
25
25
|
import { getLength } from 'ol/sphere.js';
|
|
26
|
-
import { LineString
|
|
26
|
+
import { LineString } from 'ol/geom.js';
|
|
27
27
|
import * as i1 from '@ngrx/store';
|
|
28
28
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, Store, select, StoreModule } from '@ngrx/store';
|
|
29
29
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
@@ -18879,25 +18879,25 @@ var de = {
|
|
|
18879
18879
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
18880
18880
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
18881
18881
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
18882
|
-
"editor.record.form.topics.
|
|
18883
|
-
"editor.record.form.topics.
|
|
18884
|
-
"editor.record.form.topics.
|
|
18885
|
-
"editor.record.form.topics.
|
|
18886
|
-
"editor.record.form.topics.
|
|
18887
|
-
"editor.record.form.topics.
|
|
18888
|
-
"editor.record.form.topics.
|
|
18889
|
-
"editor.record.form.topics.
|
|
18890
|
-
"editor.record.form.topics.
|
|
18891
|
-
"editor.record.form.topics.
|
|
18892
|
-
"editor.record.form.topics.
|
|
18893
|
-
"editor.record.form.topics.
|
|
18894
|
-
"editor.record.form.topics.
|
|
18895
|
-
"editor.record.form.topics.
|
|
18896
|
-
"editor.record.form.topics.
|
|
18897
|
-
"editor.record.form.topics.
|
|
18898
|
-
"editor.record.form.topics.
|
|
18899
|
-
"editor.record.form.topics.
|
|
18900
|
-
"editor.record.form.topics.
|
|
18882
|
+
"editor.record.form.topics.iso.biota": "Biologie",
|
|
18883
|
+
"editor.record.form.topics.iso.boundaries": "Grenzen",
|
|
18884
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Klimatologie/Meteorologie/Atmosphäre",
|
|
18885
|
+
"editor.record.form.topics.iso.economy": "Wirtschaft",
|
|
18886
|
+
"editor.record.form.topics.iso.elevation": "Höhenangaben",
|
|
18887
|
+
"editor.record.form.topics.iso.environment": "Umwelt",
|
|
18888
|
+
"editor.record.form.topics.iso.farming": "Landwirtschaft",
|
|
18889
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Geowissenschaften",
|
|
18890
|
+
"editor.record.form.topics.iso.health": "Gesundheitswesen",
|
|
18891
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Bilddaten/Basiskarten/Landbedeckung",
|
|
18892
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Aufklärung/Militär",
|
|
18893
|
+
"editor.record.form.topics.iso.location": "Ortsangaben",
|
|
18894
|
+
"editor.record.form.topics.iso.oceans": "Meere",
|
|
18895
|
+
"editor.record.form.topics.iso.planningCadastre": "Planungsunterlagen/Kataster",
|
|
18896
|
+
"editor.record.form.topics.iso.society": "Gesellschaft",
|
|
18897
|
+
"editor.record.form.topics.iso.structure": "Bauwerke",
|
|
18898
|
+
"editor.record.form.topics.iso.transportation": "Verkehrswesen",
|
|
18899
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Ver- und Entsorgung/Nachrichtenwesen",
|
|
18900
|
+
"editor.record.form.topics.iso.inlandWaters": "Binnengewässer",
|
|
18901
18901
|
"editor.record.form.topics.placeholder": "Ein oder mehrere Themen auswählen",
|
|
18902
18902
|
"editor.record.form.updateFrequency.planned": "Dieses Dataset wird regelmäßig aktualisiert.",
|
|
18903
18903
|
"editor.record.importFromExternalFile.failure.body": "Beim Importieren des Datensatzes ist ein Fehler aufgetreten:",
|
|
@@ -19562,25 +19562,25 @@ var en = {
|
|
|
19562
19562
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
19563
19563
|
"editor.record.form.temporalExtents.date": "Date",
|
|
19564
19564
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
19565
|
-
"editor.record.form.topics.
|
|
19566
|
-
"editor.record.form.topics.
|
|
19567
|
-
"editor.record.form.topics.
|
|
19568
|
-
"editor.record.form.topics.
|
|
19569
|
-
"editor.record.form.topics.
|
|
19570
|
-
"editor.record.form.topics.
|
|
19571
|
-
"editor.record.form.topics.
|
|
19572
|
-
"editor.record.form.topics.
|
|
19573
|
-
"editor.record.form.topics.
|
|
19574
|
-
"editor.record.form.topics.
|
|
19575
|
-
"editor.record.form.topics.
|
|
19576
|
-
"editor.record.form.topics.
|
|
19577
|
-
"editor.record.form.topics.
|
|
19578
|
-
"editor.record.form.topics.
|
|
19579
|
-
"editor.record.form.topics.
|
|
19580
|
-
"editor.record.form.topics.
|
|
19581
|
-
"editor.record.form.topics.
|
|
19582
|
-
"editor.record.form.topics.
|
|
19583
|
-
"editor.record.form.topics.
|
|
19565
|
+
"editor.record.form.topics.iso.biota": "Biota",
|
|
19566
|
+
"editor.record.form.topics.iso.boundaries": "Boundaries",
|
|
19567
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Climatology / Meteorology / Atmosphere",
|
|
19568
|
+
"editor.record.form.topics.iso.economy": "Economy",
|
|
19569
|
+
"editor.record.form.topics.iso.elevation": "Elevation",
|
|
19570
|
+
"editor.record.form.topics.iso.environment": "Environnement",
|
|
19571
|
+
"editor.record.form.topics.iso.farming": "Farming",
|
|
19572
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Geoscientific Information",
|
|
19573
|
+
"editor.record.form.topics.iso.health": "Health",
|
|
19574
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Imagery / Base Maps / Earth Cover",
|
|
19575
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Intelligence / Military",
|
|
19576
|
+
"editor.record.form.topics.iso.location": "Location",
|
|
19577
|
+
"editor.record.form.topics.iso.oceans": "Oceans",
|
|
19578
|
+
"editor.record.form.topics.iso.planningCadastre": "Planning / Cadastre",
|
|
19579
|
+
"editor.record.form.topics.iso.society": "Society",
|
|
19580
|
+
"editor.record.form.topics.iso.structure": "Structure",
|
|
19581
|
+
"editor.record.form.topics.iso.transportation": "Transportation",
|
|
19582
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Utilities / Communication",
|
|
19583
|
+
"editor.record.form.topics.iso.inlandWaters": "Inland Waters",
|
|
19584
19584
|
"editor.record.form.topics.placeholder": "Select one or several topics",
|
|
19585
19585
|
"editor.record.form.updateFrequency.planned": "This dataset is updated regularly",
|
|
19586
19586
|
"editor.record.importFromExternalFile.failure.body": "Failure",
|
|
@@ -20245,25 +20245,25 @@ var es = {
|
|
|
20245
20245
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20246
20246
|
"editor.record.form.temporalExtents.date": "",
|
|
20247
20247
|
"editor.record.form.temporalExtents.range": "",
|
|
20248
|
-
"editor.record.form.topics.
|
|
20249
|
-
"editor.record.form.topics.
|
|
20250
|
-
"editor.record.form.topics.
|
|
20251
|
-
"editor.record.form.topics.
|
|
20252
|
-
"editor.record.form.topics.
|
|
20253
|
-
"editor.record.form.topics.
|
|
20254
|
-
"editor.record.form.topics.
|
|
20255
|
-
"editor.record.form.topics.
|
|
20256
|
-
"editor.record.form.topics.
|
|
20257
|
-
"editor.record.form.topics.
|
|
20258
|
-
"editor.record.form.topics.
|
|
20259
|
-
"editor.record.form.topics.
|
|
20260
|
-
"editor.record.form.topics.
|
|
20261
|
-
"editor.record.form.topics.
|
|
20262
|
-
"editor.record.form.topics.
|
|
20263
|
-
"editor.record.form.topics.
|
|
20264
|
-
"editor.record.form.topics.
|
|
20265
|
-
"editor.record.form.topics.
|
|
20266
|
-
"editor.record.form.topics.
|
|
20248
|
+
"editor.record.form.topics.iso.biota": "",
|
|
20249
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
20250
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
20251
|
+
"editor.record.form.topics.iso.economy": "",
|
|
20252
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
20253
|
+
"editor.record.form.topics.iso.environment": "",
|
|
20254
|
+
"editor.record.form.topics.iso.farming": "",
|
|
20255
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
20256
|
+
"editor.record.form.topics.iso.health": "",
|
|
20257
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
20258
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
20259
|
+
"editor.record.form.topics.iso.location": "",
|
|
20260
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
20261
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
20262
|
+
"editor.record.form.topics.iso.society": "",
|
|
20263
|
+
"editor.record.form.topics.iso.structure": "",
|
|
20264
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
20265
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
20266
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
20267
20267
|
"editor.record.form.topics.placeholder": "",
|
|
20268
20268
|
"editor.record.form.updateFrequency.planned": "Este conjunto de datos se actualiza regularmente.",
|
|
20269
20269
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -20928,25 +20928,25 @@ var fr = {
|
|
|
20928
20928
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
20929
20929
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
20930
20930
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
20931
|
-
"editor.record.form.topics.
|
|
20932
|
-
"editor.record.form.topics.
|
|
20933
|
-
"editor.record.form.topics.
|
|
20934
|
-
"editor.record.form.topics.
|
|
20935
|
-
"editor.record.form.topics.
|
|
20936
|
-
"editor.record.form.topics.
|
|
20937
|
-
"editor.record.form.topics.
|
|
20938
|
-
"editor.record.form.topics.
|
|
20939
|
-
"editor.record.form.topics.
|
|
20940
|
-
"editor.record.form.topics.
|
|
20941
|
-
"editor.record.form.topics.
|
|
20942
|
-
"editor.record.form.topics.
|
|
20943
|
-
"editor.record.form.topics.
|
|
20944
|
-
"editor.record.form.topics.
|
|
20945
|
-
"editor.record.form.topics.
|
|
20946
|
-
"editor.record.form.topics.
|
|
20947
|
-
"editor.record.form.topics.
|
|
20948
|
-
"editor.record.form.topics.
|
|
20949
|
-
"editor.record.form.topics.
|
|
20931
|
+
"editor.record.form.topics.iso.biota": "Biote",
|
|
20932
|
+
"editor.record.form.topics.iso.boundaries": "Limites",
|
|
20933
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "Climatologie/Météorologie/Atmosphère",
|
|
20934
|
+
"editor.record.form.topics.iso.economy": "Économie",
|
|
20935
|
+
"editor.record.form.topics.iso.elevation": "Altitude",
|
|
20936
|
+
"editor.record.form.topics.iso.environment": "Environnement",
|
|
20937
|
+
"editor.record.form.topics.iso.farming": "Agriculture",
|
|
20938
|
+
"editor.record.form.topics.iso.geoscientificInformation": "Informations géoscientifiques",
|
|
20939
|
+
"editor.record.form.topics.iso.health": "Santé",
|
|
20940
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "Imagerie/Cartes de base/Occupation des terres",
|
|
20941
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "Renseignement/Secteur militaire",
|
|
20942
|
+
"editor.record.form.topics.iso.location": "Localisation",
|
|
20943
|
+
"editor.record.form.topics.iso.oceans": "Océans",
|
|
20944
|
+
"editor.record.form.topics.iso.planningCadastre": "Planification/Cadastre",
|
|
20945
|
+
"editor.record.form.topics.iso.society": "Société",
|
|
20946
|
+
"editor.record.form.topics.iso.structure": "Structure",
|
|
20947
|
+
"editor.record.form.topics.iso.transportation": "Transport",
|
|
20948
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "Services d’utilité publique/Communication",
|
|
20949
|
+
"editor.record.form.topics.iso.inlandWaters": "Eaux intérieures",
|
|
20950
20950
|
"editor.record.form.topics.placeholder": "Sélectionnez un ou plusieurs thèmes",
|
|
20951
20951
|
"editor.record.form.updateFrequency.planned": "Ce jeu de données est mis à jour régulièrement",
|
|
20952
20952
|
"editor.record.importFromExternalFile.failure.body": "Une erreur est survenue pendant l'import du jeu de données : ",
|
|
@@ -21611,25 +21611,25 @@ var it = {
|
|
|
21611
21611
|
"editor.record.form.temporalExtents.addRange": "Periodo di tempo",
|
|
21612
21612
|
"editor.record.form.temporalExtents.date": "Data rilevante",
|
|
21613
21613
|
"editor.record.form.temporalExtents.range": "Periodo interessato",
|
|
21614
|
-
"editor.record.form.topics.
|
|
21615
|
-
"editor.record.form.topics.
|
|
21616
|
-
"editor.record.form.topics.
|
|
21617
|
-
"editor.record.form.topics.
|
|
21618
|
-
"editor.record.form.topics.
|
|
21619
|
-
"editor.record.form.topics.
|
|
21620
|
-
"editor.record.form.topics.
|
|
21621
|
-
"editor.record.form.topics.
|
|
21622
|
-
"editor.record.form.topics.
|
|
21623
|
-
"editor.record.form.topics.
|
|
21624
|
-
"editor.record.form.topics.
|
|
21625
|
-
"editor.record.form.topics.
|
|
21626
|
-
"editor.record.form.topics.
|
|
21627
|
-
"editor.record.form.topics.
|
|
21628
|
-
"editor.record.form.topics.
|
|
21629
|
-
"editor.record.form.topics.
|
|
21630
|
-
"editor.record.form.topics.
|
|
21631
|
-
"editor.record.form.topics.
|
|
21632
|
-
"editor.record.form.topics.
|
|
21614
|
+
"editor.record.form.topics.iso.biota": "",
|
|
21615
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
21616
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
21617
|
+
"editor.record.form.topics.iso.economy": "",
|
|
21618
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
21619
|
+
"editor.record.form.topics.iso.environment": "",
|
|
21620
|
+
"editor.record.form.topics.iso.farming": "",
|
|
21621
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
21622
|
+
"editor.record.form.topics.iso.health": "",
|
|
21623
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
21624
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
21625
|
+
"editor.record.form.topics.iso.location": "",
|
|
21626
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
21627
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
21628
|
+
"editor.record.form.topics.iso.society": "",
|
|
21629
|
+
"editor.record.form.topics.iso.structure": "",
|
|
21630
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
21631
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
21632
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
21633
21633
|
"editor.record.form.topics.placeholder": "",
|
|
21634
21634
|
"editor.record.form.updateFrequency.planned": "Questi dati dovrebbero essere aggiornati regolarmente",
|
|
21635
21635
|
"editor.record.importFromExternalFile.failure.body": "Ha successo un'errore durante l'importazione del dataset: ",
|
|
@@ -22294,25 +22294,25 @@ var nl = {
|
|
|
22294
22294
|
"editor.record.form.temporalExtents.addRange": "",
|
|
22295
22295
|
"editor.record.form.temporalExtents.date": "",
|
|
22296
22296
|
"editor.record.form.temporalExtents.range": "",
|
|
22297
|
-
"editor.record.form.topics.
|
|
22298
|
-
"editor.record.form.topics.
|
|
22299
|
-
"editor.record.form.topics.
|
|
22300
|
-
"editor.record.form.topics.
|
|
22301
|
-
"editor.record.form.topics.
|
|
22302
|
-
"editor.record.form.topics.
|
|
22303
|
-
"editor.record.form.topics.
|
|
22304
|
-
"editor.record.form.topics.
|
|
22305
|
-
"editor.record.form.topics.
|
|
22306
|
-
"editor.record.form.topics.
|
|
22307
|
-
"editor.record.form.topics.
|
|
22308
|
-
"editor.record.form.topics.
|
|
22309
|
-
"editor.record.form.topics.
|
|
22310
|
-
"editor.record.form.topics.
|
|
22311
|
-
"editor.record.form.topics.
|
|
22312
|
-
"editor.record.form.topics.
|
|
22313
|
-
"editor.record.form.topics.
|
|
22314
|
-
"editor.record.form.topics.
|
|
22315
|
-
"editor.record.form.topics.
|
|
22297
|
+
"editor.record.form.topics.iso.biota": "",
|
|
22298
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
22299
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
22300
|
+
"editor.record.form.topics.iso.economy": "",
|
|
22301
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
22302
|
+
"editor.record.form.topics.iso.environment": "",
|
|
22303
|
+
"editor.record.form.topics.iso.farming": "",
|
|
22304
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
22305
|
+
"editor.record.form.topics.iso.health": "",
|
|
22306
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
22307
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
22308
|
+
"editor.record.form.topics.iso.location": "",
|
|
22309
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
22310
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
22311
|
+
"editor.record.form.topics.iso.society": "",
|
|
22312
|
+
"editor.record.form.topics.iso.structure": "",
|
|
22313
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
22314
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
22315
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
22316
22316
|
"editor.record.form.topics.placeholder": "",
|
|
22317
22317
|
"editor.record.form.updateFrequency.planned": "Deze dataset wordt regelmatig bijgewerkt.",
|
|
22318
22318
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -22977,25 +22977,25 @@ var pt = {
|
|
|
22977
22977
|
"editor.record.form.temporalExtents.addRange": "",
|
|
22978
22978
|
"editor.record.form.temporalExtents.date": "",
|
|
22979
22979
|
"editor.record.form.temporalExtents.range": "",
|
|
22980
|
-
"editor.record.form.topics.
|
|
22981
|
-
"editor.record.form.topics.
|
|
22982
|
-
"editor.record.form.topics.
|
|
22983
|
-
"editor.record.form.topics.
|
|
22984
|
-
"editor.record.form.topics.
|
|
22985
|
-
"editor.record.form.topics.
|
|
22986
|
-
"editor.record.form.topics.
|
|
22987
|
-
"editor.record.form.topics.
|
|
22988
|
-
"editor.record.form.topics.
|
|
22989
|
-
"editor.record.form.topics.
|
|
22990
|
-
"editor.record.form.topics.
|
|
22991
|
-
"editor.record.form.topics.
|
|
22992
|
-
"editor.record.form.topics.
|
|
22993
|
-
"editor.record.form.topics.
|
|
22994
|
-
"editor.record.form.topics.
|
|
22995
|
-
"editor.record.form.topics.
|
|
22996
|
-
"editor.record.form.topics.
|
|
22997
|
-
"editor.record.form.topics.
|
|
22998
|
-
"editor.record.form.topics.
|
|
22980
|
+
"editor.record.form.topics.iso.biota": "",
|
|
22981
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
22982
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
22983
|
+
"editor.record.form.topics.iso.economy": "",
|
|
22984
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
22985
|
+
"editor.record.form.topics.iso.environment": "",
|
|
22986
|
+
"editor.record.form.topics.iso.farming": "",
|
|
22987
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
22988
|
+
"editor.record.form.topics.iso.health": "",
|
|
22989
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
22990
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
22991
|
+
"editor.record.form.topics.iso.location": "",
|
|
22992
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
22993
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
22994
|
+
"editor.record.form.topics.iso.society": "",
|
|
22995
|
+
"editor.record.form.topics.iso.structure": "",
|
|
22996
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
22997
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
22998
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
22999
22999
|
"editor.record.form.topics.placeholder": "",
|
|
23000
23000
|
"editor.record.form.updateFrequency.planned": "Este conjunto de dados é atualizado regularmente.",
|
|
23001
23001
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -23660,25 +23660,25 @@ var sk = {
|
|
|
23660
23660
|
"editor.record.form.temporalExtents.addRange": "",
|
|
23661
23661
|
"editor.record.form.temporalExtents.date": "",
|
|
23662
23662
|
"editor.record.form.temporalExtents.range": "",
|
|
23663
|
-
"editor.record.form.topics.
|
|
23664
|
-
"editor.record.form.topics.
|
|
23665
|
-
"editor.record.form.topics.
|
|
23666
|
-
"editor.record.form.topics.
|
|
23667
|
-
"editor.record.form.topics.
|
|
23668
|
-
"editor.record.form.topics.
|
|
23669
|
-
"editor.record.form.topics.
|
|
23670
|
-
"editor.record.form.topics.
|
|
23671
|
-
"editor.record.form.topics.
|
|
23672
|
-
"editor.record.form.topics.
|
|
23673
|
-
"editor.record.form.topics.
|
|
23674
|
-
"editor.record.form.topics.
|
|
23675
|
-
"editor.record.form.topics.
|
|
23676
|
-
"editor.record.form.topics.
|
|
23677
|
-
"editor.record.form.topics.
|
|
23678
|
-
"editor.record.form.topics.
|
|
23679
|
-
"editor.record.form.topics.
|
|
23680
|
-
"editor.record.form.topics.
|
|
23681
|
-
"editor.record.form.topics.
|
|
23663
|
+
"editor.record.form.topics.iso.biota": "",
|
|
23664
|
+
"editor.record.form.topics.iso.boundaries": "",
|
|
23665
|
+
"editor.record.form.topics.iso.climatologyMeteorologyAtmosphere": "",
|
|
23666
|
+
"editor.record.form.topics.iso.economy": "",
|
|
23667
|
+
"editor.record.form.topics.iso.elevation": "",
|
|
23668
|
+
"editor.record.form.topics.iso.environment": "",
|
|
23669
|
+
"editor.record.form.topics.iso.farming": "",
|
|
23670
|
+
"editor.record.form.topics.iso.geoscientificInformation": "",
|
|
23671
|
+
"editor.record.form.topics.iso.health": "",
|
|
23672
|
+
"editor.record.form.topics.iso.imageryBaseMapsEarthCover": "",
|
|
23673
|
+
"editor.record.form.topics.iso.intelligenceMilitary": "",
|
|
23674
|
+
"editor.record.form.topics.iso.location": "",
|
|
23675
|
+
"editor.record.form.topics.iso.oceans": "",
|
|
23676
|
+
"editor.record.form.topics.iso.planningCadastre": "",
|
|
23677
|
+
"editor.record.form.topics.iso.society": "",
|
|
23678
|
+
"editor.record.form.topics.iso.structure": "",
|
|
23679
|
+
"editor.record.form.topics.iso.transportation": "",
|
|
23680
|
+
"editor.record.form.topics.iso.utilitiesCommunication": "",
|
|
23681
|
+
"editor.record.form.topics.iso.inlandWaters": "",
|
|
23682
23682
|
"editor.record.form.topics.placeholder": "",
|
|
23683
23683
|
"editor.record.form.updateFrequency.planned": "Táto množina údajov sa pravidelne aktualizuje",
|
|
23684
23684
|
"editor.record.importFromExternalFile.failure.body": "",
|
|
@@ -24985,6 +24985,51 @@ function getGeometryBoundingBox(geometry) {
|
|
|
24985
24985
|
return coordinatesReducer(emptyExtent, geometry.coordinates);
|
|
24986
24986
|
}
|
|
24987
24987
|
}
|
|
24988
|
+
/**
|
|
24989
|
+
* Builds the closed GeoJSON Polygon matching the given bounding box.
|
|
24990
|
+
*/
|
|
24991
|
+
function bboxToPolygon(bbox) {
|
|
24992
|
+
const [minX, minY, maxX, maxY] = bbox;
|
|
24993
|
+
return {
|
|
24994
|
+
type: 'Polygon',
|
|
24995
|
+
coordinates: [
|
|
24996
|
+
[
|
|
24997
|
+
[minX, minY],
|
|
24998
|
+
[minX, maxY],
|
|
24999
|
+
[maxX, maxY],
|
|
25000
|
+
[maxX, minY],
|
|
25001
|
+
[minX, minY],
|
|
25002
|
+
],
|
|
25003
|
+
],
|
|
25004
|
+
};
|
|
25005
|
+
}
|
|
25006
|
+
/**
|
|
25007
|
+
* Returns the geometry carried by a spatial extent, falling back to the polygon
|
|
25008
|
+
* derived from its bounding box. Returns null when the extent has neither.
|
|
25009
|
+
*/
|
|
25010
|
+
function spatialExtentToGeometry(extent) {
|
|
25011
|
+
if (extent.geometry)
|
|
25012
|
+
return extent.geometry;
|
|
25013
|
+
if (extent.bbox)
|
|
25014
|
+
return bboxToPolygon(extent.bbox);
|
|
25015
|
+
return null;
|
|
25016
|
+
}
|
|
25017
|
+
/**
|
|
25018
|
+
* Converts a list of dataset spatial extents into a GeoJSON FeatureCollection,
|
|
25019
|
+
* e.g. to be used as the data source of a map layer.
|
|
25020
|
+
*/
|
|
25021
|
+
function spatialExtentsToFeatureCollection(extents) {
|
|
25022
|
+
return {
|
|
25023
|
+
type: 'FeatureCollection',
|
|
25024
|
+
features: extents.reduce((features, extent) => {
|
|
25025
|
+
const geometry = spatialExtentToGeometry(extent);
|
|
25026
|
+
if (geometry) {
|
|
25027
|
+
features.push({ type: 'Feature', properties: {}, geometry });
|
|
25028
|
+
}
|
|
25029
|
+
return features;
|
|
25030
|
+
}, []),
|
|
25031
|
+
};
|
|
25032
|
+
}
|
|
24988
25033
|
|
|
24989
25034
|
function downsizeImage(blob, maxWidth, maxHeight) {
|
|
24990
25035
|
return new Promise((resolve, reject) => {
|
|
@@ -25677,7 +25722,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
25677
25722
|
}] } });
|
|
25678
25723
|
|
|
25679
25724
|
var name = "geonetwork-ui";
|
|
25680
|
-
var version = "2.10.0-dev.
|
|
25725
|
+
var version = "2.10.0-dev.dc20f8516";
|
|
25681
25726
|
var engines = {
|
|
25682
25727
|
node: ">=24"
|
|
25683
25728
|
};
|
|
@@ -28127,6 +28172,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
28127
28172
|
type: Output
|
|
28128
28173
|
}] } });
|
|
28129
28174
|
|
|
28175
|
+
/**
|
|
28176
|
+
* Default style for a spatial-extent layer: a solid black outline over a
|
|
28177
|
+
* translucent grey fill.
|
|
28178
|
+
*/
|
|
28179
|
+
const DEFAULT_SPATIAL_EXTENT_STYLE = {
|
|
28180
|
+
'stroke-color': 'black',
|
|
28181
|
+
'stroke-width': 2,
|
|
28182
|
+
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
28183
|
+
};
|
|
28184
|
+
/**
|
|
28185
|
+
* Builds a GeoJSON map layer drawing the given spatial extents: each extent is
|
|
28186
|
+
* rendered from its own geometry or, when only a bounding box is available,
|
|
28187
|
+
* from a polygon derived from that box.
|
|
28188
|
+
*
|
|
28189
|
+
* @returns the layer, or `null` when none of the extents can be represented.
|
|
28190
|
+
*/
|
|
28191
|
+
function createSpatialExtentLayer(extents, overrides) {
|
|
28192
|
+
const data = spatialExtentsToFeatureCollection(extents);
|
|
28193
|
+
if (data.features.length === 0) {
|
|
28194
|
+
return null;
|
|
28195
|
+
}
|
|
28196
|
+
return {
|
|
28197
|
+
type: 'geojson',
|
|
28198
|
+
data,
|
|
28199
|
+
label: 'Spatial extents',
|
|
28200
|
+
style: DEFAULT_SPATIAL_EXTENT_STYLE,
|
|
28201
|
+
...overrides,
|
|
28202
|
+
};
|
|
28203
|
+
}
|
|
28130
28204
|
function prioritizePageScroll(interactions) {
|
|
28131
28205
|
interactions.clear();
|
|
28132
28206
|
interactions.extend(defaults({
|
|
@@ -28167,39 +28241,10 @@ class SpatialExtentComponent {
|
|
|
28167
28241
|
this._cdr = inject(ChangeDetectorRef);
|
|
28168
28242
|
this.spatialExtents$ = new BehaviorSubject([]);
|
|
28169
28243
|
this.mapContext$ = this.spatialExtents$.pipe(switchMap$1((extents) => {
|
|
28170
|
-
|
|
28244
|
+
const layer = createSpatialExtentLayer(extents);
|
|
28245
|
+
if (!layer) {
|
|
28171
28246
|
return of(null);
|
|
28172
28247
|
}
|
|
28173
|
-
const featureCollection = {
|
|
28174
|
-
type: 'FeatureCollection',
|
|
28175
|
-
features: [],
|
|
28176
|
-
};
|
|
28177
|
-
extents.forEach((extent) => {
|
|
28178
|
-
if (extent.geometry) {
|
|
28179
|
-
featureCollection.features.push({
|
|
28180
|
-
type: 'Feature',
|
|
28181
|
-
properties: {},
|
|
28182
|
-
geometry: extent.geometry,
|
|
28183
|
-
});
|
|
28184
|
-
}
|
|
28185
|
-
else if (extent.bbox?.length >= 0) {
|
|
28186
|
-
featureCollection.features.push({
|
|
28187
|
-
type: 'Feature',
|
|
28188
|
-
properties: {},
|
|
28189
|
-
geometry: this.bboxCoordsToGeometry(extent.bbox),
|
|
28190
|
-
});
|
|
28191
|
-
}
|
|
28192
|
-
});
|
|
28193
|
-
const layer = {
|
|
28194
|
-
type: 'geojson',
|
|
28195
|
-
data: featureCollection,
|
|
28196
|
-
label: 'Spatial extents',
|
|
28197
|
-
style: {
|
|
28198
|
-
'stroke-color': 'black',
|
|
28199
|
-
'stroke-width': 2,
|
|
28200
|
-
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
28201
|
-
},
|
|
28202
|
-
};
|
|
28203
28248
|
return from(createViewFromLayer(layer)).pipe(map$1((view) => ({ view, layers: [layer] })), tap$1(() => this._cdr.markForCheck()));
|
|
28204
28249
|
}));
|
|
28205
28250
|
this.error = '';
|
|
@@ -28207,18 +28252,6 @@ class SpatialExtentComponent {
|
|
|
28207
28252
|
set spatialExtents(value) {
|
|
28208
28253
|
this.spatialExtents$.next(value);
|
|
28209
28254
|
}
|
|
28210
|
-
bboxCoordsToGeometry(bbox) {
|
|
28211
|
-
const geometry = new Polygon([
|
|
28212
|
-
[
|
|
28213
|
-
[bbox[0], bbox[1]],
|
|
28214
|
-
[bbox[0], bbox[3]],
|
|
28215
|
-
[bbox[2], bbox[3]],
|
|
28216
|
-
[bbox[2], bbox[1]],
|
|
28217
|
-
[bbox[0], bbox[1]],
|
|
28218
|
-
],
|
|
28219
|
-
]);
|
|
28220
|
-
return new GeoJSON().writeGeometryObject(geometry);
|
|
28221
|
-
}
|
|
28222
28255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: SpatialExtentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28223
28256
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: SpatialExtentComponent, isStandalone: true, selector: "gn-ui-spatial-extent", inputs: { spatialExtents: "spatialExtents" }, ngImport: i0, template: "<gn-ui-map-container\n class=\"h-full w-full\"\n [context]=\"mapContext$ | async\"\n></gn-ui-map-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "extentChange", "sourceLoadError", "resolvedExtentChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
28224
28257
|
}
|
|
@@ -28251,6 +28284,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
28251
28284
|
|
|
28252
28285
|
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
28253
28286
|
|
|
28287
|
+
/**
|
|
28288
|
+
* Style of the extent overlay drawn on top of the previewed data: a dashed
|
|
28289
|
+
* black outline over a very light fill, so the extent stays readable without
|
|
28290
|
+
* hiding the data underneath.
|
|
28291
|
+
*/
|
|
28292
|
+
const RECORD_EXTENT_OVERLAY_STYLE = {
|
|
28293
|
+
'stroke-color': 'rgba(0, 0, 0, 0.6)',
|
|
28294
|
+
'stroke-width': 2,
|
|
28295
|
+
'stroke-line-dash': [8, 6],
|
|
28296
|
+
'fill-color': 'rgba(0, 0, 0, 0.03)',
|
|
28297
|
+
};
|
|
28254
28298
|
class MapUtilsService {
|
|
28255
28299
|
getRecordExtent(record) {
|
|
28256
28300
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
@@ -28266,6 +28310,21 @@ class MapUtilsService {
|
|
|
28266
28310
|
return prev;
|
|
28267
28311
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
28268
28312
|
}
|
|
28313
|
+
/**
|
|
28314
|
+
* Builds a non-interactive overlay layer drawing the spatial extent(s)
|
|
28315
|
+
* declared in the record's metadata (bounding boxes and/or geometries).
|
|
28316
|
+
* Returns null when the record has no usable spatial extent.
|
|
28317
|
+
*
|
|
28318
|
+
* This is purely for display and is independent from the map's initial view,
|
|
28319
|
+
* which is derived separately (see {@link getRecordExtent}).
|
|
28320
|
+
*/
|
|
28321
|
+
getRecordExtentLayer(record) {
|
|
28322
|
+
return createSpatialExtentLayer(record.spatialExtents ?? [], {
|
|
28323
|
+
label: 'Spatial extent',
|
|
28324
|
+
clickable: false,
|
|
28325
|
+
style: RECORD_EXTENT_OVERLAY_STYLE,
|
|
28326
|
+
});
|
|
28327
|
+
}
|
|
28269
28328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MapUtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28270
28329
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
28271
28330
|
}
|
|
@@ -29397,6 +29456,9 @@ class ButtonComponent {
|
|
|
29397
29456
|
case 'gray':
|
|
29398
29457
|
this.btnClass = 'gn-ui-btn-gray';
|
|
29399
29458
|
break;
|
|
29459
|
+
case 'gray-light':
|
|
29460
|
+
this.btnClass = 'gn-ui-btn-gray-light';
|
|
29461
|
+
break;
|
|
29400
29462
|
case 'black':
|
|
29401
29463
|
this.btnClass = 'gn-ui-btn-black';
|
|
29402
29464
|
break;
|
|
@@ -34473,7 +34535,7 @@ class ContactDetailsComponent {
|
|
|
34473
34535
|
return getAddressLines(this.contact?.address);
|
|
34474
34536
|
}
|
|
34475
34537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34476
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactDetailsComponent, isStandalone: true, selector: "gn-ui-contact-details", inputs: { contact: "contact" }, ngImport: i0, template: "<div\n class=\"bg-gray-50 rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [
|
|
34538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactDetailsComponent, isStandalone: true, selector: "gn-ui-contact-details", inputs: { contact: "contact" }, ngImport: i0, template: "<div\n class=\"bg-gray-50 text-black rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [
|
|
34477
34539
|
provideIcons({
|
|
34478
34540
|
matCallOutline,
|
|
34479
34541
|
matLocationOnOutline,
|
|
@@ -34491,7 +34553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34491
34553
|
matMailOutline,
|
|
34492
34554
|
matOpenInNew,
|
|
34493
34555
|
}),
|
|
34494
|
-
], template: "<div\n class=\"bg-gray-50 rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n" }]
|
|
34556
|
+
], template: "<div\n class=\"bg-gray-50 text-black rounded border border-gray-200 shadow-md p-4 flex flex-col gap-3 w-full\"\n data-test=\"contact-details\"\n>\n @if (displayName) {\n <div class=\"flex items-center gap-3\">\n @if (organization?.logoUrl?.href) {\n <div\n class=\"flex items-center justify-center rounded-md bg-white w-14 h-14 shrink-0 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n }\n <span\n class=\"font-title text-xl leading-tight\"\n data-test=\"contact-details-name\"\n >{{ displayName }}</span\n >\n </div>\n }\n\n <!-- Email + phone: always shown; icon dimmed when field is absent -->\n <div class=\"grid grid-cols-2 gap-1 rounded-md overflow-hidden\">\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.email\"\n [class.opacity-75]=\"!!contact.email\"\n name=\"matMailOutline\"\n ></ng-icon>\n @if (contact.email) {\n <a\n [href]=\"'mailto:' + contact.email\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-email\"\n >{{ contact.email }}</a\n >\n }\n </div>\n <div class=\"bg-gray-100 flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!contact.phone\"\n [class.opacity-75]=\"!!contact.phone\"\n name=\"matCallOutline\"\n ></ng-icon>\n @if (contact.phone) {\n <span class=\"text-sm\" data-test=\"contact-details-phone\">{{\n contact.phone\n }}</span>\n }\n </div>\n </div>\n\n <!-- Address: always shown; icon dimmed when absent -->\n <div class=\"bg-gray-100 rounded-md flex items-start gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0 mt-0.5\"\n [class.opacity-30]=\"!addressLines.length\"\n [class.opacity-75]=\"!!addressLines.length\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n @if (addressLines.length) {\n <div class=\"flex flex-col\" data-test=\"contact-details-address\">\n @for (line of addressLines; track line) {\n <p class=\"text-sm m-0\">{{ line }}</p>\n }\n </div>\n }\n </div>\n\n <!-- Website: only shown when org exists; icon dimmed when absent -->\n @if (organization) {\n <div class=\"bg-gray-100 rounded-md flex items-center gap-2 px-3 py-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] shrink-0\"\n [class.opacity-30]=\"!organization.website\"\n [class.opacity-75]=\"!!organization.website\"\n name=\"matOpenInNew\"\n ></ng-icon>\n @if (organization.website) {\n <a\n [href]=\"organization.website.href\"\n target=\"_blank\"\n class=\"text-sm break-all hover:underline\"\n data-test=\"contact-details-website\"\n >{{ organization.website.href }}</a\n >\n }\n </div>\n }\n</div>\n" }]
|
|
34495
34557
|
}], propDecorators: { contact: [{
|
|
34496
34558
|
type: Input
|
|
34497
34559
|
}] } });
|
|
@@ -34536,11 +34598,11 @@ class ContactPillComponent {
|
|
|
34536
34598
|
this.overlayOpen = false;
|
|
34537
34599
|
}
|
|
34538
34600
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34539
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactPillComponent, isStandalone: true, selector: "gn-ui-contact-pill", inputs: { contact: "contact" }, ngImport: i0, template: "<gn-ui-button\n [type]=\"overlayOpen ? '
|
|
34601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: ContactPillComponent, isStandalone: true, selector: "gn-ui-contact-pill", inputs: { contact: "contact" }, ngImport: i0, template: "<gn-ui-button\n [type]=\"overlayOpen ? 'gray-light' : 'primary-light'\"\n extraClass=\"group w-full min-h-12 gap-3 justify-between py-2 pl-5 pr-4 rounded\"\n data-test=\"contact-pill\"\n (buttonClick)=\"toggleOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <span\n class=\"font-title font-medium text-base leading-tight truncate\"\n [class]=\"!overlayOpen ? 'text-primary-black group-hover:text-white' : ''\"\n [title]=\"displayName\"\n >{{ displayName }}</span\n >\n <div\n class=\"gn-ui-card-icon items-center justify-center w-10 h-8\"\n [class]=\"\n !overlayOpen ? 'group-hover:border-white group-hover:text-white' : ''\n \"\n >\n @if (overlayOpen) {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matClose\"></ng-icon>\n } @else {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matInfoOutline\"></ng-icon>\n }\n </div>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOffsetX]=\"overlayOffsetX\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div [style.width.px]=\"overlayWidth\">\n <gn-ui-contact-details [contact]=\"contact\"></gn-ui-contact-details>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ContactDetailsComponent, selector: "gn-ui-contact-details", inputs: ["contact"] }], viewProviders: [provideIcons({ matClose, matInfoOutline })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34540
34602
|
}
|
|
34541
34603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, decorators: [{
|
|
34542
34604
|
type: Component,
|
|
34543
|
-
args: [{ selector: 'gn-ui-contact-pill', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, ButtonComponent, OverlayModule, ContactDetailsComponent], viewProviders: [provideIcons({ matClose, matInfoOutline })], template: "<gn-ui-button\n [type]=\"overlayOpen ? '
|
|
34605
|
+
args: [{ selector: 'gn-ui-contact-pill', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, ButtonComponent, OverlayModule, ContactDetailsComponent], viewProviders: [provideIcons({ matClose, matInfoOutline })], template: "<gn-ui-button\n [type]=\"overlayOpen ? 'gray-light' : 'primary-light'\"\n extraClass=\"group w-full min-h-12 gap-3 justify-between py-2 pl-5 pr-4 rounded\"\n data-test=\"contact-pill\"\n (buttonClick)=\"toggleOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <span\n class=\"font-title font-medium text-base leading-tight truncate\"\n [class]=\"!overlayOpen ? 'text-primary-black group-hover:text-white' : ''\"\n [title]=\"displayName\"\n >{{ displayName }}</span\n >\n <div\n class=\"gn-ui-card-icon items-center justify-center w-10 h-8\"\n [class]=\"\n !overlayOpen ? 'group-hover:border-white group-hover:text-white' : ''\n \"\n >\n @if (overlayOpen) {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matClose\"></ng-icon>\n } @else {\n <ng-icon class=\"!w-6 !h-6 !text-[24px]\" name=\"matInfoOutline\"></ng-icon>\n }\n </div>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOffsetX]=\"overlayOffsetX\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div [style.width.px]=\"overlayWidth\">\n <gn-ui-contact-details [contact]=\"contact\"></gn-ui-contact-details>\n </div>\n</ng-template>\n" }]
|
|
34544
34606
|
}], propDecorators: { contact: [{
|
|
34545
34607
|
type: Input
|
|
34546
34608
|
}] } });
|
|
@@ -34625,7 +34687,7 @@ class MetadataInfoComponent {
|
|
|
34625
34687
|
this.keyword.emit(keyword);
|
|
34626
34688
|
}
|
|
34627
34689
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34628
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded bg-gray-50 py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }, { kind: "component", type: ContactPillComponent, selector: "gn-ui-contact-pill", inputs: ["contact"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
|
|
34690
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }, { kind: "component", type: ContactPillComponent, selector: "gn-ui-contact-pill", inputs: ["contact"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [
|
|
34629
34691
|
provideIcons({
|
|
34630
34692
|
matOpenInNew,
|
|
34631
34693
|
matMailOutline: matMailOutline$1,
|
|
@@ -34654,7 +34716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34654
34716
|
matOpenInNew,
|
|
34655
34717
|
matMailOutline: matMailOutline$1,
|
|
34656
34718
|
}),
|
|
34657
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded bg-gray-50 py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
34719
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n @if (metadata.abstract) {\n <gn-ui-max-lines [maxLines]=\"6\" data-test=\"metadata-info-abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n\n @if (!fieldReady('keywords') || metadata.keywords?.length) {\n <p class=\"mt-6 mb-3 font-medium text-black text-sm\" translate>\n record.metadata.keywords\n </p>\n }\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n @if (metadata.keywords?.length) {\n <gn-ui-max-lines [maxLines]=\"7\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n @for (keyword of metadata.keywords; track keyword) {\n <gn-ui-button\n type=\"primary-light\"\n class=\"inline-block opacity-70\"\n extraClass=\"lowercase text-sm py-1 px-2\"\n (buttonClick)=\"onKeywordClick(keyword)\"\n >{{ keyword.label }}</gn-ui-button\n >\n }\n </div>\n </gn-ui-max-lines>\n }\n </gn-ui-content-ghost>\n</div>\n\n@if (\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n >\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n @for (license of licenses; track $index) {\n @if (license.url) {\n <div class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n } @else {\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n }\n }\n @if (legalConstraints.length) {\n <div class=\"mb-6\">\n @for (constraint of legalConstraints; track constraint) {\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n }\n </div>\n }\n @if (otherConstraints.length) {\n @for (constraint of otherConstraints; track constraint) {\n <div gnUiLinkify>\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n }\n }\n @if (!hasUsage) {\n <span class=\"noUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (metadata.contactsForResource?.length) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.resource.contacts' | translate\"\n data-test=\"contacts-panel\"\n >\n <div class=\"flex flex-col gap-1 pt-3 pb-4\">\n @for (group of contactGroups; track group.role) {\n <div class=\"flex flex-col gap-1 rounded py-4 px-2\">\n <p class=\"text-xs font-normal text-black\">\n {{ group.roleLabel | translate }}\n </p>\n <div class=\"grid gap-1 grid-cols-1 md:grid-cols-2\">\n @for (contact of group.contacts; track contact.email) {\n <gn-ui-contact-pill [contact]=\"contact\"></gn-ui-contact-pill>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n) {\n <gn-ui-expandable-panel\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n >\n @if (metadata.kind === 'dataset' && metadata.lineage) {\n <div\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n }\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n @if (metadata.resourceCreated) {\n <div data-test=\"details-panel-resource-created\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n }\n @if (metadata.resourcePublished) {\n <div data-test=\"details-panel-resource-published\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n }\n @if (metadata.resourceUpdated) {\n <div data-test=\"details-panel-resource-updated\">\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n }\n @if (metadata.kind === 'dataset' && metadata.updateFrequency) {\n <div data-test=\"details-panel-update-frequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n }\n @if (metadata.otherLanguages?.length) {\n <div data-test=\"details-panel-other-languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n @for (language of metadata.otherLanguages; track language) {\n <p class=\"text-primary font-medium other-languages\" translate>\n language.{{ language }}\n </p>\n }\n </div>\n </div>\n }\n @if (metadata.kind === 'dataset' && temporalExtent) {\n <div data-test=\"details-panel-temporal-extent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\n @if (temporalExtent.start && temporalExtent.end) {\n <p\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n }\n @if (temporalExtent.start && !temporalExtent.end) {\n <p translate [translateParams]=\"{ start: temporalExtent.start }\">\n record.metadata.temporalExtent.sinceDate\n </p>\n }\n @if (!temporalExtent.start && temporalExtent.end) {\n <p translate [translateParams]=\"{ end: temporalExtent.end }\">\n record.metadata.temporalExtent.untilDate\n </p>\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n@if (\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n >\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n </gn-ui-expandable-panel>\n}\n@if (metadata.landingPage) {\n <gn-ui-expandable-panel\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n >\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n @if (metadata.recordUpdated) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\n ></p>\n </div>\n }\n @if (metadata.landingPage) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{\n metadata.landingPage\n }}</span>\n </a>\n </p>\n </div>\n }\n @if (metadata.ownerOrganization) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n }\n @if (metadata.uniqueIdentifier) {\n <div>\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n }\n @if (metadata.topics?.length) {\n <div>\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n @for (topic of metadata.topics; track topic) {\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n >{{ topic }}</gn-ui-badge\n >\n }\n </div>\n </div>\n }\n </div>\n </gn-ui-expandable-panel>\n}\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
34658
34720
|
}], propDecorators: { metadata: [{
|
|
34659
34721
|
type: Input
|
|
34660
34722
|
}], incomplete: [{
|
|
@@ -40760,12 +40822,20 @@ class MapViewComponent {
|
|
|
40760
40822
|
layers: [],
|
|
40761
40823
|
view: null,
|
|
40762
40824
|
}), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
40825
|
+
// overlay the record's declared spatial extent on top of the data layers
|
|
40826
|
+
const extentLayer = this.mapUtils.getRecordExtentLayer(metadata);
|
|
40827
|
+
const layers = extentLayer
|
|
40828
|
+
? [...context.layers, extentLayer]
|
|
40829
|
+
: context.layers;
|
|
40830
|
+
// the view (initial zoom) is derived from the data layer or, as a
|
|
40831
|
+
// fallback, from the record extent — independently from the overlay above
|
|
40763
40832
|
if (context.view)
|
|
40764
|
-
return context;
|
|
40833
|
+
return { ...context, layers };
|
|
40765
40834
|
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
40766
40835
|
const view = extent ? { extent } : null;
|
|
40767
40836
|
return {
|
|
40768
40837
|
...context,
|
|
40838
|
+
layers,
|
|
40769
40839
|
view,
|
|
40770
40840
|
};
|
|
40771
40841
|
}), shareReplay$1(1));
|
|
@@ -41894,76 +41964,86 @@ const SPATIAL_SCOPES = [
|
|
|
41894
41964
|
},
|
|
41895
41965
|
];
|
|
41896
41966
|
/************************************************************
|
|
41897
|
-
***************
|
|
41967
|
+
*************** ISO TOPICS **************
|
|
41898
41968
|
************************************************************
|
|
41899
41969
|
*/
|
|
41900
|
-
|
|
41901
|
-
|
|
41970
|
+
// label keys mirror the ISO MD_TopicCategoryCode value for consistency
|
|
41971
|
+
// TODO: correctly handle code lists; for instance, this code list is specific to ISO 19139
|
|
41972
|
+
const ISO_TOPICS = [
|
|
41973
|
+
{ value: 'biota', label: marker('editor.record.form.topics.iso.biota') },
|
|
41902
41974
|
{
|
|
41903
41975
|
value: 'boundaries',
|
|
41904
|
-
label: 'editor.record.form.topics.
|
|
41976
|
+
label: marker('editor.record.form.topics.iso.boundaries'),
|
|
41905
41977
|
},
|
|
41906
41978
|
{
|
|
41907
41979
|
value: 'climatologyMeteorologyAtmosphere',
|
|
41908
|
-
label: 'editor.record.form.topics.
|
|
41980
|
+
label: marker('editor.record.form.topics.iso.climatologyMeteorologyAtmosphere'),
|
|
41981
|
+
},
|
|
41982
|
+
{
|
|
41983
|
+
value: 'economy',
|
|
41984
|
+
label: marker('editor.record.form.topics.iso.economy'),
|
|
41985
|
+
},
|
|
41986
|
+
{
|
|
41987
|
+
value: 'elevation',
|
|
41988
|
+
label: marker('editor.record.form.topics.iso.elevation'),
|
|
41909
41989
|
},
|
|
41910
|
-
{ value: 'economy', label: 'editor.record.form.topics.inspire.economy' },
|
|
41911
|
-
{ value: 'elevation', label: 'editor.record.form.topics.inspire.elevation' },
|
|
41912
41990
|
{
|
|
41913
41991
|
value: 'environment',
|
|
41914
|
-
label: 'editor.record.form.topics.
|
|
41992
|
+
label: marker('editor.record.form.topics.iso.environment'),
|
|
41993
|
+
},
|
|
41994
|
+
{
|
|
41995
|
+
value: 'farming',
|
|
41996
|
+
label: marker('editor.record.form.topics.iso.farming'),
|
|
41997
|
+
},
|
|
41998
|
+
{
|
|
41999
|
+
value: 'geoscientificInformation',
|
|
42000
|
+
label: marker('editor.record.form.topics.iso.geoscientificInformation'),
|
|
41915
42001
|
},
|
|
41916
|
-
{ value: 'farming', label: 'editor.record.form.topics.inspire.farming' },
|
|
41917
42002
|
{
|
|
41918
|
-
value: '
|
|
41919
|
-
label: 'editor.record.form.topics.
|
|
42003
|
+
value: 'health',
|
|
42004
|
+
label: marker('editor.record.form.topics.iso.health'),
|
|
41920
42005
|
},
|
|
41921
|
-
{ value: 'health', label: 'editor.record.form.topics.inspire.health' },
|
|
41922
42006
|
{
|
|
41923
42007
|
value: 'imageryBaseMapsEarthCover',
|
|
41924
|
-
label: 'editor.record.form.topics.
|
|
42008
|
+
label: marker('editor.record.form.topics.iso.imageryBaseMapsEarthCover'),
|
|
42009
|
+
},
|
|
42010
|
+
{
|
|
42011
|
+
value: 'inlandWaters',
|
|
42012
|
+
label: marker('editor.record.form.topics.iso.inlandWaters'),
|
|
41925
42013
|
},
|
|
41926
|
-
{ value: 'inlandWaters', label: 'editor.record.form.topics.inspire.waters' },
|
|
41927
42014
|
{
|
|
41928
42015
|
value: 'intelligenceMilitary',
|
|
41929
|
-
label: 'editor.record.form.topics.
|
|
42016
|
+
label: marker('editor.record.form.topics.iso.intelligenceMilitary'),
|
|
42017
|
+
},
|
|
42018
|
+
{
|
|
42019
|
+
value: 'location',
|
|
42020
|
+
label: marker('editor.record.form.topics.iso.location'),
|
|
42021
|
+
},
|
|
42022
|
+
{
|
|
42023
|
+
value: 'oceans',
|
|
42024
|
+
label: marker('editor.record.form.topics.iso.oceans'),
|
|
41930
42025
|
},
|
|
41931
|
-
{ value: 'Location', label: 'editor.record.form.topics.inspire.location' },
|
|
41932
|
-
{ value: 'Oceans', label: 'editor.record.form.topics.inspire.oceans' },
|
|
41933
42026
|
{
|
|
41934
42027
|
value: 'planningCadastre',
|
|
41935
|
-
label: 'editor.record.form.topics.
|
|
42028
|
+
label: marker('editor.record.form.topics.iso.planningCadastre'),
|
|
42029
|
+
},
|
|
42030
|
+
{
|
|
42031
|
+
value: 'society',
|
|
42032
|
+
label: marker('editor.record.form.topics.iso.society'),
|
|
42033
|
+
},
|
|
42034
|
+
{
|
|
42035
|
+
value: 'structure',
|
|
42036
|
+
label: marker('editor.record.form.topics.iso.structure'),
|
|
41936
42037
|
},
|
|
41937
|
-
{ value: 'Society', label: 'editor.record.form.topics.inspire.society' },
|
|
41938
|
-
{ value: 'Structure', label: 'editor.record.form.topics.inspire.structure' },
|
|
41939
42038
|
{
|
|
41940
|
-
value: '
|
|
41941
|
-
label: 'editor.record.form.topics.
|
|
42039
|
+
value: 'transportation',
|
|
42040
|
+
label: marker('editor.record.form.topics.iso.transportation'),
|
|
41942
42041
|
},
|
|
41943
42042
|
{
|
|
41944
42043
|
value: 'utilitiesCommunication',
|
|
41945
|
-
label: 'editor.record.form.topics.
|
|
42044
|
+
label: marker('editor.record.form.topics.iso.utilitiesCommunication'),
|
|
41946
42045
|
},
|
|
41947
42046
|
];
|
|
41948
|
-
marker('editor.record.form.topics.inspire.biota');
|
|
41949
|
-
marker('editor.record.form.topics.inspire.boundaries');
|
|
41950
|
-
marker('editor.record.form.topics.inspire.climatology');
|
|
41951
|
-
marker('editor.record.form.topics.inspire.economy');
|
|
41952
|
-
marker('editor.record.form.topics.inspire.elevation');
|
|
41953
|
-
marker('editor.record.form.topics.inspire.environnement');
|
|
41954
|
-
marker('editor.record.form.topics.inspire.farming');
|
|
41955
|
-
marker('editor.record.form.topics.inspire.geoscientific');
|
|
41956
|
-
marker('editor.record.form.topics.inspire.health');
|
|
41957
|
-
marker('editor.record.form.topics.inspire.imagery');
|
|
41958
|
-
marker('editor.record.form.topics.inspire.intelligence');
|
|
41959
|
-
marker('editor.record.form.topics.inspire.location');
|
|
41960
|
-
marker('editor.record.form.topics.inspire.oceans');
|
|
41961
|
-
marker('editor.record.form.topics.inspire.planning');
|
|
41962
|
-
marker('editor.record.form.topics.inspire.society');
|
|
41963
|
-
marker('editor.record.form.topics.inspire.structure');
|
|
41964
|
-
marker('editor.record.form.topics.inspire.transportation');
|
|
41965
|
-
marker('editor.record.form.topics.inspire.utilities');
|
|
41966
|
-
marker('editor.record.form.topics.inspire.waters');
|
|
41967
42047
|
|
|
41968
42048
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
41969
42049
|
const initialEditorState = {
|
|
@@ -42555,7 +42635,7 @@ class FieldFocusDirective {
|
|
|
42555
42635
|
this.gnUiFieldFocusGlowClass = 'gn-ui-field-focus-glow';
|
|
42556
42636
|
this.el = inject(ElementRef);
|
|
42557
42637
|
}
|
|
42558
|
-
focusField() {
|
|
42638
|
+
focusField(focusInnerTarget = true) {
|
|
42559
42639
|
setTimeout(() => {
|
|
42560
42640
|
const host = this.el.nativeElement;
|
|
42561
42641
|
const glowClass = this.gnUiFieldFocusGlowClass;
|
|
@@ -42564,6 +42644,9 @@ class FieldFocusDirective {
|
|
|
42564
42644
|
host.classList.add(glowClass);
|
|
42565
42645
|
host.addEventListener('animationend', () => host.classList.remove(glowClass), { once: true });
|
|
42566
42646
|
host.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
42647
|
+
if (!focusInnerTarget) {
|
|
42648
|
+
return;
|
|
42649
|
+
}
|
|
42567
42650
|
const target = host.querySelector('input, textarea, select, [contenteditable="true"]') ??
|
|
42568
42651
|
host.querySelector('button:not([disabled]), [tabindex]:not([tabindex="-1"])');
|
|
42569
42652
|
target?.focus({ preventScroll: true });
|
|
@@ -44095,10 +44178,9 @@ class FormFieldConstraintsShortcutsComponent {
|
|
|
44095
44178
|
});
|
|
44096
44179
|
const hideEmptyConstraints = (constraints$, model) => {
|
|
44097
44180
|
const isConstraintNotEmpty$ = constraints$.pipe(takeUntil(this.onDestroy$), map$2((c) => c.length > 0), distinctUntilChanged$1());
|
|
44098
|
-
combineLatest([
|
|
44099
|
-
|
|
44100
|
-
|
|
44101
|
-
]).subscribe(([isNotEmpty, anyToggleActivated]) => {
|
|
44181
|
+
combineLatest([isConstraintNotEmpty$, this.anyToggleActivated$])
|
|
44182
|
+
.pipe(takeUntil(this.onDestroy$))
|
|
44183
|
+
.subscribe(([isNotEmpty, anyToggleActivated]) => {
|
|
44102
44184
|
const visible = isNotEmpty && !anyToggleActivated;
|
|
44103
44185
|
this.editorFacade.setFieldVisibility({ model }, visible);
|
|
44104
44186
|
});
|
|
@@ -44328,7 +44410,7 @@ class FormFieldTopicsComponent {
|
|
|
44328
44410
|
this.translateService = inject(TranslateService);
|
|
44329
44411
|
this.topics = [];
|
|
44330
44412
|
this.valueChange = new EventEmitter();
|
|
44331
|
-
this.availableTopics =
|
|
44413
|
+
this.availableTopics = ISO_TOPICS.map((topic) => {
|
|
44332
44414
|
return {
|
|
44333
44415
|
label: this.translateService.instant(topic.label),
|
|
44334
44416
|
value: topic.value,
|
|
@@ -44433,7 +44515,7 @@ class FormFieldComponent {
|
|
|
44433
44515
|
}
|
|
44434
44516
|
}
|
|
44435
44517
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44436
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], hostDirectives: [{ directive: FieldFocusDirective }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n [value]=\"valueAsString\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n ></textarea>\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n [modelSpecifier]=\"modelSpecifier\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [":host{scroll-margin-top:90px}:host.gn-ui-field-focus-glow{position:relative}:host.gn-ui-field-focus-glow:after{content:\"\";position:absolute;inset:-8px;border-radius:8px;background-color:color-mix(in srgb,var(--color-primary) 12%,transparent);pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}:host.gn-ui-field-focus-glow:before{content:\"\";position:absolute;inset:-16px;border:2px dashed var(--color-primary);border-radius:10px;pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}@keyframes gn-ui-field-focus-glow{0%,55%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value", "modelSpecifier"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44518
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], hostDirectives: [{ directive: FieldFocusDirective }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n [value]=\"valueAsString\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n ></textarea>\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n [modelSpecifier]=\"modelSpecifier\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [":host{scroll-margin-top:90px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value", "modelSpecifier"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44437
44519
|
}
|
|
44438
44520
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
44439
44521
|
type: Component,
|
|
@@ -44460,7 +44542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
44460
44542
|
FormFieldSpatialToggleComponent,
|
|
44461
44543
|
FormFieldTopicsComponent,
|
|
44462
44544
|
TextFieldModule,
|
|
44463
|
-
], hostDirectives: [FieldFocusDirective], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n [value]=\"valueAsString\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n ></textarea>\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n [modelSpecifier]=\"modelSpecifier\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [":host{scroll-margin-top:90px}
|
|
44545
|
+
], hostDirectives: [FieldFocusDirective], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n [value]=\"valueAsString\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n ></textarea>\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n [modelSpecifier]=\"modelSpecifier\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [":host{scroll-margin-top:90px}\n"] }]
|
|
44464
44546
|
}], propDecorators: { uniqueIdentifier: [{
|
|
44465
44547
|
type: Input
|
|
44466
44548
|
}], model: [{
|
|
@@ -44485,22 +44567,29 @@ class RecordFormComponent {
|
|
|
44485
44567
|
this.facade = inject(EditorFacade);
|
|
44486
44568
|
this.subscription = new Subscription();
|
|
44487
44569
|
this.recordUniqueIdentifier$ = this.facade.record$.pipe(map$2((record) => record.uniqueIdentifier));
|
|
44488
|
-
this.focusFieldWithPage$ = this.facade.focusedField$.pipe(switchMap$1(async (field) =>
|
|
44570
|
+
this.focusFieldWithPage$ = this.facade.focusedField$.pipe(switchMap$1(async (field) => {
|
|
44571
|
+
const location = await this.getFieldLocation(field);
|
|
44572
|
+
return [field, location?.page ?? null, location?.section ?? -1];
|
|
44573
|
+
}));
|
|
44489
44574
|
this.formFields = viewChildren(FormFieldComponent, ...(ngDevMode ? [{ debugName: "formFields" }] : []));
|
|
44575
|
+
this.sectionFocusDirectives = viewChildren('sectionFocus', ...(ngDevMode ? [{ debugName: "sectionFocusDirectives" }] : []));
|
|
44490
44576
|
}
|
|
44491
|
-
focusField(model) {
|
|
44492
|
-
const
|
|
44493
|
-
|
|
44494
|
-
|
|
44577
|
+
focusField(model, sectionIndex) {
|
|
44578
|
+
const field = this.formFields().find((f) => f.model === model);
|
|
44579
|
+
if (field) {
|
|
44580
|
+
field.fieldFocus.focusField();
|
|
44581
|
+
return;
|
|
44582
|
+
}
|
|
44583
|
+
this.sectionFocusDirectives()[sectionIndex]?.focusField(false);
|
|
44495
44584
|
}
|
|
44496
44585
|
ngOnInit() {
|
|
44497
44586
|
this.subscription.add(this.focusFieldWithPage$
|
|
44498
|
-
.pipe(withLatestFrom$1(this.facade.currentPage$, ([field, fieldPage], currentPage) => [field, fieldPage, currentPage]))
|
|
44499
|
-
.subscribe(([field, fieldPage, currentPage]) => {
|
|
44587
|
+
.pipe(withLatestFrom$1(this.facade.currentPage$, ([field, fieldPage, fieldSection], currentPage) => [field, fieldPage, fieldSection, currentPage]))
|
|
44588
|
+
.subscribe(([field, fieldPage, fieldSection, currentPage]) => {
|
|
44500
44589
|
if (fieldPage !== null && fieldPage !== currentPage) {
|
|
44501
44590
|
this.facade.setCurrentPage(fieldPage);
|
|
44502
44591
|
}
|
|
44503
|
-
setTimeout(() => this.focusField(field));
|
|
44592
|
+
setTimeout(() => this.focusField(field, fieldSection));
|
|
44504
44593
|
}));
|
|
44505
44594
|
}
|
|
44506
44595
|
ngOnDestroy() {
|
|
@@ -44518,18 +44607,29 @@ class RecordFormComponent {
|
|
|
44518
44607
|
sectionTracker(index, section) {
|
|
44519
44608
|
return section.labelKey;
|
|
44520
44609
|
}
|
|
44521
|
-
async
|
|
44610
|
+
async getFieldLocation(model) {
|
|
44522
44611
|
const config = await firstValueFrom(this.facade.editorConfig$);
|
|
44523
|
-
const
|
|
44524
|
-
|
|
44612
|
+
const page = config.pages.findIndex((p) => p.sections.some((s) => s.fields.some((f) => f.model === model)));
|
|
44613
|
+
if (page < 0) {
|
|
44614
|
+
return null;
|
|
44615
|
+
}
|
|
44616
|
+
const section = config.pages[page].sections
|
|
44617
|
+
.filter((s) => !s.hidden)
|
|
44618
|
+
.findIndex((s) => s.fields.some((f) => f.model === model));
|
|
44619
|
+
return { page, section };
|
|
44525
44620
|
}
|
|
44526
44621
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44527
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", viewQueries: [{ propertyName: "formFields", predicate: FormFieldComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n @for (\n section of facade.currentSections$ | async;\n track sectionTracker($index, section)\n ) {\n @if (!section.hidden) {\n <div
|
|
44622
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", viewQueries: [{ propertyName: "formFields", predicate: FormFieldComponent, descendants: true, isSignal: true }, { propertyName: "sectionFocusDirectives", predicate: ["sectionFocus"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n @for (\n section of facade.currentSections$ | async;\n track sectionTracker($index, section)\n ) {\n @if (!section.hidden) {\n <div\n class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow scroll-mt-[90px]\"\n gnUiFieldFocus\n #sectionFocus=\"fieldFocus\"\n >\n <div class=\"flex flex-col gap-2\">\n @if (section.labelKey) {\n <div class=\"text-2xl font-title text-black\" translate>\n {{ section.labelKey }}\n </div>\n }\n @if (section.descriptionKey) {\n <div class=\"text-gray-800 text-sm\" translate>\n {{ section.descriptionKey }}\n </div>\n }\n </div>\n <div class=\"grid auto-rows-auto grid-cols-2 gap-[32px]\">\n @for (\n field of section.fieldsWithValues;\n track fieldTracker($index, field)\n ) {\n @if (!field.config.hidden) {\n <gn-ui-form-field\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n }\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".gn-ui-field-focus-glow{position:relative}.gn-ui-field-focus-glow:after{content:\"\";position:absolute;inset:-8px;border-radius:8px;background-color:color-mix(in srgb,var(--color-primary) 12%,transparent);pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}.gn-ui-field-focus-glow:before{content:\"\";position:absolute;inset:-16px;border:2px dashed var(--color-primary);border-radius:10px;pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}@keyframes gn-ui-field-focus-glow{0%,55%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["uniqueIdentifier", "model", "modelSpecifier", "componentName", "config", "value"], outputs: ["valueChange"] }, { kind: "directive", type: FieldFocusDirective, selector: "[gnUiFieldFocus]", inputs: ["gnUiFieldFocusGlowClass"], exportAs: ["fieldFocus"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44528
44623
|
}
|
|
44529
44624
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
44530
44625
|
type: Component,
|
|
44531
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
44532
|
-
|
|
44626
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
44627
|
+
CommonModule,
|
|
44628
|
+
FormFieldComponent,
|
|
44629
|
+
FieldFocusDirective,
|
|
44630
|
+
TranslateDirective,
|
|
44631
|
+
], template: "<div class=\"flex flex-col gap-6\">\n @for (\n section of facade.currentSections$ | async;\n track sectionTracker($index, section)\n ) {\n @if (!section.hidden) {\n <div\n class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow scroll-mt-[90px]\"\n gnUiFieldFocus\n #sectionFocus=\"fieldFocus\"\n >\n <div class=\"flex flex-col gap-2\">\n @if (section.labelKey) {\n <div class=\"text-2xl font-title text-black\" translate>\n {{ section.labelKey }}\n </div>\n }\n @if (section.descriptionKey) {\n <div class=\"text-gray-800 text-sm\" translate>\n {{ section.descriptionKey }}\n </div>\n }\n </div>\n <div class=\"grid auto-rows-auto grid-cols-2 gap-[32px]\">\n @for (\n field of section.fieldsWithValues;\n track fieldTracker($index, field)\n ) {\n @if (!field.config.hidden) {\n <gn-ui-form-field\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n }\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: [".gn-ui-field-focus-glow{position:relative}.gn-ui-field-focus-glow:after{content:\"\";position:absolute;inset:-8px;border-radius:8px;background-color:color-mix(in srgb,var(--color-primary) 12%,transparent);pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}.gn-ui-field-focus-glow:before{content:\"\";position:absolute;inset:-16px;border:2px dashed var(--color-primary);border-radius:10px;pointer-events:none;animation:gn-ui-field-focus-glow 3s ease-out forwards}@keyframes gn-ui-field-focus-glow{0%,55%{opacity:1}to{opacity:0}}\n"] }]
|
|
44632
|
+
}], propDecorators: { formFields: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => FormFieldComponent), { isSignal: true }] }], sectionFocusDirectives: [{ type: i0.ViewChildren, args: ['sectionFocus', { isSignal: true }] }] } });
|
|
44533
44633
|
|
|
44534
44634
|
function evaluate(expression) {
|
|
44535
44635
|
if (expression.match(/^\${.*}$/)) {
|
|
@@ -45149,5 +45249,5 @@ const CHART_TYPE_VALUES = [
|
|
|
45149
45249
|
* Generated bundle index. Do not edit.
|
|
45150
45250
|
*/
|
|
45151
45251
|
|
|
45152
|
-
export { ABOUT_SECTION, ADD_RESULTS, ADD_SEARCH, ANNEXES_SECTION, ASSOCIATED_RESOURCES_SECTION, AVAILABLE_LICENSES, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CHART_TYPE_VALUES, CLASSIFICATION_SECTION, CLEAR_ERROR, CLEAR_RESULTS, CONSTRAINTS_SHORTCUTS, CONTACTS, CONTACTS_FOR_RESOURCE_FIELD, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContactDetailsComponent, ContactPillComponent, ContentGhostComponent, CopyTextButtonComponent, DATA_MANAGERS_SECTION, DEFAULT_CONFIGURATION, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RECORD_CONVERTER, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DISABLE_DRAFT, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldFocusDirective, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEOGRAPHICAL_COVERAGE_SECTION, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, INSPIRE_TOPICS, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LEGAL_CONSTRAINTS_FIELD, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, MAX_UPLOAD_SIZE_MB, METADATA_LANGUAGE, METADATA_POINT_OF_CONTACT_SECTION, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, OPEN_DATA_LICENSE, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OTHER_CONSTRAINTS_FIELD, OnlineResourceCardComponent, OnlineServiceResourceInputComponent, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_ABSTRACT_FIELD, RECORD_DATASET_URL_TOKEN, RECORD_GRAPHICAL_OVERVIEW_FIELD, RECORD_KEYWORDS_FIELD, RECORD_LICENSE_FIELD, RECORD_ONLINE_LINK_RESOURCES, RECORD_ONLINE_RESOURCES, RECORD_RESOURCE_CREATED_FIELD, RECORD_RESOURCE_UPDATED_FIELD, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, RECORD_SPATIAL_EXTENTS_FIELD, RECORD_SPATIAL_TOGGLE_FIELD, RECORD_TEMPORAL_EXTENTS_FIELD, RECORD_TITLE_FIELD, RECORD_TOPICS_FIELD, RECORD_UNIQUE_IDENTIFIER_FIELD, RECORD_UPDATED_FIELD, RECORD_UPDATE_FREQUENCY_FIELD, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESOURCE_IDENTIFIER_FIELD, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordStatusValues, RecordsMetricsComponent, RecordsRepositoryInterface, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, ReusePresentationForms, RoleLabels, RoleValues, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SECURITY_CONSTRAINTS_FIELD, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SPATIAL_SCOPES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortByEnum, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TITLE_SECTION, TOPICS_SECTION, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, USE_AND_ACCESS_CONDITIONS_SECTION, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAddressLines, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIndividualDisplayName, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalEditorConfig, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReusePresentationForm, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setEditorConfiguration, setFieldVisibility, setFocusedField, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toIndividual, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateFrequencyCodeValues, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
45252
|
+
export { ABOUT_SECTION, ADD_RESULTS, ADD_SEARCH, ANNEXES_SECTION, ASSOCIATED_RESOURCES_SECTION, AVAILABLE_LICENSES, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CHART_TYPE_VALUES, CLASSIFICATION_SECTION, CLEAR_ERROR, CLEAR_RESULTS, CONSTRAINTS_SHORTCUTS, CONTACTS, CONTACTS_FOR_RESOURCE_FIELD, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContactDetailsComponent, ContactPillComponent, ContentGhostComponent, CopyTextButtonComponent, DATA_MANAGERS_SECTION, DEFAULT_CONFIGURATION, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RECORD_CONVERTER, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_SPATIAL_EXTENT_STYLE, DISABLE_AUTH, DISABLE_DRAFT, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldFocusDirective, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEOGRAPHICAL_COVERAGE_SECTION, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ISO_TOPICS, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LEGAL_CONSTRAINTS_FIELD, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, MAX_UPLOAD_SIZE_MB, METADATA_LANGUAGE, METADATA_POINT_OF_CONTACT_SECTION, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, OPEN_DATA_LICENSE, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OTHER_CONSTRAINTS_FIELD, OnlineResourceCardComponent, OnlineServiceResourceInputComponent, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_ABSTRACT_FIELD, RECORD_DATASET_URL_TOKEN, RECORD_GRAPHICAL_OVERVIEW_FIELD, RECORD_KEYWORDS_FIELD, RECORD_LICENSE_FIELD, RECORD_ONLINE_LINK_RESOURCES, RECORD_ONLINE_RESOURCES, RECORD_RESOURCE_CREATED_FIELD, RECORD_RESOURCE_UPDATED_FIELD, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, RECORD_SPATIAL_EXTENTS_FIELD, RECORD_SPATIAL_TOGGLE_FIELD, RECORD_TEMPORAL_EXTENTS_FIELD, RECORD_TITLE_FIELD, RECORD_TOPICS_FIELD, RECORD_UNIQUE_IDENTIFIER_FIELD, RECORD_UPDATED_FIELD, RECORD_UPDATE_FREQUENCY_FIELD, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESOURCE_IDENTIFIER_FIELD, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordStatusValues, RecordsMetricsComponent, RecordsRepositoryInterface, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, ReusePresentationForms, RoleLabels, RoleValues, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SECURITY_CONSTRAINTS_FIELD, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SPATIAL_SCOPES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortByEnum, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TITLE_SECTION, TOPICS_SECTION, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, USE_AND_ACCESS_CONDITIONS_SECTION, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, bboxToPolygon, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, createSpatialExtentLayer, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAddressLines, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIndividualDisplayName, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalEditorConfig, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReusePresentationForm, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setEditorConfiguration, setFieldVisibility, setFocusedField, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, spatialExtentToGeometry, spatialExtentsToFeatureCollection, stripHtml, stripNamespace, tableItemsFixture, toDate, toIndividual, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateFrequencyCodeValues, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
45153
45253
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|