geonetwork-ui 2.10.0-dev.cc63fa135 → 2.10.0-dev.cf0577fae

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.
Files changed (57) hide show
  1. package/fesm2022/geonetwork-ui.mjs +234 -41
  2. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  3. package/index.d.ts +31 -6
  4. package/index.d.ts.map +1 -1
  5. package/package.json +1 -1
  6. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +9 -0
  7. package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +2 -0
  8. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -0
  9. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.reuse+ongules.ts +7 -0
  10. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.reuse+roilaye.ts +1 -0
  11. package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +1 -0
  12. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -0
  13. package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -0
  14. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +2 -0
  15. package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +1 -0
  16. package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +1 -0
  17. package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +2 -0
  18. package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +1 -0
  19. package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +8 -0
  20. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.converter.ts +1 -0
  21. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +7 -0
  22. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +8 -0
  23. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +8 -0
  24. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +11 -0
  25. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +33 -0
  26. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +33 -0
  27. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -0
  28. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +10 -2
  29. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +11 -0
  30. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +5 -0
  31. package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.css +0 -0
  32. package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.html +67 -0
  33. package/src/libs/feature/editor/src/lib/components/contact-details/contact-details-form.component.ts +39 -0
  34. package/src/libs/feature/editor/src/lib/components/record-form/form-field/field-focus.directive.ts +38 -0
  35. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +0 -1
  36. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +9 -2
  37. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +12 -0
  38. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.css +37 -0
  39. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +1 -0
  40. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  41. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  42. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.css +0 -3
  43. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +0 -1
  44. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +27 -25
  45. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +4 -0
  46. package/src/libs/feature/editor/src/lib/services/editor.service.ts +1 -1
  47. package/src/libs/util/app-config/src/lib/app-config.ts +14 -1
  48. package/src/libs/util/app-config/src/lib/model.ts +3 -0
  49. package/src/libs/util/app-config/src/lib/parse-utils.ts +27 -0
  50. package/translations/de.json +8 -1
  51. package/translations/en.json +8 -1
  52. package/translations/es.json +8 -1
  53. package/translations/fr.json +8 -1
  54. package/translations/it.json +8 -1
  55. package/translations/nl.json +8 -1
  56. package/translations/pt.json +8 -1
  57. 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 i3$2 from '@angular/cdk/text-field';
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,
@@ -25571,7 +25677,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
25571
25677
  }] } });
25572
25678
 
25573
25679
  var name = "geonetwork-ui";
25574
- var version = "2.10.0-dev.cc63fa135";
25680
+ var version = "2.10.0-dev.cf0577fae";
25575
25681
  var engines = {
25576
25682
  node: ">=20"
25577
25683
  };
@@ -26387,6 +26493,9 @@ const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
26387
26493
  const DISABLE_DRAFT = new InjectionToken('gnDisableDraft', {
26388
26494
  factory: () => false,
26389
26495
  });
