geonetwork-ui 2.10.0-dev.0d752aeb4 → 2.10.0-dev.0d851f690
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 +286 -52
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +44 -6
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +9 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +2 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.reuse+ongules.ts +7 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.reuse+roilaye.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +2 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +2 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +8 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +7 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +8 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +8 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +11 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +33 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +33 -0
- package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +5 -0
- package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.html +67 -0
- package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.ts +39 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/field-focus.directive.ts +38 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +9 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +12 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +37 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -3
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +0 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +27 -25
- package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +4 -0
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/contact-details/contact-details.component.html +96 -0
- package/src/libs/ui/elements/src/lib/contact-details/contact-details.component.ts +45 -0
- package/src/libs/ui/elements/src/lib/contact-pill/contact-pill.component.html +23 -2
- package/src/libs/ui/elements/src/lib/contact-pill/contact-pill.component.ts +51 -7
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -5
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +2 -2
- package/src/libs/util/shared/src/lib/utils/user-display.ts +9 -0
- package/translations/de.json +8 -1
- package/translations/en.json +8 -1
- package/translations/es.json +8 -1
- package/translations/fr.json +8 -1
- package/translations/it.json +8 -1
- package/translations/nl.json +8 -1
- package/translations/pt.json +8 -1
- package/translations/sk.json +8 -1
|
@@ -7,7 +7,7 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, inject, Injectable, NgModule, Injector, APP_INITIALIZER, makeEnvironmentProviders, ElementRef, HostListener, Input, Directive, Renderer2, DestroyRef, EventEmitter, Output, ViewChild, ChangeDetectionStrategy, Component, ViewEncapsulation, ChangeDetectorRef, HostBinding, ViewContainerRef, TemplateRef, ViewChildren, ContentChild, ContentChildren, NgZone, ComponentFactoryResolver, afterNextRender } from '@angular/core';
|
|
10
|
+
import { InjectionToken, inject, Injectable, NgModule, Injector, APP_INITIALIZER, makeEnvironmentProviders, ElementRef, HostListener, Input, Directive, Renderer2, DestroyRef, EventEmitter, Output, ViewChild, ChangeDetectionStrategy, Component, ViewEncapsulation, ChangeDetectorRef, HostBinding, ViewContainerRef, TemplateRef, ViewChildren, ContentChild, ContentChildren, NgZone, ComponentFactoryResolver, afterNextRender, viewChildren } from '@angular/core';
|
|
11
11
|
import { HttpClient, HttpHeaders, HttpParams, HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi, HttpEventType } from '@angular/common/http';
|
|
12
12
|
import * as i4 from '@ngx-translate/core';
|
|
13
13
|
import { TranslateLoader, TranslateCompiler, TranslateDefaultParser, TranslateParser, TranslateService, provideTranslateService, TranslateDirective, TranslatePipe, TranslateModule } from '@ngx-translate/core';
|
|
@@ -97,7 +97,7 @@ import { tablerFolderOpen } from '@ng-icons/tabler-icons';
|
|
|
97
97
|
import * as i3$1 from '@angular/material/radio';
|
|
98
98
|
import { MatRadioModule } from '@angular/material/radio';
|
|
99
99
|
import { MatIconModule } from '@angular/material/icon';
|
|
100
|
-
import * as
|
|
100
|
+
import * as i4$1 from '@angular/cdk/text-field';
|
|
101
101
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
102
102
|
import * as i2$5 from '@ngrx/router-store';
|
|
103
103
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
@@ -1467,6 +1467,25 @@ function readOverviews(rootEl) {
|
|
|
1467
1467
|
function readLineage$1(rootEl, translations) {
|
|
1468
1468
|
return pipe(findNestedElement('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), extractLocalizedCharacterString('lineage', translations), map(([lineage]) => lineage))(rootEl);
|
|
1469
1469
|
}
|
|
1470
|
+
function extractSourceRecords(liLineageEl) {
|
|
1471
|
+
if (!liLineageEl)
|
|
1472
|
+
return [];
|
|
1473
|
+
return pipe(findChildrenElement('gmd:source', false), mapArray((el) => {
|
|
1474
|
+
const uuid = readAttribute('uuidref')(el);
|
|
1475
|
+
const title = readAttribute('xlink:title')(el);
|
|
1476
|
+
const href = readAttribute('xlink:href')(el);
|
|
1477
|
+
if (!uuid && !title && !href)
|
|
1478
|
+
return null;
|
|
1479
|
+
return {
|
|
1480
|
+
...(uuid ? { uuid } : {}),
|
|
1481
|
+
...(title ? { title } : {}),
|
|
1482
|
+
...(href ? { href } : {}),
|
|
1483
|
+
};
|
|
1484
|
+
}), filterArray((s) => s !== null))(liLineageEl);
|
|
1485
|
+
}
|
|
1486
|
+
function readSourceRecords$1(rootEl) {
|
|
1487
|
+
return extractSourceRecords(pipe(findNestedElement('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage'))(rootEl));
|
|
1488
|
+
}
|
|
1470
1489
|
function readUpdateFrequency(rootEl) {
|
|
1471
1490
|
return pipe(findIdentification(), findNestedElement('gmd:resourceMaintenance', 'gmd:MD_MaintenanceInformation'), extractUpdateFrequency(), map((updateFrequency) => updateFrequency || 'unknown'))(rootEl);
|
|
1472
1491
|
}
|
|
@@ -1999,6 +2018,14 @@ function writeGraphicOverviews(record, rootEl) {
|
|
|
1999
2018
|
function writeLineage$1(record, rootEl) {
|
|
2000
2019
|
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage', 'gmd:statement'), writeLocalizedCharacterString(record.lineage, record.translations?.lineage, record.defaultLanguage))(rootEl);
|
|
2001
2020
|
}
|
|
2021
|
+
function appendSourceRecords(sources) {
|
|
2022
|
+
return pipe(removeChildrenByName('gmd:source'), appendChildren(...sources
|
|
2023
|
+
.filter((source) => source.uuid || source.title || source.href)
|
|
2024
|
+
.map((source) => pipe(createElement('gmd:source'), source.uuid ? writeAttribute('uuidref', source.uuid) : noop, source.title ? writeAttribute('xlink:title', source.title) : noop, source.href ? writeAttribute('xlink:href', source.href) : noop))));
|
|
2025
|
+
}
|
|
2026
|
+
function writeSourceRecords$1(record, rootEl) {
|
|
2027
|
+
pipe(findNestedChildOrCreate('gmd:dataQualityInfo', 'gmd:DQ_DataQuality', 'gmd:lineage', 'gmd:LI_Lineage'), appendSourceRecords(record.sourceRecords))(rootEl);
|
|
2028
|
+
}
|
|
2002
2029
|
function getServiceEndpointProtocol(endpoint) {
|
|
2003
2030
|
switch (endpoint.accessServiceProtocol.toLowerCase()) {
|
|
2004
2031
|
case 'wfs':
|
|
@@ -2125,6 +2152,7 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2125
2152
|
spatialRepresentation: readSpatialRepresentation,
|
|
2126
2153
|
overviews: readOverviews,
|
|
2127
2154
|
lineage: readLineage$1,
|
|
2155
|
+
sourceRecords: readSourceRecords$1,
|
|
2128
2156
|
onlineResources: readOnlineResources$2,
|
|
2129
2157
|
temporalExtents: readTemporalExtents,
|
|
2130
2158
|
spatialExtents: readSpatialExtents$1,
|
|
@@ -2162,6 +2190,7 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2162
2190
|
spatialRepresentation: writeSpatialRepresentation$1,
|
|
2163
2191
|
overviews: writeGraphicOverviews,
|
|
2164
2192
|
lineage: writeLineage$1,
|
|
2193
|
+
sourceRecords: writeSourceRecords$1,
|
|
2165
2194
|
onlineResources: writeOnlineResources$1,
|
|
2166
2195
|
temporalExtents: writeTemporalExtents,
|
|
2167
2196
|
spatialExtents: writeSpatialExtents,
|
|
@@ -2285,12 +2314,14 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2285
2314
|
const spatialRepresentation = this.readers['spatialRepresentation'](rootEl, tr);
|
|
2286
2315
|
const temporalExtents = this.readers['temporalExtents'](rootEl, tr);
|
|
2287
2316
|
const lineage = this.readers['lineage'](rootEl, tr);
|
|
2317
|
+
const sourceRecords = this.readers['sourceRecords'](rootEl, tr);
|
|
2288
2318
|
const updateFrequency = this.readers['updateFrequency'](rootEl, tr);
|
|
2289
2319
|
return this.afterRecordRead({
|
|
2290
2320
|
...this.readBaseRecord(rootEl, tr),
|
|
2291
2321
|
kind,
|
|
2292
2322
|
status,
|
|
2293
2323
|
lineage,
|
|
2324
|
+
...(sourceRecords && { sourceRecords }),
|
|
2294
2325
|
...(spatialRepresentation && { spatialRepresentation }),
|
|
2295
2326
|
temporalExtents,
|
|
2296
2327
|
updateFrequency,
|
|
@@ -2299,12 +2330,14 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2299
2330
|
}
|
|
2300
2331
|
else if (kind === 'reuse') {
|
|
2301
2332
|
const lineage = this.readers['lineage'](rootEl, tr);
|
|
2333
|
+
const sourceRecords = this.readers['sourceRecords'](rootEl, tr);
|
|
2302
2334
|
const temporalExtents = this.readers['temporalExtents'](rootEl, tr);
|
|
2303
2335
|
const reuseType = this.readers['reuseType'](rootEl, tr);
|
|
2304
2336
|
return this.afterRecordRead({
|
|
2305
2337
|
...this.readBaseRecord(rootEl, tr),
|
|
2306
2338
|
kind,
|
|
2307
2339
|
lineage,
|
|
2340
|
+
...(sourceRecords && { sourceRecords }),
|
|
2308
2341
|
temporalExtents,
|
|
2309
2342
|
reuseType,
|
|
2310
2343
|
});
|
|
@@ -2390,6 +2423,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2390
2423
|
this.writers['spatialExtents'](record, rootEl);
|
|
2391
2424
|
(fieldChanged('lineage') || fieldChanged('translations')) &&
|
|
2392
2425
|
this.writers['lineage'](record, rootEl);
|
|
2426
|
+
fieldChanged('sourceRecords') &&
|
|
2427
|
+
this.writers['sourceRecords'](record, rootEl);
|
|
2393
2428
|
}
|
|
2394
2429
|
fieldChanged('otherLanguages') &&
|
|
2395
2430
|
this.writers['otherLanguages'](record, rootEl);
|
|
@@ -2496,6 +2531,9 @@ function readLandingPage$1(rootEl) {
|
|
|
2496
2531
|
function readLineage(rootEl, translations) {
|
|
2497
2532
|
return pipe(findNestedElement('mdb:resourceLineage', 'mrl:LI_Lineage', 'mrl:statement'), extractLocalizedCharacterString('lineage', translations), map(([lineage]) => lineage))(rootEl);
|
|
2498
2533
|
}
|
|
2534
|
+
function readSourceRecords(rootEl) {
|
|
2535
|
+
return extractSourceRecords(pipe(findNestedElement('mdb:resourceLineage', 'mrl:LI_Lineage'))(rootEl));
|
|
2536
|
+
}
|
|
2499
2537
|
function extractDateInfo(type) {
|
|
2500
2538
|
return pipe(findChildrenElement('mdb:dateInfo', false), filterArray((el) => pipe(findChildElement('cit:CI_DateTypeCode'), readAttribute('codeListValue'))(el) === type), getAtIndex(0), findChildElement('cit:date'), extractDateTime());
|
|
2501
2539
|
}
|
|
@@ -2680,6 +2718,9 @@ function writeOtherLanguages(record, rootEl) {
|
|
|
2680
2718
|
}
|
|
2681
2719
|
appendChildren(...record.otherLanguages.map((lang) => pipe(createElement('mdb:otherLocale'), writeLocaleElement(lang))))(rootEl);
|
|
2682
2720
|
}
|
|
2721
|
+
function writeSourceRecords(record, rootEl) {
|
|
2722
|
+
pipe(findNestedChildOrCreate('mdb:resourceLineage', 'mrl:LI_Lineage'), appendSourceRecords(record.sourceRecords))(rootEl);
|
|
2723
|
+
}
|
|
2683
2724
|
|
|
2684
2725
|
class Iso191153Converter extends Iso19139Converter {
|
|
2685
2726
|
constructor() {
|
|
@@ -2694,6 +2735,7 @@ class Iso191153Converter extends Iso19139Converter {
|
|
|
2694
2735
|
this.readers['ownerOrganization'] = readOwnerOrganization$1;
|
|
2695
2736
|
this.readers['landingPage'] = readLandingPage$1;
|
|
2696
2737
|
this.readers['lineage'] = readLineage;
|
|
2738
|
+
this.readers['sourceRecords'] = readSourceRecords;
|
|
2697
2739
|
this.readers['onlineResources'] = readOnlineResources$1;
|
|
2698
2740
|
this.readers['defaultLanguage'] = readDefaultLanguage$1;
|
|
2699
2741
|
this.readers['otherLanguages'] = readOtherLanguages;
|
|
@@ -2712,6 +2754,7 @@ class Iso191153Converter extends Iso19139Converter {
|
|
|
2712
2754
|
this.writers['ownerOrganization'] = () => undefined; // fixme: find a way to store this value properly
|
|
2713
2755
|
this.writers['landingPage'] = writeLandingPage;
|
|
2714
2756
|
this.writers['lineage'] = writeLineage;
|
|
2757
|
+
this.writers['sourceRecords'] = writeSourceRecords;
|
|
2715
2758
|
this.writers['onlineResources'] = writeOnlineResources;
|
|
2716
2759
|
this.writers['status'] = writeStatus;
|
|
2717
2760
|
this.writers['spatialRepresentation'] = writeSpatialRepresentation;
|
|
@@ -2794,6 +2837,8 @@ class Iso191153Converter extends Iso19139Converter {
|
|
|
2794
2837
|
'gmd:MD_BrowseGraphic': 'mcc:MD_BrowseGraphic',
|
|
2795
2838
|
'gmd:fileName': 'mcc:fileName',
|
|
2796
2839
|
'gmd:fileDescription': 'mcc:fileDescription',
|
|
2840
|
+
// lineage sources
|
|
2841
|
+
'gmd:source': 'mrl:source',
|
|
2797
2842
|
// no more URL elements
|
|
2798
2843
|
'gmd:URL': 'gco:CharacterString',
|
|
2799
2844
|
});
|
|
@@ -3344,6 +3389,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3344
3389
|
updateFrequency: () => 'unknown',
|
|
3345
3390
|
overviews: () => [],
|
|
3346
3391
|
lineage: () => '',
|
|
3392
|
+
sourceRecords: () => [],
|
|
3347
3393
|
temporalExtents: () => [],
|
|
3348
3394
|
spatialRepresentation: () => undefined,
|
|
3349
3395
|
extras: () => undefined,
|
|
@@ -3377,6 +3423,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3377
3423
|
spatialRepresentation: () => undefined,
|
|
3378
3424
|
overviews: () => undefined,
|
|
3379
3425
|
lineage: () => undefined,
|
|
3426
|
+
sourceRecords: () => [],
|
|
3380
3427
|
onlineResources: () => undefined,
|
|
3381
3428
|
temporalExtents: () => undefined,
|
|
3382
3429
|
spatialExtents: () => undefined,
|
|
@@ -3422,6 +3469,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3422
3469
|
const spatialExtents = this.readers['spatialExtents'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3423
3470
|
const temporalExtents = this.readers['temporalExtents'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3424
3471
|
const lineage = this.readers['lineage'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3472
|
+
const sourceRecords = this.readers['sourceRecords'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3425
3473
|
const onlineResources = this.readers['onlineResources'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3426
3474
|
const updateFrequency = this.readers['updateFrequency'](dataStore, catalogRecord, tr, defaultLanguage);
|
|
3427
3475
|
return {
|
|
@@ -3448,6 +3496,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3448
3496
|
securityConstraints,
|
|
3449
3497
|
otherConstraints,
|
|
3450
3498
|
lineage,
|
|
3499
|
+
sourceRecords,
|
|
3451
3500
|
...(spatialRepresentation && { spatialRepresentation }),
|
|
3452
3501
|
overviews,
|
|
3453
3502
|
spatialExtents,
|
|
@@ -18737,6 +18786,14 @@ var de = {
|
|
|
18737
18786
|
"editor.record.form.draft.updateAlert": "Seit der Erstellung dieses Entwurfs wurde dieser Datensatz am { date } von { user } geändert. Durch das Veröffentlichen Ihrer Version können dessen Änderungen gelöscht werden. Um dies zu vermeiden, können Sie Ihre Änderungen rückgängig machen oder Ihre Version in voller Kenntnis der Sachlage veröffentlichen.",
|
|
18738
18787
|
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
18739
18788
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
18789
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
18790
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
18791
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
18792
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
18793
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
18794
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
18795
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
18796
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
18740
18797
|
"editor.record.form.field.contacts": "Ansprechpartner - Email",
|
|
18741
18798
|
"editor.record.form.field.contacts.noContact": "Bitte geben Sie mindestens einen Ansprechpartner an.",
|
|
18742
18799
|
"editor.record.form.field.contacts.placeholder": "Kontakt auswählen",
|
|
@@ -19082,7 +19139,6 @@ var de = {
|
|
|
19082
19139
|
"record.metadata.preview.config.idle": "Standardvorschau festlegen",
|
|
19083
19140
|
"record.metadata.preview.config.saved": "Gespeichert!",
|
|
19084
19141
|
"record.metadata.preview.config.saving": "Speichern...",
|
|
19085
|
-
"record.metadata.producer": "Datenproduzent",
|
|
19086
19142
|
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
19087
19143
|
"record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
|
|
19088
19144
|
"record.metadata.quality": "Metadatenqualität",
|
|
@@ -19413,6 +19469,14 @@ var en = {
|
|
|
19413
19469
|
"editor.record.form.draft.updateAlert": "Since you created this draft, the dataset has been updated on { date } by { user }. Publishing your draft might erase their edits. To avoid this, you need to either cancel your changes or knowingly publish your own version.",
|
|
19414
19470
|
"editor.record.form.field.abstract": "Abstract",
|
|
19415
19471
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
19472
|
+
"editor.record.form.field.contactDetails.email": "Contact email",
|
|
19473
|
+
"editor.record.form.field.contactDetails.email.placeholder": "example@domainname.com",
|
|
19474
|
+
"editor.record.form.field.contactDetails.firstName": "Contact first name",
|
|
19475
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "First name",
|
|
19476
|
+
"editor.record.form.field.contactDetails.lastName": "Contact last name",
|
|
19477
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "Last name",
|
|
19478
|
+
"editor.record.form.field.contactDetails.organization": "Contact organization",
|
|
19479
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "Company",
|
|
19416
19480
|
"editor.record.form.field.contacts": "Point of contact - Email",
|
|
19417
19481
|
"editor.record.form.field.contacts.noContact": "Please provide at least one point of contact.",
|
|
19418
19482
|
"editor.record.form.field.contacts.placeholder": "Choose a contact",
|
|
@@ -19758,7 +19822,6 @@ var en = {
|
|
|
19758
19822
|
"record.metadata.preview.config.idle": "Set as default preview",
|
|
19759
19823
|
"record.metadata.preview.config.saved": "Saved !",
|
|
19760
19824
|
"record.metadata.preview.config.saving": "Saving...",
|
|
19761
|
-
"record.metadata.producer": "Data producer",
|
|
19762
19825
|
"record.metadata.publication": "Date of publication",
|
|
19763
19826
|
"record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
|
|
19764
19827
|
"record.metadata.quality": "Metadata Quality",
|
|
@@ -20089,6 +20152,14 @@ var es = {
|
|
|
20089
20152
|
"editor.record.form.draft.updateAlert": "",
|
|
20090
20153
|
"editor.record.form.field.abstract": "",
|
|
20091
20154
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
20155
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
20156
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
20157
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
20158
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
20159
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
20160
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
20161
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
20162
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
20092
20163
|
"editor.record.form.field.contacts": "Punto de contacto - Correo ",
|
|
20093
20164
|
"editor.record.form.field.contacts.noContact": "",
|
|
20094
20165
|
"editor.record.form.field.contacts.placeholder": "",
|
|
@@ -20434,7 +20505,6 @@ var es = {
|
|
|
20434
20505
|
"record.metadata.preview.config.idle": "",
|
|
20435
20506
|
"record.metadata.preview.config.saved": "",
|
|
20436
20507
|
"record.metadata.preview.config.saving": "",
|
|
20437
|
-
"record.metadata.producer": "",
|
|
20438
20508
|
"record.metadata.publication": "",
|
|
20439
20509
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
20440
20510
|
"record.metadata.quality": "",
|
|
@@ -20765,6 +20835,14 @@ var fr = {
|
|
|
20765
20835
|
"editor.record.form.draft.updateAlert": "Depuis la création de ce brouillon, ce jeu de données a été modifié le { date } par { user }. Publier votre version peut supprimer ses modifications. Pour éviter cela, vous pouvez annuler vos changements, ou publier votre version en connaissance de cause.",
|
|
20766
20836
|
"editor.record.form.field.abstract": "Description",
|
|
20767
20837
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
20838
|
+
"editor.record.form.field.contactDetails.email": "Email du point de contact",
|
|
20839
|
+
"editor.record.form.field.contactDetails.email.placeholder": "exemple@nomdedomaine.com",
|
|
20840
|
+
"editor.record.form.field.contactDetails.firstName": "Prénom du point de contact",
|
|
20841
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "Prénom",
|
|
20842
|
+
"editor.record.form.field.contactDetails.lastName": "Nom du point de contact",
|
|
20843
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "Nom",
|
|
20844
|
+
"editor.record.form.field.contactDetails.organization": "Organisation du point de contact",
|
|
20845
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "Company",
|
|
20768
20846
|
"editor.record.form.field.contacts": "Point de contact - Email",
|
|
20769
20847
|
"editor.record.form.field.contacts.noContact": "Veuillez renseigner au moins un point de contact.",
|
|
20770
20848
|
"editor.record.form.field.contacts.placeholder": "Choisissez un contact",
|
|
@@ -21110,7 +21188,6 @@ var fr = {
|
|
|
21110
21188
|
"record.metadata.preview.config.idle": "Définir l'aperçu par défaut",
|
|
21111
21189
|
"record.metadata.preview.config.saved": "Sauvegardé !",
|
|
21112
21190
|
"record.metadata.preview.config.saving": "Sauvegarde...",
|
|
21113
|
-
"record.metadata.producer": "Producteur de la donnée",
|
|
21114
21191
|
"record.metadata.publication": "Date de publication",
|
|
21115
21192
|
"record.metadata.publications": "{count, plural, =0{ressource} one{ressource} other{ressources}}",
|
|
21116
21193
|
"record.metadata.quality": "Description de la ressource",
|
|
@@ -21441,6 +21518,14 @@ var it = {
|
|
|
21441
21518
|
"editor.record.form.draft.updateAlert": "Da quando è stata creata questa bozza, questo dataset è stato modificato il { date } da { user }. La pubblicazione della sua versione potrebbe rimuovere le loro modifiche. Per evitarlo, puoi annullare le sue modifiche o pubblicare la sua versione consapevolmente.",
|
|
21442
21519
|
"editor.record.form.field.abstract": "Riassunto",
|
|
21443
21520
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
21521
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
21522
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
21523
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
21524
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
21525
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
21526
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
21527
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
21528
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
21444
21529
|
"editor.record.form.field.contacts": "",
|
|
21445
21530
|
"editor.record.form.field.contacts.noContact": "Inserisci almeno un punto di contatto.",
|
|
21446
21531
|
"editor.record.form.field.contacts.placeholder": "Scegli un contatto",
|
|
@@ -21786,7 +21871,6 @@ var it = {
|
|
|
21786
21871
|
"record.metadata.preview.config.idle": "",
|
|
21787
21872
|
"record.metadata.preview.config.saved": "",
|
|
21788
21873
|
"record.metadata.preview.config.saving": "",
|
|
21789
|
-
"record.metadata.producer": "Produttore dei dati",
|
|
21790
21874
|
"record.metadata.publication": "Data di pubblicazione",
|
|
21791
21875
|
"record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
|
|
21792
21876
|
"record.metadata.quality": "Qualità dei metadati",
|
|
@@ -22117,6 +22201,14 @@ var nl = {
|
|
|
22117
22201
|
"editor.record.form.draft.updateAlert": "",
|
|
22118
22202
|
"editor.record.form.field.abstract": "",
|
|
22119
22203
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
22204
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
22205
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
22206
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
22207
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
22208
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
22209
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
22210
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
22211
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
22120
22212
|
"editor.record.form.field.contacts": "",
|
|
22121
22213
|
"editor.record.form.field.contacts.noContact": "",
|
|
22122
22214
|
"editor.record.form.field.contacts.placeholder": "",
|
|
@@ -22462,7 +22554,6 @@ var nl = {
|
|
|
22462
22554
|
"record.metadata.preview.config.idle": "",
|
|
22463
22555
|
"record.metadata.preview.config.saved": "",
|
|
22464
22556
|
"record.metadata.preview.config.saving": "",
|
|
22465
|
-
"record.metadata.producer": "",
|
|
22466
22557
|
"record.metadata.publication": "",
|
|
22467
22558
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
22468
22559
|
"record.metadata.quality": "",
|
|
@@ -22793,6 +22884,14 @@ var pt = {
|
|
|
22793
22884
|
"editor.record.form.draft.updateAlert": "",
|
|
22794
22885
|
"editor.record.form.field.abstract": "",
|
|
22795
22886
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
22887
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
22888
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
22889
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
22890
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
22891
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
22892
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
22893
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
22894
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
22796
22895
|
"editor.record.form.field.contacts": "",
|
|
22797
22896
|
"editor.record.form.field.contacts.noContact": "",
|
|
22798
22897
|
"editor.record.form.field.contacts.placeholder": "",
|
|
@@ -23138,7 +23237,6 @@ var pt = {
|
|
|
23138
23237
|
"record.metadata.preview.config.idle": "",
|
|
23139
23238
|
"record.metadata.preview.config.saved": "",
|
|
23140
23239
|
"record.metadata.preview.config.saving": "",
|
|
23141
|
-
"record.metadata.producer": "",
|
|
23142
23240
|
"record.metadata.publication": "",
|
|
23143
23241
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
23144
23242
|
"record.metadata.quality": "",
|
|
@@ -23469,6 +23567,14 @@ var sk = {
|
|
|
23469
23567
|
"editor.record.form.draft.updateAlert": "",
|
|
23470
23568
|
"editor.record.form.field.abstract": "",
|
|
23471
23569
|
"editor.record.form.field.constraintsShortcuts": "",
|
|
23570
|
+
"editor.record.form.field.contactDetails.email": "",
|
|
23571
|
+
"editor.record.form.field.contactDetails.email.placeholder": "",
|
|
23572
|
+
"editor.record.form.field.contactDetails.firstName": "",
|
|
23573
|
+
"editor.record.form.field.contactDetails.firstName.placeholder": "",
|
|
23574
|
+
"editor.record.form.field.contactDetails.lastName": "",
|
|
23575
|
+
"editor.record.form.field.contactDetails.lastName.placeholder": "",
|
|
23576
|
+
"editor.record.form.field.contactDetails.organization": "",
|
|
23577
|
+
"editor.record.form.field.contactDetails.organization.placeholder": "",
|
|
23472
23578
|
"editor.record.form.field.contacts": "",
|
|
23473
23579
|
"editor.record.form.field.contacts.noContact": "",
|
|
23474
23580
|
"editor.record.form.field.contacts.placeholder": "",
|
|
@@ -23814,7 +23920,6 @@ var sk = {
|
|
|
23814
23920
|
"record.metadata.preview.config.idle": "",
|
|
23815
23921
|
"record.metadata.preview.config.saved": "",
|
|
23816
23922
|
"record.metadata.preview.config.saving": "",
|
|
23817
|
-
"record.metadata.producer": "",
|
|
23818
23923
|
"record.metadata.publication": "dátum publikácia",
|
|
23819
23924
|
"record.metadata.publications": "{count, plural, =0{publikácia} one{publikácia} other{publikácie}}",
|
|
23820
23925
|
"record.metadata.quality": "Kvalita metadát",
|
|
@@ -24433,6 +24538,7 @@ class Gn4Converter extends BaseConverter {
|
|
|
24433
24538
|
kind: 'dataset',
|
|
24434
24539
|
status: null,
|
|
24435
24540
|
lineage: null,
|
|
24541
|
+
sourceRecords: [],
|
|
24436
24542
|
recordUpdated: null,
|
|
24437
24543
|
recordPublished: null,
|
|
24438
24544
|
ownerOrganization: null,
|
|
@@ -25127,6 +25233,14 @@ function getIndividualDisplayName(individual) {
|
|
|
25127
25233
|
return `${nameParts}${orgPart}`;
|
|
25128
25234
|
return individual.organization?.name ?? individual.email ?? '';
|
|
25129
25235
|
}
|
|
25236
|
+
function getAddressLines(address) {
|
|
25237
|
+
return address
|
|
25238
|
+
? address
|
|
25239
|
+
.split(',')
|
|
25240
|
+
.map((part) => part.trim())
|
|
25241
|
+
.filter(Boolean)
|
|
25242
|
+
: [];
|
|
25243
|
+
}
|
|
25130
25244
|
function toIndividual(user) {
|
|
25131
25245
|
return {
|
|
25132
25246
|
firstName: user.name,
|
|
@@ -25563,7 +25677,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
25563
25677
|
}] } });
|
|
25564
25678
|
|
|
25565
25679
|
var name = "geonetwork-ui";
|
|
25566
|
-
var version = "2.10.0-dev.
|
|
25680
|
+
var version = "2.10.0-dev.0d851f690";
|
|
25567
25681
|
var engines = {
|
|
25568
25682
|
node: ">=20"
|
|
25569
25683
|
};
|
|
@@ -27025,6 +27139,7 @@ class AuthService {
|
|
|
27025
27139
|
}
|
|
27026
27140
|
return baseUrl
|
|
27027
27141
|
.replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
|
|
27142
|
+
.replace('${current_path}', this.location.prepareExternalUrl(this.location.path()))
|
|
27028
27143
|
.replace('${lang2}', toLang2(this.translateService.currentLang))
|
|
27029
27144
|
.replace('${lang3}', toLang3(this.translateService.currentLang));
|
|
27030
27145
|
}
|
|
@@ -34141,10 +34256,7 @@ class MetadataContactComponent {
|
|
|
34141
34256
|
: this.metadata.contactsForResource) || []);
|
|
34142
34257
|
}
|
|
34143
34258
|
get address() {
|
|
34144
|
-
|
|
34145
|
-
.split(',')
|
|
34146
|
-
.map((part) => part.trim());
|
|
34147
|
-
return addressParts;
|
|
34259
|
+
return getAddressLines(this.contacts[0]?.address);
|
|
34148
34260
|
}
|
|
34149
34261
|
onOrganizationClick() {
|
|
34150
34262
|
this.organizationClick.emit(this.shownOrganization);
|
|
@@ -34276,24 +34388,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34276
34388
|
}]
|
|
34277
34389
|
}] });
|
|
34278
34390
|
|
|
34279
|
-
class
|
|
34391
|
+
class ContactDetailsComponent {
|
|
34392
|
+
get organization() {
|
|
34393
|
+
return this.contact?.organization;
|
|
34394
|
+
}
|
|
34280
34395
|
get displayName() {
|
|
34281
34396
|
return getIndividualDisplayName(this.contact);
|
|
34282
34397
|
}
|
|
34283
|
-
|
|
34284
|
-
|
|
34398
|
+
get addressLines() {
|
|
34399
|
+
return getAddressLines(this.contact?.address);
|
|
34400
|
+
}
|
|
34401
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34402
|
+
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: [
|
|
34285
34403
|
provideIcons({
|
|
34286
|
-
|
|
34404
|
+
matCallOutline,
|
|
34405
|
+
matLocationOnOutline,
|
|
34406
|
+
matMailOutline,
|
|
34407
|
+
matOpenInNew,
|
|
34287
34408
|
}),
|
|
34288
34409
|
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34289
34410
|
}
|
|
34290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type:
|
|
34411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsComponent, decorators: [{
|
|
34291
34412
|
type: Component,
|
|
34292
|
-
args: [{ selector: 'gn-ui-contact-
|
|
34413
|
+
args: [{ selector: 'gn-ui-contact-details', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, ThumbnailComponent, TranslateModule], viewProviders: [
|
|
34293
34414
|
provideIcons({
|
|
34294
|
-
|
|
34415
|
+
matCallOutline,
|
|
34416
|
+
matLocationOnOutline,
|
|
34417
|
+
matMailOutline,
|
|
34418
|
+
matOpenInNew,
|
|
34295
34419
|
}),
|
|
34296
|
-
], template: "<
|
|
34420
|
+
], 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" }]
|
|
34421
|
+
}], propDecorators: { contact: [{
|
|
34422
|
+
type: Input
|
|
34423
|
+
}] } });
|
|
34424
|
+
|
|
34425
|
+
class ContactPillComponent {
|
|
34426
|
+
constructor() {
|
|
34427
|
+
this.host = inject((ElementRef));
|
|
34428
|
+
this.overlayOpen = false;
|
|
34429
|
+
this.overlayWidth = 0;
|
|
34430
|
+
this.overlayOffsetX = 0;
|
|
34431
|
+
this.overlayPositions = [
|
|
34432
|
+
{
|
|
34433
|
+
originX: 'start',
|
|
34434
|
+
originY: 'bottom',
|
|
34435
|
+
overlayX: 'start',
|
|
34436
|
+
overlayY: 'top',
|
|
34437
|
+
offsetY: 4,
|
|
34438
|
+
},
|
|
34439
|
+
{
|
|
34440
|
+
originX: 'start',
|
|
34441
|
+
originY: 'top',
|
|
34442
|
+
overlayX: 'start',
|
|
34443
|
+
overlayY: 'bottom',
|
|
34444
|
+
offsetY: -4,
|
|
34445
|
+
},
|
|
34446
|
+
];
|
|
34447
|
+
}
|
|
34448
|
+
get displayName() {
|
|
34449
|
+
return getIndividualDisplayName(this.contact);
|
|
34450
|
+
}
|
|
34451
|
+
toggleOverlay() {
|
|
34452
|
+
if (!this.overlayOpen) {
|
|
34453
|
+
// Calculate the width and horizontal offset of the overlay to align it with the parent element
|
|
34454
|
+
const parent = this.host.nativeElement.parentElement.getBoundingClientRect();
|
|
34455
|
+
const pill = this.host.nativeElement.getBoundingClientRect();
|
|
34456
|
+
this.overlayWidth = parent.width;
|
|
34457
|
+
this.overlayOffsetX = parent.left - pill.left;
|
|
34458
|
+
}
|
|
34459
|
+
this.overlayOpen = !this.overlayOpen;
|
|
34460
|
+
}
|
|
34461
|
+
closeOverlay() {
|
|
34462
|
+
this.overlayOpen = false;
|
|
34463
|
+
}
|
|
34464
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34465
|
+
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 ? 'primary' : '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 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 group-hover:border-white group-hover:text-white\"\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 }); }
|
|
34466
|
+
}
|
|
34467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactPillComponent, decorators: [{
|
|
34468
|
+
type: Component,
|
|
34469
|
+
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 ? 'primary' : '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 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 group-hover:border-white group-hover:text-white\"\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" }]
|
|
34297
34470
|
}], propDecorators: { contact: [{
|
|
34298
34471
|
type: Input
|
|
34299
34472
|
}] } });
|
|
@@ -34378,7 +34551,7 @@ class MetadataInfoComponent {
|
|
|
34378
34551
|
this.keyword.emit(keyword);
|
|
34379
34552
|
}
|
|
34380
34553
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34381
|
-
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 license) {\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-0.5 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: [
|
|
34554
|
+
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: [
|
|
34382
34555
|
provideIcons({
|
|
34383
34556
|
matOpenInNew,
|
|
34384
34557
|
matMailOutline: matMailOutline$1,
|
|
@@ -34407,7 +34580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
34407
34580
|
matOpenInNew,
|
|
34408
34581
|
matMailOutline: matMailOutline$1,
|
|
34409
34582
|
}),
|
|
34410
|
-
], 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 license) {\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-0.5 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"] }]
|
|
34583
|
+
], 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"] }]
|
|
34411
34584
|
}], propDecorators: { metadata: [{
|
|
34412
34585
|
type: Input
|
|
34413
34586
|
}], incomplete: [{
|
|
@@ -42303,6 +42476,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
42303
42476
|
args: ['actionMenuButton', { read: ElementRef }]
|
|
42304
42477
|
}] } });
|
|
42305
42478
|
|
|
42479
|
+
class FieldFocusDirective {
|
|
42480
|
+
constructor() {
|
|
42481
|
+
this.gnUiFieldFocusGlowClass = 'gn-ui-field-focus-glow';
|
|
42482
|
+
this.el = inject(ElementRef);
|
|
42483
|
+
}
|
|
42484
|
+
focusField() {
|
|
42485
|
+
setTimeout(() => {
|
|
42486
|
+
const host = this.el.nativeElement;
|
|
42487
|
+
const glowClass = this.gnUiFieldFocusGlowClass;
|
|
42488
|
+
host.classList.remove(glowClass);
|
|
42489
|
+
void host.offsetWidth;
|
|
42490
|
+
host.classList.add(glowClass);
|
|
42491
|
+
host.addEventListener('animationend', () => host.classList.remove(glowClass), { once: true });
|
|
42492
|
+
host.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
42493
|
+
const target = host.querySelector('input, textarea, select, [contenteditable="true"]') ??
|
|
42494
|
+
host.querySelector('button:not([disabled]), [tabindex]:not([tabindex="-1"])');
|
|
42495
|
+
target?.focus({ preventScroll: true });
|
|
42496
|
+
});
|
|
42497
|
+
}
|
|
42498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FieldFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
42499
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.19", type: FieldFocusDirective, isStandalone: true, selector: "[gnUiFieldFocus]", inputs: { gnUiFieldFocusGlowClass: "gnUiFieldFocusGlowClass" }, exportAs: ["fieldFocus"], ngImport: i0 }); }
|
|
42500
|
+
}
|
|
42501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FieldFocusDirective, decorators: [{
|
|
42502
|
+
type: Directive,
|
|
42503
|
+
args: [{
|
|
42504
|
+
selector: '[gnUiFieldFocus]',
|
|
42505
|
+
standalone: true,
|
|
42506
|
+
exportAs: 'fieldFocus',
|
|
42507
|
+
}]
|
|
42508
|
+
}], propDecorators: { gnUiFieldFocusGlowClass: [{
|
|
42509
|
+
type: Input
|
|
42510
|
+
}] } });
|
|
42511
|
+
|
|
42306
42512
|
class GenericKeywordsComponent {
|
|
42307
42513
|
constructor() {
|
|
42308
42514
|
this.platformService = inject(PlatformServiceInterface);
|
|
@@ -42906,6 +43112,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
42906
43112
|
type: Output
|
|
42907
43113
|
}] } });
|
|
42908
43114
|
|
|
43115
|
+
class ContactDetailsFormComponent {
|
|
43116
|
+
constructor() {
|
|
43117
|
+
this.contactChange = new EventEmitter();
|
|
43118
|
+
}
|
|
43119
|
+
emitContactChange() {
|
|
43120
|
+
this.contactChange.emit(this.contact);
|
|
43121
|
+
}
|
|
43122
|
+
handleOrganizationChange(change) {
|
|
43123
|
+
this.contact.organization = {
|
|
43124
|
+
...(this.contact.organization ?? {}),
|
|
43125
|
+
...change,
|
|
43126
|
+
};
|
|
43127
|
+
this.emitContactChange();
|
|
43128
|
+
}
|
|
43129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43130
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: ContactDetailsFormComponent, isStandalone: true, selector: "gn-ui-contact-details-form", inputs: { contact: "contact" }, outputs: { contactChange: "contactChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-7\">\n <div class=\"grid grid-cols-2 gap-4\">\n <div class=\"min-w-0\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.lastName\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [(value)]=\"contact.lastName\"\n (valueChange)=\"emitContactChange()\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.lastName.placeholder'\n | translate\n \"\n data-test=\"contactDetailsLastName\"\n ></gn-ui-text-input>\n </div>\n <div class=\"min-w-0\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.firstName\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [(value)]=\"contact.firstName\"\n (valueChange)=\"emitContactChange()\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.firstName.placeholder'\n | translate\n \"\n data-test=\"contactDetailsFirstName\"\n ></gn-ui-text-input>\n </div>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.email\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [value]=\"contact.organization?.email ?? ''\"\n (valueChange)=\"handleOrganizationChange({ email: $event })\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.email.placeholder' | translate\n \"\n data-test=\"contactDetailsEmail\"\n ></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.organization\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [value]=\"contact.organization?.name ?? ''\"\n (valueChange)=\"handleOrganizationChange({ name: $event })\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.organization.placeholder'\n | translate\n \"\n data-test=\"contactDetailsOrganization\"\n ></gn-ui-text-input>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43131
|
+
}
|
|
43132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsFormComponent, decorators: [{
|
|
43133
|
+
type: Component,
|
|
43134
|
+
args: [{ selector: 'gn-ui-contact-details-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TextInputComponent, TranslateDirective, TranslatePipe], template: "<div class=\"flex flex-col gap-7\">\n <div class=\"grid grid-cols-2 gap-4\">\n <div class=\"min-w-0\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.lastName\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [(value)]=\"contact.lastName\"\n (valueChange)=\"emitContactChange()\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.lastName.placeholder'\n | translate\n \"\n data-test=\"contactDetailsLastName\"\n ></gn-ui-text-input>\n </div>\n <div class=\"min-w-0\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.firstName\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [(value)]=\"contact.firstName\"\n (valueChange)=\"emitContactChange()\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.firstName.placeholder'\n | translate\n \"\n data-test=\"contactDetailsFirstName\"\n ></gn-ui-text-input>\n </div>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.email\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [value]=\"contact.organization?.email ?? ''\"\n (valueChange)=\"handleOrganizationChange({ email: $event })\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.email.placeholder' | translate\n \"\n data-test=\"contactDetailsEmail\"\n ></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.contactDetails.organization\n </h3>\n <gn-ui-text-input\n class=\"block w-full\"\n extraClass=\"w-full\"\n [value]=\"contact.organization?.name ?? ''\"\n (valueChange)=\"handleOrganizationChange({ name: $event })\"\n [placeholder]=\"\n 'editor.record.form.field.contactDetails.organization.placeholder'\n | translate\n \"\n data-test=\"contactDetailsOrganization\"\n ></gn-ui-text-input>\n </div>\n</div>\n" }]
|
|
43135
|
+
}], propDecorators: { contact: [{
|
|
43136
|
+
type: Input
|
|
43137
|
+
}], contactChange: [{
|
|
43138
|
+
type: Output
|
|
43139
|
+
}] } });
|
|
43140
|
+
|
|
42909
43141
|
class FormFieldContactsComponent {
|
|
42910
43142
|
constructor() {
|
|
42911
43143
|
this.platformServiceInterface = inject(PlatformServiceInterface);
|
|
@@ -42957,6 +43189,10 @@ class FormFieldContactsComponent {
|
|
|
42957
43189
|
this.contacts = contacts;
|
|
42958
43190
|
this.valueChange.emit(contacts);
|
|
42959
43191
|
}
|
|
43192
|
+
handleContactChanged(updatedContact, index) {
|
|
43193
|
+
const contacts = this.contacts.map((contact, i) => i === index ? updatedContact : contact);
|
|
43194
|
+
this.handleContactsChanged(contacts);
|
|
43195
|
+
}
|
|
42960
43196
|
/**
|
|
42961
43197
|
* gn-ui-autocomplete
|
|
42962
43198
|
*/
|
|
@@ -42978,7 +43214,7 @@ class FormFieldContactsComponent {
|
|
|
42978
43214
|
this.subscription.unsubscribe();
|
|
42979
43215
|
}
|
|
42980
43216
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldContactsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42981
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n @if (contacts.length > 0) {\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n } @else {\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43217
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value", modelSpecifier: "modelSpecifier" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n @if (contacts.length > 0) {\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact let-index=\"index\">\n @if (modelSpecifier === 'contact:editableDetails') {\n <gn-ui-contact-details-form\n [contact]=\"contact\"\n (contactChange)=\"handleContactChanged($event, index)\"\n ></gn-ui-contact-details-form>\n } @else {\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n }\n </ng-template>\n } @else {\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: ContactDetailsFormComponent, selector: "gn-ui-contact-details-form", inputs: ["contact"], outputs: ["contactChange"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42982
43218
|
}
|
|
42983
43219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
|
|
42984
43220
|
type: Component,
|
|
@@ -42987,10 +43223,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
42987
43223
|
TranslateDirective,
|
|
42988
43224
|
TranslatePipe,
|
|
42989
43225
|
ContactCardComponent,
|
|
43226
|
+
ContactDetailsFormComponent,
|
|
42990
43227
|
SortableListComponent,
|
|
42991
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n @if (contacts.length > 0) {\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n } @else {\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n }\n</div>\n" }]
|
|
43228
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n @if (contacts.length > 0) {\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact let-index=\"index\">\n @if (modelSpecifier === 'contact:editableDetails') {\n <gn-ui-contact-details-form\n [contact]=\"contact\"\n (contactChange)=\"handleContactChanged($event, index)\"\n ></gn-ui-contact-details-form>\n } @else {\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n }\n </ng-template>\n } @else {\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n }\n</div>\n" }]
|
|
42992
43229
|
}], ctorParameters: () => [], propDecorators: { value: [{
|
|
42993
43230
|
type: Input
|
|
43231
|
+
}], modelSpecifier: [{
|
|
43232
|
+
type: Input
|
|
42994
43233
|
}], valueChange: [{
|
|
42995
43234
|
type: Output
|
|
42996
43235
|
}] } });
|
|
@@ -43790,7 +44029,6 @@ class FormFieldConstraintsShortcutsComponent {
|
|
|
43790
44029
|
this.editorFacade.setFieldVisibility({ model }, visible);
|
|
43791
44030
|
});
|
|
43792
44031
|
};
|
|
43793
|
-
hideEmptyConstraints(this.legalConstraints$, 'legalConstraints');
|
|
43794
44032
|
hideEmptyConstraints(this.securityConstraints$, 'securityConstraints');
|
|
43795
44033
|
hideEmptyConstraints(this.otherConstraints$, 'otherConstraints');
|
|
43796
44034
|
});
|
|
@@ -44054,6 +44292,7 @@ class FormFieldComponent {
|
|
|
44054
44292
|
constructor() {
|
|
44055
44293
|
this.valueChange = new EventEmitter();
|
|
44056
44294
|
this.isOpenData = false;
|
|
44295
|
+
this.fieldFocus = inject(FieldFocusDirective);
|
|
44057
44296
|
}
|
|
44058
44297
|
toggleIsOpenData(event) {
|
|
44059
44298
|
this.isOpenData = event;
|
|
@@ -44120,7 +44359,7 @@ class FormFieldComponent {
|
|
|
44120
44359
|
}
|
|
44121
44360
|
}
|
|
44122
44361
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44123
|
-
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 }], 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 (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: [""], 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"], 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: i3$2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44362
|
+
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 }); }
|
|
44124
44363
|
}
|
|
44125
44364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
44126
44365
|
type: Component,
|
|
@@ -44147,7 +44386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
44147
44386
|
FormFieldSpatialToggleComponent,
|
|
44148
44387
|
FormFieldTopicsComponent,
|
|
44149
44388
|
TextFieldModule,
|
|
44150
|
-
], 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 (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" }]
|
|
44389
|
+
], 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}: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"] }]
|
|
44151
44390
|
}], propDecorators: { uniqueIdentifier: [{
|
|
44152
44391
|
type: Input
|
|
44153
44392
|
}], model: [{
|
|
@@ -44169,30 +44408,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
44169
44408
|
|
|
44170
44409
|
class RecordFormComponent {
|
|
44171
44410
|
constructor() {
|
|
44172
|
-
this.anchorIdPrefix = 'gn-ui--field-';
|
|
44173
44411
|
this.facade = inject(EditorFacade);
|
|
44174
|
-
this.el = inject(ElementRef);
|
|
44175
44412
|
this.subscription = new Subscription();
|
|
44176
44413
|
this.recordUniqueIdentifier$ = this.facade.record$.pipe(map$2((record) => record.uniqueIdentifier));
|
|
44414
|
+
this.focusFieldWithPage$ = this.facade.focusedField$.pipe(switchMap$1(async (field) => [field, await this.getPageIndexForField(field)]));
|
|
44415
|
+
this.formFields = viewChildren(FormFieldComponent, ...(ngDevMode ? [{ debugName: "formFields" }] : []));
|
|
44416
|
+
}
|
|
44417
|
+
focusField(model) {
|
|
44418
|
+
const fields = this.formFields();
|
|
44419
|
+
const field = fields.find((f) => f.model === model);
|
|
44420
|
+
field?.fieldFocus.focusField();
|
|
44177
44421
|
}
|
|
44178
44422
|
ngOnInit() {
|
|
44179
|
-
this.subscription.add(this.
|
|
44180
|
-
.pipe(
|
|
44181
|
-
field
|
|
44182
|
-
|
|
44183
|
-
|
|
44184
|
-
.subscribe(async ({ field, pageIndex }) => {
|
|
44185
|
-
const currentPage = await firstValueFrom(this.facade.currentPage$);
|
|
44186
|
-
if (pageIndex !== null && pageIndex !== currentPage) {
|
|
44187
|
-
this.facade.setCurrentPage(pageIndex);
|
|
44188
|
-
this.el.nativeElement.scrollIntoView({
|
|
44189
|
-
behavior: 'instant',
|
|
44190
|
-
block: 'start',
|
|
44191
|
-
});
|
|
44423
|
+
this.subscription.add(this.focusFieldWithPage$
|
|
44424
|
+
.pipe(withLatestFrom$1(this.facade.currentPage$, ([field, fieldPage], currentPage) => [field, fieldPage, currentPage]))
|
|
44425
|
+
.subscribe(([field, fieldPage, currentPage]) => {
|
|
44426
|
+
if (fieldPage !== null && fieldPage !== currentPage) {
|
|
44427
|
+
this.facade.setCurrentPage(fieldPage);
|
|
44192
44428
|
}
|
|
44193
|
-
setTimeout(() =>
|
|
44194
|
-
.getElementById(this.anchorIdPrefix + field)
|
|
44195
|
-
?.scrollIntoView({ behavior: 'instant', block: 'start' }));
|
|
44429
|
+
setTimeout(() => this.focusField(field));
|
|
44196
44430
|
}));
|
|
44197
44431
|
}
|
|
44198
44432
|
ngOnDestroy() {
|
|
@@ -44216,12 +44450,12 @@ class RecordFormComponent {
|
|
|
44216
44450
|
return pageIndex >= 0 ? pageIndex : null;
|
|
44217
44451
|
}
|
|
44218
44452
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44219
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", 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 class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\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 [
|
|
44453
|
+
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 class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\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: [""], 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: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44220
44454
|
}
|
|
44221
44455
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
44222
44456
|
type: Component,
|
|
44223
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateDirective], 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 class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\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 [
|
|
44224
|
-
}] });
|
|
44457
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateDirective], 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 class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\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" }]
|
|
44458
|
+
}], propDecorators: { formFields: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => FormFieldComponent), { isSignal: true }] }] } });
|
|
44225
44459
|
|
|
44226
44460
|
function evaluate(expression) {
|
|
44227
44461
|
if (expression.match(/^\${.*}$/)) {
|
|
@@ -44841,5 +45075,5 @@ const CHART_TYPE_VALUES = [
|
|
|
44841
45075
|
* Generated bundle index. Do not edit.
|
|
44842
45076
|
*/
|
|
44843
45077
|
|
|
44844
|
-
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, 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_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, 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, 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 };
|
|
45078
|
+
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_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 };
|
|
44845
45079
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|