26496
+ const DEFAULT_RECORD_CONVERTER = new InjectionToken('defaultRecordConverter', {
26497
+ factory: () => new Iso19139Converter(),
26498
+ });
26390
26499
  class Gn4Repository {
26391
26500
  constructor() {
26392
26501
  this.httpClient = inject(HttpClient);
@@ -26398,6 +26507,7 @@ class Gn4Repository {
26398
26507
  this.gn4LanguagesApi = inject(LanguagesApiService);
26399
26508
  this.settingsService = inject(Gn4SettingsService);
26400
26509
  this.disableDraft = inject(DISABLE_DRAFT, { optional: true }) ?? false;
26510
+ this.defaultConverter = inject(DEFAULT_RECORD_CONVERTER);
26401
26511
  this._draftsChanged = new Subject();
26402
26512
  this.draftsChanged$ = this._draftsChanged.asObservable();
26403
26513
  }
@@ -26676,10 +26786,10 @@ class Gn4Repository {
26676
26786
  .pipe(map$1((response) => response.body), catchError((error) => error.status === 404 ? of(null) : throwError(() => error)));
26677
26787
  }
26678
26788
  serializeRecordToXml(record, referenceRecordSource) {
26679
- // if there's a reference record, use that standard; otherwise, use iso19139
26789
+ // if there's a reference record, use that standard; otherwise, use standard based on configuration or default
26680
26790
  const converter = referenceRecordSource
26681
26791
  ? findConverterForDocument(referenceRecordSource)
26682
- : new Iso19139Converter();
26792
+ : this.defaultConverter;
26683
26793
  return from(converter.writeRecord(record, referenceRecordSource));
26684
26794
  }
26685
26795
  getExternalRecordAsXml(recordDownloadUrl) {
@@ -27033,6 +27143,7 @@ class AuthService {
27033
27143
  }
27034
27144
  return baseUrl
27035
27145
  .replace('${current_url}', new URL(this.location.prepareExternalUrl(this.location.path()), window.location.href).toString())
27146
+ .replace('${current_path}', this.location.prepareExternalUrl(this.location.path()))
27036
27147
  .replace('${lang2}', toLang2(this.translateService.currentLang))
27037
27148
  .replace('${lang3}', toLang3(this.translateService.currentLang));
27038
27149
  }
@@ -28217,6 +28328,22 @@ function checkNewRecordDefaultLanguage(parsedConfigSection, outWarnings) {
28217
28328
  new_record_default_language: lang2,
28218
28329
  };
28219
28330
  }
28331
+ function checkNewRecordStandard(parsedConfigSection, outWarnings) {
28332
+ const standard = parsedConfigSection.new_record_standard;
28333
+ const normalizedStandard = typeof standard === 'string' ? standard.trim().toLowerCase() : null;
28334
+ if (normalizedStandard === 'iso19139' ||
28335
+ normalizedStandard === 'iso19115-3') {
28336
+ return {
28337
+ ...parsedConfigSection,
28338
+ new_record_standard: normalizedStandard,
28339
+ };
28340
+ }
28341
+ outWarnings.push(`In the [editing] section: new_record_standard = "${standard}" is not a supported metadata standard`);
28342
+ return {
28343
+ ...parsedConfigSection,
28344
+ new_record_standard: undefined,
28345
+ };
28346
+ }
28220
28347
 
28221
28348
  /**
28222
28349
  * This loader extends the default one based on JSON files but also loads custom translations
@@ -28418,16 +28545,21 @@ function loadAppConfig(configUrl = 'assets/configuration/default.toml') {
28418
28545
  ENABLED: parsedMetadataQualitySection.enabled,
28419
28546
  SORTABLE: parsedMetadataQualitySection.sortable,
28420
28547
  };
28421
- let parsedEditingSection = parseConfigSection(parsed, 'editing', [], ['new_record_default_language'], warnings, errors);
28548
+ let parsedEditingSection = parseConfigSection(parsed, 'editing', [], ['new_record_default_language', 'new_record_standard'], warnings, errors);
28422
28549
  if (parsedEditingSection !== null &&
28423
28550
  parsedEditingSection.new_record_default_language !== undefined) {
28424
28551
  parsedEditingSection = checkNewRecordDefaultLanguage(parsedEditingSection, warnings);
28425
28552
  }
28553
+ if (parsedEditingSection !== null &&
28554
+ parsedEditingSection.new_record_standard !== undefined) {
28555
+ parsedEditingSection = checkNewRecordStandard(parsedEditingSection, warnings);
28556
+ }
28426
28557
  editorConfig =
28427
28558
  parsedEditingSection === null
28428
28559
  ? null
28429
28560
  : {
28430
28561
  NEW_RECORD_DEFAULT_LANGUAGE: parsedEditingSection.new_record_default_language,
28562
+ NEW_RECORD_STANDARD: parsedEditingSection.new_record_standard,
28431
28563
  };
28432
28564
  customTranslations = parseTranslationsConfigSection(parsed, 'translations');
28433
28565
  if (errors.length) {
@@ -42369,6 +42501,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
42369
42501
  args: ['actionMenuButton', { read: ElementRef }]
42370
42502
  }] } });
42371
42503
 
42504
+ class FieldFocusDirective {
42505
+ constructor() {
42506
+ this.gnUiFieldFocusGlowClass = 'gn-ui-field-focus-glow';
42507
+ this.el = inject(ElementRef);
42508
+ }
42509
+ focusField() {
42510
+ setTimeout(() => {
42511
+ const host = this.el.nativeElement;
42512
+ const glowClass = this.gnUiFieldFocusGlowClass;
42513
+ host.classList.remove(glowClass);
42514
+ void host.offsetWidth;
42515
+ host.classList.add(glowClass);
42516
+ host.addEventListener('animationend', () => host.classList.remove(glowClass), { once: true });
42517
+ host.scrollIntoView({ behavior: 'smooth', block: 'start' });
42518
+ const target = host.querySelector('input, textarea, select, [contenteditable="true"]') ??
42519
+ host.querySelector('button:not([disabled]), [tabindex]:not([tabindex="-1"])');
42520
+ target?.focus({ preventScroll: true });
42521
+ });
42522
+ }
42523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FieldFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42524
+ 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 }); }
42525
+ }
42526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FieldFocusDirective, decorators: [{
42527
+ type: Directive,
42528
+ args: [{
42529
+ selector: '[gnUiFieldFocus]',
42530
+ standalone: true,
42531
+ exportAs: 'fieldFocus',
42532
+ }]
42533
+ }], propDecorators: { gnUiFieldFocusGlowClass: [{
42534
+ type: Input
42535
+ }] } });
42536
+
42372
42537
  class GenericKeywordsComponent {
42373
42538
  constructor() {
42374
42539
  this.platformService = inject(PlatformServiceInterface);
@@ -42972,6 +43137,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
42972
43137
  type: Output
42973
43138
  }] } });
42974
43139
 
43140
+ class ContactDetailsFormComponent {
43141
+ constructor() {
43142
+ this.contactChange = new EventEmitter();
43143
+ }
43144
+ emitContactChange() {
43145
+ this.contactChange.emit(this.contact);
43146
+ }
43147
+ handleOrganizationChange(change) {
43148
+ this.contact.organization = {
43149
+ ...(this.contact.organization ?? {}),
43150
+ ...change,
43151
+ };
43152
+ this.emitContactChange();
43153
+ }
43154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43155
+ 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 }); }
43156
+ }
43157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: ContactDetailsFormComponent, decorators: [{
43158
+ type: Component,
43159
+ 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" }]
43160
+ }], propDecorators: { contact: [{
43161
+ type: Input
43162
+ }], contactChange: [{
43163
+ type: Output
43164
+ }] } });
43165
+
42975
43166
  class FormFieldContactsComponent {
42976
43167
  constructor() {
42977
43168
  this.platformServiceInterface = inject(PlatformServiceInterface);
@@ -43023,6 +43214,10 @@ class FormFieldContactsComponent {
43023
43214
  this.contacts = contacts;
43024
43215
  this.valueChange.emit(contacts);
43025
43216
  }
43217
+ handleContactChanged(updatedContact, index) {
43218
+ const contacts = this.contacts.map((contact, i) => i === index ? updatedContact : contact);
43219
+ this.handleContactsChanged(contacts);
43220
+ }
43026
43221
  /**
43027
43222
  * gn-ui-autocomplete
43028
43223
  */
@@ -43044,7 +43239,7 @@ class FormFieldContactsComponent {
43044
43239
  this.subscription.unsubscribe();
43045
43240
  }
43046
43241
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldContactsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43047
- 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 }); }
43242
+ 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 }); }
43048
43243
  }
43049
43244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
43050
43245
  type: Component,
@@ -43053,10 +43248,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
43053
43248
  TranslateDirective,
43054
43249
  TranslatePipe,
43055
43250
  ContactCardComponent,
43251
+ ContactDetailsFormComponent,
43056
43252
  SortableListComponent,
43057
- ], 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" }]
43253
+ ], 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" }]
43058
43254
  }], ctorParameters: () => [], propDecorators: { value: [{
43059
43255
  type: Input
43256
+ }], modelSpecifier: [{
43257
+ type: Input
43060
43258
  }], valueChange: [{
43061
43259
  type: Output
43062
43260
  }] } });
@@ -43856,7 +44054,6 @@ class FormFieldConstraintsShortcutsComponent {
43856
44054
  this.editorFacade.setFieldVisibility({ model }, visible);
43857
44055
  });
43858
44056
  };
43859
- hideEmptyConstraints(this.legalConstraints$, 'legalConstraints');
43860
44057
  hideEmptyConstraints(this.securityConstraints$, 'securityConstraints');
43861
44058
  hideEmptyConstraints(this.otherConstraints$, 'otherConstraints');
43862
44059
  });
@@ -44120,6 +44317,7 @@ class FormFieldComponent {
44120
44317
  constructor() {
44121
44318
  this.valueChange = new EventEmitter();
44122
44319
  this.isOpenData = false;
44320
+ this.fieldFocus = inject(FieldFocusDirective);
44123
44321
  }
44124
44322
  toggleIsOpenData(event) {
44125
44323
  this.isOpenData = event;
@@ -44186,7 +44384,7 @@ class FormFieldComponent {
44186
44384
  }
44187
44385
  }
44188
44386
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44189
- 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 }); }
44387
+ 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 }); }
44190
44388
  }
44191
44389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: FormFieldComponent, decorators: [{
44192
44390
  type: Component,
@@ -44213,7 +44411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
44213
44411
  FormFieldSpatialToggleComponent,
44214
44412
  FormFieldTopicsComponent,
44215
44413
  TextFieldModule,
44216
- ], 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" }]
44414
+ ], 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"] }]
44217
44415
  }], propDecorators: { uniqueIdentifier: [{
44218
44416
  type: Input
44219
44417
  }], model: [{
@@ -44235,30 +44433,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
44235
44433
 
44236
44434
  class RecordFormComponent {
44237
44435
  constructor() {
44238
- this.anchorIdPrefix = 'gn-ui--field-';
44239
44436
  this.facade = inject(EditorFacade);
44240
- this.el = inject(ElementRef);
44241
44437
  this.subscription = new Subscription();
44242
44438
  this.recordUniqueIdentifier$ = this.facade.record$.pipe(map$2((record) => record.uniqueIdentifier));
44439
+ this.focusFieldWithPage$ = this.facade.focusedField$.pipe(switchMap$1(async (field) => [field, await this.getPageIndexForField(field)]));
44440
+ this.formFields = viewChildren(FormFieldComponent, ...(ngDevMode ? [{ debugName: "formFields" }] : []));
44441
+ }
44442
+ focusField(model) {
44443
+ const fields = this.formFields();
44444
+ const field = fields.find((f) => f.model === model);
44445
+ field?.fieldFocus.focusField();
44243
44446
  }
44244
44447
  ngOnInit() {
44245
- this.subscription.add(this.facade.focusedField$
44246
- .pipe(filter((field) => !!field), switchMap(async (field) => ({
44247
- field: field,
44248
- pageIndex: await this.getPageIndexForField(field),
44249
- })))
44250
- .subscribe(async ({ field, pageIndex }) => {
44251
- const currentPage = await firstValueFrom(this.facade.currentPage$);
44252
- if (pageIndex !== null && pageIndex !== currentPage) {
44253
- this.facade.setCurrentPage(pageIndex);
44254
- this.el.nativeElement.scrollIntoView({
44255
- behavior: 'instant',
44256
- block: 'start',
44257
- });
44448
+ this.subscription.add(this.focusFieldWithPage$
44449
+ .pipe(withLatestFrom$1(this.facade.currentPage$, ([field, fieldPage], currentPage) => [field, fieldPage, currentPage]))
44450
+ .subscribe(([field, fieldPage, currentPage]) => {
44451
+ if (fieldPage !== null && fieldPage !== currentPage) {
44452
+ this.facade.setCurrentPage(fieldPage);
44258
44453
  }
44259
- setTimeout(() => document
44260
- .getElementById(this.anchorIdPrefix + field)
44261
- ?.scrollIntoView({ behavior: 'instant', block: 'start' }));
44454
+ setTimeout(() => this.focusField(field));
44262
44455
  }));
44263
44456
  }
44264
44457
  ngOnDestroy() {
@@ -44282,12 +44475,12 @@ class RecordFormComponent {
44282
44475
  return pageIndex >= 0 ? pageIndex : null;
44283
44476
  }
44284
44477
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44285
- 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 [id]=\"anchorIdPrefix + field.config.model\"\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n }\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["gn-ui-form-field{scroll-margin-top:90px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["uniqueIdentifier", "model", "modelSpecifier", "componentName", "config", "value"], outputs: ["valueChange"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44478
+ 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 }); }
44286
44479
  }
44287
44480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: RecordFormComponent, decorators: [{
44288
44481
  type: Component,
44289
- 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 [id]=\"anchorIdPrefix + field.config.model\"\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n }\n }\n </div>\n </div>\n }\n }\n</div>\n", styles: ["gn-ui-form-field{scroll-margin-top:90px}\n"] }]
44290
- }] });
44482
+ 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" }]
44483
+ }], propDecorators: { formFields: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => FormFieldComponent), { isSignal: true }] }] } });
44291
44484
 
44292
44485
  function evaluate(expression) {
44293
44486
  if (expression.match(/^\${.*}$/)) {
@@ -44907,5 +45100,5 @@ const CHART_TYPE_VALUES = [
44907
45100
  * Generated bundle index. Do not edit.
44908
45101
  */
44909
45102
 
44910
- 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, 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 };
45103
+ export { ABOUT_SECTION, ADD_RESULTS, ADD_SEARCH, ANNEXES_SECTION, ASSOCIATED_RESOURCES_SECTION, AVAILABLE_LICENSES, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CHART_TYPE_VALUES, CLASSIFICATION_SECTION, CLEAR_ERROR, CLEAR_RESULTS, CONSTRAINTS_SHORTCUTS, CONTACTS, CONTACTS_FOR_RESOURCE_FIELD, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContactDetailsComponent, ContactPillComponent, ContentGhostComponent, CopyTextButtonComponent, DATA_MANAGERS_SECTION, DEFAULT_CONFIGURATION, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RECORD_CONVERTER, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DISABLE_DRAFT, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldFocusDirective, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEOGRAPHICAL_COVERAGE_SECTION, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, INSPIRE_TOPICS, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LEGAL_CONSTRAINTS_FIELD, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, MAX_UPLOAD_SIZE_MB, METADATA_LANGUAGE, METADATA_POINT_OF_CONTACT_SECTION, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, OPEN_DATA_LICENSE, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OTHER_CONSTRAINTS_FIELD, OnlineResourceCardComponent, OnlineServiceResourceInputComponent, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_ABSTRACT_FIELD, RECORD_DATASET_URL_TOKEN, RECORD_GRAPHICAL_OVERVIEW_FIELD, RECORD_KEYWORDS_FIELD, RECORD_LICENSE_FIELD, RECORD_ONLINE_LINK_RESOURCES, RECORD_ONLINE_RESOURCES, RECORD_RESOURCE_CREATED_FIELD, RECORD_RESOURCE_UPDATED_FIELD, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, RECORD_SPATIAL_EXTENTS_FIELD, RECORD_SPATIAL_TOGGLE_FIELD, RECORD_TEMPORAL_EXTENTS_FIELD, RECORD_TITLE_FIELD, RECORD_TOPICS_FIELD, RECORD_UNIQUE_IDENTIFIER_FIELD, RECORD_UPDATED_FIELD, RECORD_UPDATE_FREQUENCY_FIELD, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESOURCE_IDENTIFIER_FIELD, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordStatusValues, RecordsMetricsComponent, RecordsRepositoryInterface, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, ReusePresentationForms, RoleLabels, RoleValues, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SECURITY_CONSTRAINTS_FIELD, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SPATIAL_SCOPES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortByEnum, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TITLE_SECTION, TOPICS_SECTION, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, USE_AND_ACCESS_CONDITIONS_SECTION, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAddressLines, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIndividualDisplayName, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalEditorConfig, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReusePresentationForm, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setEditorConfiguration, setFieldVisibility, setFocusedField, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toIndividual, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateFrequencyCodeValues, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
44911
45104
  //# sourceMappingURL=geonetwork-ui.mjs.map