geonetwork-ui 2.4.0-dev.cec60ff1 → 2.4.0-dev.db93b4c4

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 (110) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  3. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  4. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +3 -3
  5. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +7 -2
  6. package/esm2022/libs/feature/editor/src/lib/+state/editor.models.mjs +1 -1
  7. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +7 -3
  8. package/esm2022/libs/feature/editor/src/lib/+state/editor.selectors.mjs +16 -6
  9. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +3 -3
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +1 -2
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +11 -7
  12. package/esm2022/libs/feature/editor/src/lib/expressions.mjs +1 -1
  13. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +143 -60
  14. package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +2 -0
  15. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +2 -1
  16. package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +4 -3
  17. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +42 -23
  18. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +13 -5
  19. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +49 -15
  20. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -3
  21. package/esm2022/translations/de.json +62 -30
  22. package/esm2022/translations/en.json +34 -2
  23. package/esm2022/translations/es.json +32 -0
  24. package/esm2022/translations/fr.json +35 -3
  25. package/esm2022/translations/it.json +32 -0
  26. package/esm2022/translations/nl.json +32 -0
  27. package/esm2022/translations/pt.json +32 -0
  28. package/fesm2022/geonetwork-ui.mjs +542 -150
  29. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  30. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  31. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +1 -0
  32. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  33. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +5 -0
  34. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  35. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +4 -4
  36. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  37. package/libs/feature/editor/src/lib/+state/editor.models.d.ts +8 -0
  38. package/libs/feature/editor/src/lib/+state/editor.models.d.ts.map +1 -1
  39. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts +4 -3
  40. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  41. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +4 -8
  42. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  43. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -1
  44. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  45. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +0 -1
  46. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  47. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +5 -7
  48. package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
  49. package/libs/feature/editor/src/lib/expressions.d.ts +1 -1
  50. package/libs/feature/editor/src/lib/expressions.d.ts.map +1 -1
  51. package/libs/feature/editor/src/lib/fields.config.d.ts +38 -2
  52. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  53. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +36 -0
  54. package/libs/feature/editor/src/lib/models/editor-config.model.d.ts.map +1 -0
  55. package/libs/feature/editor/src/lib/models/index.d.ts +1 -0
  56. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  57. package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
  58. package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
  59. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +4 -1
  60. package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
  61. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts +4 -1
  62. package/libs/feature/record/src/lib/data-view-share/data-view-share.component.d.ts.map +1 -1
  63. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +4 -1
  64. package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
  65. package/package.json +1 -1
  66. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +1 -0
  67. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +1 -0
  68. package/src/libs/common/fixtures/src/index.ts +2 -0
  69. package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +156 -0
  70. package/src/libs/common/fixtures/src/lib/editor/index.ts +1 -0
  71. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +5 -0
  72. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +2 -2
  73. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +9 -1
  74. package/src/libs/feature/editor/src/lib/+state/editor.models.ts +11 -0
  75. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +11 -5
  76. package/src/libs/feature/editor/src/lib/+state/editor.selectors.ts +22 -8
  77. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +9 -9
  78. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -1
  79. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +0 -1
  80. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +51 -11
  81. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +15 -8
  82. package/src/libs/feature/editor/src/lib/expressions.ts +1 -1
  83. package/src/libs/feature/editor/src/lib/fields.config.ts +175 -61
  84. package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +53 -0
  85. package/src/libs/feature/editor/src/lib/models/index.ts +1 -0
  86. package/src/libs/feature/editor/src/lib/services/editor.service.ts +8 -4
  87. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +36 -19
  88. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +6 -2
  89. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +11 -0
  90. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +59 -12
  91. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +29 -29
  92. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.css +31 -0
  93. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +15 -0
  94. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +38 -0
  95. package/translations/de.json +62 -30
  96. package/translations/en.json +34 -2
  97. package/translations/es.json +32 -0
  98. package/translations/fr.json +35 -3
  99. package/translations/it.json +32 -0
  100. package/translations/nl.json +32 -0
  101. package/translations/pt.json +32 -0
  102. package/translations/sk.json +32 -0
  103. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.mjs +0 -2
  104. package/esm2022/libs/feature/editor/src/lib/models/fields.model.mjs +0 -2
  105. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts +0 -26
  106. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.d.ts.map +0 -1
  107. package/libs/feature/editor/src/lib/models/fields.model.d.ts +0 -15
  108. package/libs/feature/editor/src/lib/models/fields.model.d.ts.map +0 -1
  109. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.model.ts +0 -43
  110. package/src/libs/feature/editor/src/lib/models/fields.model.ts +0 -29
@@ -2176,6 +2176,7 @@ const mapKeywords = (thesauri, language) => {
2176
2176
  keywords.push({
2177
2177
  label: selectTranslatedValue(keyword, language),
2178
2178
  type: getKeywordTypeFromKeywordTypeCode(rawThesaurus.theme),
2179
+ ...(keyword.link && { key: keyword.link }),
2179
2180
  ...(thesaurus && { thesaurus }),
2180
2181
  });
2181
2182
  }
@@ -17472,38 +17473,70 @@ var de = {
17472
17473
  "downloads.format.unknown": "unbekannt",
17473
17474
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
17474
17475
  dropFile: dropFile$6,
17475
- "editor.record.form.keywords": "Schlagwörter",
17476
+ "editor.record.form.bottomButtons.comeBackLater": "",
17477
+ "editor.record.form.bottomButtons.next": "",
17478
+ "editor.record.form.bottomButtons.previous": "",
17479
+ "editor.record.form.field.abstract": "",
17480
+ "editor.record.form.field.keywords": "Schlagwörter",
17481
+ "editor.record.form.field.license": "Lizenz",
17482
+ "editor.record.form.field.recordUpdated": "",
17483
+ "editor.record.form.field.resourceUpdated": "",
17484
+ "editor.record.form.field.temporalExtents": "",
17485
+ "editor.record.form.field.title": "",
17486
+ "editor.record.form.field.uniqueIdentifier": "",
17487
+ "editor.record.form.field.updateFrequency": "",
17488
+ "editor.record.form.abstract": "Kurzbeschreibung",
17489
+ "editor.record.form.keywords": "Schlüsselwörter",
17476
17490
  "editor.record.form.license": "Lizenz",
17477
- "editor.record.form.license.cc-by": "",
17478
- "editor.record.form.license.cc-by-sa": "",
17479
- "editor.record.form.license.cc-zero": "",
17480
- "editor.record.form.license.etalab": "",
17481
- "editor.record.form.license.etalab-v2": "",
17482
- "editor.record.form.license.odbl": "",
17483
- "editor.record.form.license.odc-by": "",
17484
- "editor.record.form.license.pddl": "",
17491
+ "editor.record.form.license.cc-by": "Creative Commons CC-BY",
17492
+ "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
17493
+ "editor.record.form.license.cc-zero": "Creative Commons CC-0",
17494
+ "editor.record.form.license.etalab": "Offene Lizenz (Etalab)",
17495
+ "editor.record.form.license.etalab-v2": "Offene Lizenz v2.0 (Etalab)",
17496
+ "editor.record.form.license.odbl": "Open Data Commons ODbL",
17497
+ "editor.record.form.license.odc-by": "Open Data Commons ODC-By",
17498
+ "editor.record.form.license.pddl": "Open Data Commons PDDL",
17485
17499
  "editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
17486
- "editor.record.form.resourceUpdated": "",
17487
- "editor.record.form.temporalExtents": "",
17488
- "editor.record.form.temporalExtents.addDate": "",
17489
- "editor.record.form.temporalExtents.addRange": "",
17490
- "editor.record.form.temporalExtents.date": "",
17491
- "editor.record.form.temporalExtents.range": "",
17492
- "editor.record.form.updateFrequency": "",
17493
- "editor.record.form.updateFrequency.planned": "",
17494
- "editor.record.loadError.body": "",
17495
- "editor.record.loadError.closeMessage": "",
17496
- "editor.record.loadError.title": "",
17497
- "editor.record.publish": "",
17498
- "editor.record.publishError.body": "",
17499
- "editor.record.publishError.closeMessage": "",
17500
- "editor.record.publishError.title": "",
17501
- "editor.record.publishSuccess.body": "",
17502
- "editor.record.publishSuccess.title": "",
17503
- "editor.record.saveStatus.asDraftOnly": "",
17504
- "editor.record.saveStatus.draftWithChangesPending": "",
17505
- "editor.record.saveStatus.recordUpToDate": "",
17506
- "editor.record.upToDate": "",
17500
+ "editor.record.form.page.accessAndContact": "",
17501
+ "editor.record.form.page.description": "",
17502
+ "editor.record.form.page.ressources": "",
17503
+ "editor.record.form.section.about.description": "",
17504
+ "editor.record.form.section.about.label": "",
17505
+ "editor.record.form.section.annexes.label": "",
17506
+ "editor.record.form.section.associatedResources.description": "",
17507
+ "editor.record.form.section.associatedResources.label": "",
17508
+ "editor.record.form.section.classification.description": "",
17509
+ "editor.record.form.section.classification.label": "",
17510
+ "editor.record.form.section.dataManagers.description": "",
17511
+ "editor.record.form.section.dataManagers.label": "",
17512
+ "editor.record.form.section.dataPointOfContact.description": "",
17513
+ "editor.record.form.section.dataPointOfContact.label": "",
17514
+ "editor.record.form.section.geographicalCoverage.label": "",
17515
+ "editor.record.form.section.useAndAccessConditions.label": "",
17516
+ "editor.record.form.metadata.title": "Metadaten-Titel",
17517
+ "editor.record.form.record.updated": "Datensatz zuletzt aktualisiert",
17518
+ "editor.record.form.resourceUpdated": "Letztes Aktualisierungsdatum",
17519
+ "editor.record.form.temporalExtents": "Zeitlicher Umfang",
17520
+ "editor.record.form.temporalExtents.addDate": "Zeitpunkt",
17521
+ "editor.record.form.temporalExtents.addRange": "Zeitraum",
17522
+ "editor.record.form.temporalExtents.date": "Datum",
17523
+ "editor.record.form.temporalExtents.range": "Datumsbereich",
17524
+ "editor.record.form.unique.identifier": "Eindeutige Kennung (ID)",
17525
+ "editor.record.form.updateFrequency": "Aktualisierungshäufigkeit",
17526
+ "editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
17527
+ "editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
17528
+ "editor.record.loadError.closeMessage": "Verstanden",
17529
+ "editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
17530
+ "editor.record.publish": "Diesen Datensatz veröffentlichen",
17531
+ "editor.record.publishError.body": "Der Datensatz konnte nicht veröffentlicht werden:",
17532
+ "editor.record.publishError.closeMessage": "Verstanden",
17533
+ "editor.record.publishError.title": "Fehler beim Veröffentlichen des Datensatzes",
17534
+ "editor.record.publishSuccess.body": "Der Datensatz wurde erfolgreich veröffentlicht!",
17535
+ "editor.record.publishSuccess.title": "Veröffentlichung erfolgreich",
17536
+ "editor.record.saveStatus.asDraftOnly": "Nur als Entwurf gespeichert - noch nicht veröffentlicht",
17537
+ "editor.record.saveStatus.draftWithChangesPending": "Als Entwurf gespeichert - Änderungen stehen aus",
17538
+ "editor.record.saveStatus.recordUpToDate": "Datensatz ist auf dem neuesten Stand",
17539
+ "editor.record.upToDate": "Dieser Datensatz ist auf dem neuesten Stand",
17507
17540
  "externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
17508
17541
  "facets.block.title.OrgForResource": "Organisation",
17509
17542
  "facets.block.title.availableInServices": "Verfügbar für",
@@ -17903,6 +17936,19 @@ var en = {
17903
17936
  "downloads.format.unknown": "unknown",
17904
17937
  "downloads.wfs.featuretype.not.found": "The layer was not found",
17905
17938
  dropFile: dropFile$5,
17939
+ "editor.record.form.bottomButtons.comeBackLater": "Come back later",
17940
+ "editor.record.form.bottomButtons.next": "Next",
17941
+ "editor.record.form.bottomButtons.previous": "Previous",
17942
+ "editor.record.form.field.abstract": "Abstract",
17943
+ "editor.record.form.field.keywords": "Keywords",
17944
+ "editor.record.form.field.license": "License",
17945
+ "editor.record.form.field.recordUpdated": "Record Updated",
17946
+ "editor.record.form.field.resourceUpdated": "Resource Updated",
17947
+ "editor.record.form.field.temporalExtents": "Temporal extents",
17948
+ "editor.record.form.field.title": "Metadata title",
17949
+ "editor.record.form.field.uniqueIdentifier": "Unique identifier",
17950
+ "editor.record.form.field.updateFrequency": "Update frequency",
17951
+ "editor.record.form.abstract": "Abstract",
17906
17952
  "editor.record.form.keywords": "Keywords",
17907
17953
  "editor.record.form.license": "License",
17908
17954
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
@@ -17914,12 +17960,31 @@ var en = {
17914
17960
  "editor.record.form.license.odc-by": "Open Data Commons ODC-By",
17915
17961
  "editor.record.form.license.pddl": "Open Data Commons PDDL",
17916
17962
  "editor.record.form.license.unknown": "Unknown or absent",
17963
+ "editor.record.form.page.accessAndContact": "Access and contact",
17964
+ "editor.record.form.page.description": "Resource description",
17965
+ "editor.record.form.page.ressources": "Resources",
17966
+ "editor.record.form.section.about.description": "This section describes the resource.",
17967
+ "editor.record.form.section.about.label": "About the resource",
17968
+ "editor.record.form.section.annexes.label": "Annexes",
17969
+ "editor.record.form.section.associatedResources.description": "Drop files here to associate them with the resource.",
17970
+ "editor.record.form.section.associatedResources.label": "Associated resources",
17971
+ "editor.record.form.section.classification.description": "The classification has an impact on the access to the data.",
17972
+ "editor.record.form.section.classification.label": "Classification",
17973
+ "editor.record.form.section.dataManagers.description": "The data managers are responsible for the data.",
17974
+ "editor.record.form.section.dataManagers.label": "Data managers",
17975
+ "editor.record.form.section.dataPointOfContact.description": "This information concerns the metadata.",
17976
+ "editor.record.form.section.dataPointOfContact.label": "Data point of contact",
17977
+ "editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
17978
+ "editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
17979
+ "editor.record.form.metadata.title": "Metadata title",
17980
+ "editor.record.form.record.updated": "Record updated",
17917
17981
  "editor.record.form.resourceUpdated": "Last update date",
17918
17982
  "editor.record.form.temporalExtents": "Temporal extent",
17919
17983
  "editor.record.form.temporalExtents.addDate": "Time instant",
17920
17984
  "editor.record.form.temporalExtents.addRange": "Time period",
17921
17985
  "editor.record.form.temporalExtents.date": "Date",
17922
17986
  "editor.record.form.temporalExtents.range": "Date range",
17987
+ "editor.record.form.unique.identifier": "Unique identifier",
17923
17988
  "editor.record.form.updateFrequency": "Update frequency",
17924
17989
  "editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
17925
17990
  "editor.record.loadError.body": "The record could not be loaded:",
@@ -18003,8 +18068,8 @@ var en = {
18003
18068
  "organisations.sortBy.nameDesc": "Name Z → A",
18004
18069
  "organisations.sortBy.recordCountAsc": "Publications 0 → 9",
18005
18070
  "organisations.sortBy.recordCountDesc": "Publications 9 → 0",
18006
- "organization.details.lastPublishedDatasets": "Last published datasets",
18007
- "organization.details.lastPublishedDatasets.searchAllButton": "Search all",
18071
+ "organization.details.lastPublishedDatasets": "",
18072
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
18008
18073
  "organization.details.mailContact": "Contact by email",
18009
18074
  "organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
18010
18075
  "pagination.nextPage": "Next page",
@@ -18334,6 +18399,19 @@ var es = {
18334
18399
  "downloads.format.unknown": "",
18335
18400
  "downloads.wfs.featuretype.not.found": "",
18336
18401
  dropFile: dropFile$4,
18402
+ "editor.record.form.bottomButtons.comeBackLater": "",
18403
+ "editor.record.form.bottomButtons.next": "",
18404
+ "editor.record.form.bottomButtons.previous": "",
18405
+ "editor.record.form.field.abstract": "",
18406
+ "editor.record.form.field.keywords": "",
18407
+ "editor.record.form.field.license": "",
18408
+ "editor.record.form.field.recordUpdated": "",
18409
+ "editor.record.form.field.resourceUpdated": "",
18410
+ "editor.record.form.field.temporalExtents": "",
18411
+ "editor.record.form.field.title": "",
18412
+ "editor.record.form.field.uniqueIdentifier": "",
18413
+ "editor.record.form.field.updateFrequency": "",
18414
+ "editor.record.form.abstract": "",
18337
18415
  "editor.record.form.keywords": "",
18338
18416
  "editor.record.form.license": "",
18339
18417
  "editor.record.form.license.cc-by": "",
@@ -18345,12 +18423,31 @@ var es = {
18345
18423
  "editor.record.form.license.odc-by": "",
18346
18424
  "editor.record.form.license.pddl": "",
18347
18425
  "editor.record.form.license.unknown": "",
18426
+ "editor.record.form.page.accessAndContact": "",
18427
+ "editor.record.form.page.description": "",
18428
+ "editor.record.form.page.ressources": "",
18429
+ "editor.record.form.section.about.description": "",
18430
+ "editor.record.form.section.about.label": "",
18431
+ "editor.record.form.section.annexes.label": "",
18432
+ "editor.record.form.section.associatedResources.description": "",
18433
+ "editor.record.form.section.associatedResources.label": "",
18434
+ "editor.record.form.section.classification.description": "",
18435
+ "editor.record.form.section.classification.label": "",
18436
+ "editor.record.form.section.dataManagers.description": "",
18437
+ "editor.record.form.section.dataManagers.label": "",
18438
+ "editor.record.form.section.dataPointOfContact.description": "",
18439
+ "editor.record.form.section.dataPointOfContact.label": "",
18440
+ "editor.record.form.section.geographicalCoverage.label": "",
18441
+ "editor.record.form.section.useAndAccessConditions.label": "",
18442
+ "editor.record.form.metadata.title": "",
18443
+ "editor.record.form.record.updated": "",
18348
18444
  "editor.record.form.resourceUpdated": "",
18349
18445
  "editor.record.form.temporalExtents": "",
18350
18446
  "editor.record.form.temporalExtents.addDate": "",
18351
18447
  "editor.record.form.temporalExtents.addRange": "",
18352
18448
  "editor.record.form.temporalExtents.date": "",
18353
18449
  "editor.record.form.temporalExtents.range": "",
18450
+ "editor.record.form.unique.identifier": "",
18354
18451
  "editor.record.form.updateFrequency": "",
18355
18452
  "editor.record.form.updateFrequency.planned": "",
18356
18453
  "editor.record.loadError.body": "",
@@ -18765,7 +18862,20 @@ var fr = {
18765
18862
  "downloads.format.unknown": "inconnu",
18766
18863
  "downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
18767
18864
  dropFile: dropFile$3,
18768
- "editor.record.form.keywords": "Mots-clés",
18865
+ "editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
18866
+ "editor.record.form.bottomButtons.next": "Suivant",
18867
+ "editor.record.form.bottomButtons.previous": "Précédent",
18868
+ "editor.record.form.field.abstract": "Résumé",
18869
+ "editor.record.form.field.keywords": "Mots-clés",
18870
+ "editor.record.form.field.license": "Licence",
18871
+ "editor.record.form.field.recordUpdated": "Date de dernière révision",
18872
+ "editor.record.form.field.resourceUpdated": "Date de dernière révision",
18873
+ "editor.record.form.field.temporalExtents": "Étendue temporelle",
18874
+ "editor.record.form.field.title": "Titre",
18875
+ "editor.record.form.field.uniqueIdentifier": "Identifiant unique",
18876
+ "editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
18877
+ "editor.record.form.abstract": "",
18878
+ "editor.record.form.keywords": "",
18769
18879
  "editor.record.form.license": "Licence",
18770
18880
  "editor.record.form.license.cc-by": "",
18771
18881
  "editor.record.form.license.cc-by-sa": "",
@@ -18776,12 +18886,31 @@ var fr = {
18776
18886
  "editor.record.form.license.odc-by": "",
18777
18887
  "editor.record.form.license.pddl": "",
18778
18888
  "editor.record.form.license.unknown": "Non-reconnue ou absente",
18889
+ "editor.record.form.page.accessAndContact": "Acces et contact",
18890
+ "editor.record.form.page.description": "Description de la ressource",
18891
+ "editor.record.form.page.ressources": "Ressources",
18892
+ "editor.record.form.section.about.description": "Ces informations concernent la donnée.",
18893
+ "editor.record.form.section.about.label": "A propos de la ressource",
18894
+ "editor.record.form.section.annexes.label": "Annexes",
18895
+ "editor.record.form.section.associatedResources.description": "Déposez les jeux de données associées à cette fiche de métadonnée.",
18896
+ "editor.record.form.section.associatedResources.label": "Ressources associees",
18897
+ "editor.record.form.section.classification.description": "La classification a un impact sur la recherche du jeux de données.",
18898
+ "editor.record.form.section.classification.label": "Classification",
18899
+ "editor.record.form.section.dataManagers.description": "Cette information concerne la donnée.",
18900
+ "editor.record.form.section.dataManagers.label": "Responsables de la donnee",
18901
+ "editor.record.form.section.dataPointOfContact.description": "Cette information concerne la fiche de métadonnée.",
18902
+ "editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
18903
+ "editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
18904
+ "editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
18905
+ "editor.record.form.metadata.title": "",
18906
+ "editor.record.form.record.updated": "",
18779
18907
  "editor.record.form.resourceUpdated": "Date de dernière révision",
18780
18908
  "editor.record.form.temporalExtents": "Étendue temporelle",
18781
18909
  "editor.record.form.temporalExtents.addDate": "Date déterminée",
18782
18910
  "editor.record.form.temporalExtents.addRange": "Période de temps",
18783
18911
  "editor.record.form.temporalExtents.date": "Date concernée",
18784
18912
  "editor.record.form.temporalExtents.range": "Période concernée",
18913
+ "editor.record.form.unique.identifier": "",
18785
18914
  "editor.record.form.updateFrequency": "Fréquence de mise à jour",
18786
18915
  "editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
18787
18916
  "editor.record.loadError.body": "",
@@ -18865,8 +18994,8 @@ var fr = {
18865
18994
  "organisations.sortBy.nameDesc": "Nom Z → A",
18866
18995
  "organisations.sortBy.recordCountAsc": "Données 0 → 9",
18867
18996
  "organisations.sortBy.recordCountDesc": "Données 9 → 0",
18868
- "organization.details.lastPublishedDatasets": "Dernières données publiées",
18869
- "organization.details.lastPublishedDatasets.searchAllButton": "Rechercher tous",
18997
+ "organization.details.lastPublishedDatasets": "",
18998
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
18870
18999
  "organization.details.mailContact": "Contacter par mail",
18871
19000
  "organization.header.recordCount": "{count, plural, =0{donnée} one{donnée} other{données}}",
18872
19001
  "pagination.nextPage": "Page suivante",
@@ -19196,6 +19325,19 @@ var it = {
19196
19325
  "downloads.format.unknown": "sconosciuto",
19197
19326
  "downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
19198
19327
  dropFile: dropFile$2,
19328
+ "editor.record.form.bottomButtons.comeBackLater": "",
19329
+ "editor.record.form.bottomButtons.next": "",
19330
+ "editor.record.form.bottomButtons.previous": "",
19331
+ "editor.record.form.field.abstract": "",
19332
+ "editor.record.form.field.keywords": "",
19333
+ "editor.record.form.field.license": "Licenza",
19334
+ "editor.record.form.field.recordUpdated": "",
19335
+ "editor.record.form.field.resourceUpdated": "",
19336
+ "editor.record.form.field.temporalExtents": "",
19337
+ "editor.record.form.field.title": "",
19338
+ "editor.record.form.field.uniqueIdentifier": "",
19339
+ "editor.record.form.field.updateFrequency": "",
19340
+ "editor.record.form.abstract": "",
19199
19341
  "editor.record.form.keywords": "",
19200
19342
  "editor.record.form.license": "Licenza",
19201
19343
  "editor.record.form.license.cc-by": "",
@@ -19207,12 +19349,31 @@ var it = {
19207
19349
  "editor.record.form.license.odc-by": "",
19208
19350
  "editor.record.form.license.pddl": "",
19209
19351
  "editor.record.form.license.unknown": "Non riconosciuta o assente",
19352
+ "editor.record.form.page.accessAndContact": "",
19353
+ "editor.record.form.page.description": "",
19354
+ "editor.record.form.page.ressources": "",
19355
+ "editor.record.form.section.about.description": "",
19356
+ "editor.record.form.section.about.label": "",
19357
+ "editor.record.form.section.annexes.label": "",
19358
+ "editor.record.form.section.associatedResources.description": "",
19359
+ "editor.record.form.section.associatedResources.label": "",
19360
+ "editor.record.form.section.classification.description": "",
19361
+ "editor.record.form.section.classification.label": "",
19362
+ "editor.record.form.section.dataManagers.description": "",
19363
+ "editor.record.form.section.dataManagers.label": "",
19364
+ "editor.record.form.section.dataPointOfContact.description": "",
19365
+ "editor.record.form.section.dataPointOfContact.label": "",
19366
+ "editor.record.form.section.geographicalCoverage.label": "",
19367
+ "editor.record.form.section.useAndAccessConditions.label": "",
19368
+ "editor.record.form.metadata.title": "",
19369
+ "editor.record.form.record.updated": "",
19210
19370
  "editor.record.form.resourceUpdated": "",
19211
19371
  "editor.record.form.temporalExtents": "",
19212
19372
  "editor.record.form.temporalExtents.addDate": "",
19213
19373
  "editor.record.form.temporalExtents.addRange": "",
19214
19374
  "editor.record.form.temporalExtents.date": "",
19215
19375
  "editor.record.form.temporalExtents.range": "",
19376
+ "editor.record.form.unique.identifier": "",
19216
19377
  "editor.record.form.updateFrequency": "",
19217
19378
  "editor.record.form.updateFrequency.planned": "",
19218
19379
  "editor.record.loadError.body": "",
@@ -19627,6 +19788,19 @@ var nl = {
19627
19788
  "downloads.format.unknown": "",
19628
19789
  "downloads.wfs.featuretype.not.found": "",
19629
19790
  dropFile: dropFile$1,
19791
+ "editor.record.form.bottomButtons.comeBackLater": "",
19792
+ "editor.record.form.bottomButtons.next": "",
19793
+ "editor.record.form.bottomButtons.previous": "",
19794
+ "editor.record.form.field.abstract": "",
19795
+ "editor.record.form.field.keywords": "",
19796
+ "editor.record.form.field.license": "",
19797
+ "editor.record.form.field.recordUpdated": "",
19798
+ "editor.record.form.field.resourceUpdated": "",
19799
+ "editor.record.form.field.temporalExtents": "",
19800
+ "editor.record.form.field.title": "",
19801
+ "editor.record.form.field.uniqueIdentifier": "",
19802
+ "editor.record.form.field.updateFrequency": "",
19803
+ "editor.record.form.abstract": "",
19630
19804
  "editor.record.form.keywords": "",
19631
19805
  "editor.record.form.license": "",
19632
19806
  "editor.record.form.license.cc-by": "",
@@ -19638,12 +19812,31 @@ var nl = {
19638
19812
  "editor.record.form.license.odc-by": "",
19639
19813
  "editor.record.form.license.pddl": "",
19640
19814
  "editor.record.form.license.unknown": "",
19815
+ "editor.record.form.page.accessAndContact": "",
19816
+ "editor.record.form.page.description": "",
19817
+ "editor.record.form.page.ressources": "",
19818
+ "editor.record.form.section.about.description": "",
19819
+ "editor.record.form.section.about.label": "",
19820
+ "editor.record.form.section.annexes.label": "",
19821
+ "editor.record.form.section.associatedResources.description": "",
19822
+ "editor.record.form.section.associatedResources.label": "",
19823
+ "editor.record.form.section.classification.description": "",
19824
+ "editor.record.form.section.classification.label": "",
19825
+ "editor.record.form.section.dataManagers.description": "",
19826
+ "editor.record.form.section.dataManagers.label": "",
19827
+ "editor.record.form.section.dataPointOfContact.description": "",
19828
+ "editor.record.form.section.dataPointOfContact.label": "",
19829
+ "editor.record.form.section.geographicalCoverage.label": "",
19830
+ "editor.record.form.section.useAndAccessConditions.label": "",
19831
+ "editor.record.form.metadata.title": "",
19832
+ "editor.record.form.record.updated": "",
19641
19833
  "editor.record.form.resourceUpdated": "",
19642
19834
  "editor.record.form.temporalExtents": "",
19643
19835
  "editor.record.form.temporalExtents.addDate": "",
19644
19836
  "editor.record.form.temporalExtents.addRange": "",
19645
19837
  "editor.record.form.temporalExtents.date": "",
19646
19838
  "editor.record.form.temporalExtents.range": "",
19839
+ "editor.record.form.unique.identifier": "",
19647
19840
  "editor.record.form.updateFrequency": "",
19648
19841
  "editor.record.form.updateFrequency.planned": "",
19649
19842
  "editor.record.loadError.body": "",
@@ -20058,6 +20251,19 @@ var pt = {
20058
20251
  "downloads.format.unknown": "",
20059
20252
  "downloads.wfs.featuretype.not.found": "",
20060
20253
  dropFile: dropFile,
20254
+ "editor.record.form.bottomButtons.comeBackLater": "",
20255
+ "editor.record.form.bottomButtons.next": "",
20256
+ "editor.record.form.bottomButtons.previous": "",
20257
+ "editor.record.form.field.abstract": "",
20258
+ "editor.record.form.field.keywords": "",
20259
+ "editor.record.form.field.license": "",
20260
+ "editor.record.form.field.recordUpdated": "",
20261
+ "editor.record.form.field.resourceUpdated": "",
20262
+ "editor.record.form.field.temporalExtents": "",
20263
+ "editor.record.form.field.title": "",
20264
+ "editor.record.form.field.uniqueIdentifier": "",
20265
+ "editor.record.form.field.updateFrequency": "",
20266
+ "editor.record.form.abstract": "",
20061
20267
  "editor.record.form.keywords": "",
20062
20268
  "editor.record.form.license": "",
20063
20269
  "editor.record.form.license.cc-by": "",
@@ -20069,12 +20275,31 @@ var pt = {
20069
20275
  "editor.record.form.license.odc-by": "",
20070
20276
  "editor.record.form.license.pddl": "",
20071
20277
  "editor.record.form.license.unknown": "",
20278
+ "editor.record.form.page.accessAndContact": "",
20279
+ "editor.record.form.page.description": "",
20280
+ "editor.record.form.page.ressources": "",
20281
+ "editor.record.form.section.about.description": "",
20282
+ "editor.record.form.section.about.label": "",
20283
+ "editor.record.form.section.annexes.label": "",
20284
+ "editor.record.form.section.associatedResources.description": "",
20285
+ "editor.record.form.section.associatedResources.label": "",
20286
+ "editor.record.form.section.classification.description": "",
20287
+ "editor.record.form.section.classification.label": "",
20288
+ "editor.record.form.section.dataManagers.description": "",
20289
+ "editor.record.form.section.dataManagers.label": "",
20290
+ "editor.record.form.section.dataPointOfContact.description": "",
20291
+ "editor.record.form.section.dataPointOfContact.label": "",
20292
+ "editor.record.form.section.geographicalCoverage.label": "",
20293
+ "editor.record.form.section.useAndAccessConditions.label": "",
20294
+ "editor.record.form.metadata.title": "",
20295
+ "editor.record.form.record.updated": "",
20072
20296
  "editor.record.form.resourceUpdated": "",
20073
20297
  "editor.record.form.temporalExtents": "",
20074
20298
  "editor.record.form.temporalExtents.addDate": "",
20075
20299
  "editor.record.form.temporalExtents.addRange": "",
20076
20300
  "editor.record.form.temporalExtents.date": "",
20077
20301
  "editor.record.form.temporalExtents.range": "",
20302
+ "editor.record.form.unique.identifier": "",
20078
20303
  "editor.record.form.updateFrequency": "",
20079
20304
  "editor.record.form.updateFrequency.planned": "",
20080
20305
  "editor.record.loadError.body": "",
@@ -27029,11 +27254,11 @@ class ApiCardComponent {
27029
27254
  }
27030
27255
  }
27031
27256
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27032
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27257
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27033
27258
  }
27034
27259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
27035
27260
  type: Component,
27036
- args: [{ selector: 'gn-ui-api-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n" }]
27261
+ args: [{ selector: 'gn-ui-api-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden cursor-default\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n </div>\n</div>\n" }]
27037
27262
  }], propDecorators: { link: [{
27038
27263
  type: Input
27039
27264
  }], currentLink: [{
@@ -33939,37 +34164,54 @@ const GN_UI_VERSION = new InjectionToken('gnUiVersion');
33939
34164
 
33940
34165
  const WEB_COMPONENT_EMBEDDER_URL = new InjectionToken('webComponentEmbedderUrl');
33941
34166
  class DataViewPermalinkComponent {
34167
+ set viewType(value) {
34168
+ this.viewType$.next(value);
34169
+ }
33942
34170
  constructor(config, wcEmbedderBaseUrl, version, facade) {
33943
34171
  this.config = config;
33944
34172
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
33945
34173
  this.version = version;
33946
34174
  this.facade = facade;
34175
+ this.viewType$ = new BehaviorSubject('map');
33947
34176
  this.permalinkUrl$ = combineLatest([
34177
+ this.viewType$,
33948
34178
  this.facade.chartConfig$,
33949
34179
  this.facade.metadata$,
33950
- ]).pipe(map$2(([config, metadata]) => {
33951
- if (config) {
33952
- const { aggregation, xProperty, yProperty, chartType } = config;
33953
- const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
33954
- url.searchParams.set('v', `${this.version}`);
33955
- url.searchParams.append('e', `gn-dataset-view-chart`);
33956
- url.searchParams.append('a', `api-url=${this.config.basePath}`);
33957
- url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
33958
- url.searchParams.append('a', `primary-color=#0f4395`);
33959
- url.searchParams.append('a', `secondary-color=#8bc832`);
33960
- url.searchParams.append('a', `main-color=#555`);
33961
- url.searchParams.append('a', `background-color=#fdfbff`);
33962
- url.searchParams.append('a', `aggregation=${aggregation}`);
33963
- url.searchParams.append('a', `x-property=${xProperty}`);
33964
- url.searchParams.append('a', `y-property=${yProperty}`);
33965
- url.searchParams.append('a', `chart-type=${chartType}`);
33966
- return url.toString();
34180
+ ]).pipe(map$2(([viewType, config, metadata]) => {
34181
+ const url = new URL(`${this.wcEmbedderBaseUrl}`, window.location.origin);
34182
+ url.searchParams.set('v', `${this.version}`);
34183
+ if (viewType === 'chart') {
34184
+ if (config) {
34185
+ const { aggregation, xProperty, yProperty, chartType } = config;
34186
+ url.searchParams.append('e', `gn-dataset-view-chart`);
34187
+ url.searchParams.append('a', `aggregation=${aggregation}`);
34188
+ url.searchParams.append('a', `x-property=${xProperty}`);
34189
+ url.searchParams.append('a', `y-property=${yProperty}`);
34190
+ url.searchParams.append('a', `chart-type=${chartType}`);
34191
+ }
34192
+ else {
34193
+ return '';
34194
+ }
33967
34195
  }
33968
- return '';
34196
+ else if (viewType === 'table') {
34197
+ // table
34198
+ url.searchParams.append('e', `gn-dataset-view-table`);
34199
+ }
34200
+ else {
34201
+ // map
34202
+ url.searchParams.append('e', `gn-dataset-view-map`);
34203
+ }
34204
+ url.searchParams.append('a', `api-url=${this.config.basePath}`);
34205
+ url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
34206
+ url.searchParams.append('a', `primary-color=#0f4395`);
34207
+ url.searchParams.append('a', `secondary-color=#8bc832`);
34208
+ url.searchParams.append('a', `main-color=#555`);
34209
+ url.searchParams.append('a', `background-color=#fdfbff`);
34210
+ return url.toString();
33969
34211
  }));
33970
34212
  }
33971
34213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: GN_UI_VERSION }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
33972
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33973
34215
  }
33974
34216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
33975
34217
  type: Component,
@@ -33985,37 +34227,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33985
34227
  }] }, { type: undefined, decorators: [{
33986
34228
  type: Inject,
33987
34229
  args: [GN_UI_VERSION]
33988
- }] }, { type: MdViewFacade }]; } });
34230
+ }] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
34231
+ type: Input
34232
+ }] } });
33989
34233
 
33990
34234
  class DataViewWebComponentComponent {
34235
+ set viewType(value) {
34236
+ this.viewType$.next(value);
34237
+ }
33991
34238
  constructor(config, version, facade) {
33992
34239
  this.config = config;
33993
34240
  this.version = version;
33994
34241
  this.facade = facade;
33995
- this.webComponentHtml$ = combineLatest(this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([config, metadata]) => {
33996
- if (config) {
33997
- const { aggregation, xProperty, yProperty, chartType } = config;
34242
+ this.viewType$ = new BehaviorSubject('map');
34243
+ this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
34244
+ if (viewType === 'chart') {
34245
+ if (config) {
34246
+ const { aggregation, xProperty, yProperty, chartType } = config;
34247
+ return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
34248
+ <gn-dataset-view-chart
34249
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
34250
+ dataset-id="${metadata.uniqueIdentifier}"
34251
+ aggregation="${aggregation}"
34252
+ x-property="${xProperty}"
34253
+ y-property="${yProperty}"
34254
+ chart-type="${chartType}"
34255
+ primary-color="#0f4395"
34256
+ secondary-color="#8bc832"
34257
+ main-color="#555"
34258
+ background-color="#fdfbff"
34259
+ main-font="'Inter', sans-serif"
34260
+ title-font="'DM Serif Display', serif"
34261
+ ></gn-dataset-view-chart>`;
34262
+ }
34263
+ return '';
34264
+ }
34265
+ else if (viewType === 'table') {
34266
+ return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
34267
+ <gn-dataset-view-table
34268
+ api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
34269
+ dataset-id="${metadata.uniqueIdentifier}"
34270
+ primary-color="#0f4395"
34271
+ secondary-color="#8bc832"
34272
+ main-color="#555"
34273
+ background-color="#fdfbff"
34274
+ main-font="'Inter', sans-serif"
34275
+ title-font="'DM Serif Display', serif"
34276
+ ></gn-dataset-view-table>`;
34277
+ }
34278
+ else {
33998
34279
  return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${this.version}/gn-wc.js"></script>
33999
- <gn-dataset-view-chart
34280
+ <gn-dataset-view-map
34000
34281
  api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
34001
34282
  dataset-id="${metadata.uniqueIdentifier}"
34002
- aggregation="${aggregation}"
34003
- x-property="${xProperty}"
34004
- y-property="${yProperty}"
34005
- chart-type="${chartType}"
34006
34283
  primary-color="#0f4395"
34007
34284
  secondary-color="#8bc832"
34008
34285
  main-color="#555"
34009
34286
  background-color="#fdfbff"
34010
34287
  main-font="'Inter', sans-serif"
34011
34288
  title-font="'DM Serif Display', serif"
34012
- ></gn-dataset-view-chart>`;
34289
+ ></gn-dataset-view-map>`;
34013
34290
  }
34014
- return '';
34015
34291
  }));
34016
34292
  }
34017
34293
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: GN_UI_VERSION }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
34018
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34019
34295
  }
34020
34296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
34021
34297
  type: Component,
@@ -34026,24 +34302,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
34026
34302
  }] }, { type: undefined, decorators: [{
34027
34303
  type: Inject,
34028
34304
  args: [GN_UI_VERSION]
34029
- }] }, { type: MdViewFacade }]; } });
34305
+ }] }, { type: MdViewFacade }]; }, propDecorators: { viewType: [{
34306
+ type: Input
34307
+ }] } });
34030
34308
 
34031
34309
  class DataViewShareComponent {
34310
+ set viewType(value) {
34311
+ this._viewType = value;
34312
+ }
34313
+ get viewType() {
34314
+ return this._viewType;
34315
+ }
34032
34316
  constructor(wcEmbedderBaseUrl) {
34033
34317
  this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
34034
34318
  }
34035
34319
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
34036
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34320
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$5.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34037
34321
  }
34038
34322
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
34039
34323
  type: Component,
34040
- args: [{ selector: 'gn-ui-data-view-share', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"] }]
34324
+ args: [{ selector: 'gn-ui-data-view-share', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink\n [viewType]=\"viewType\"\n ></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component\n [viewType]=\"viewType\"\n ></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"] }]
34041
34325
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
34042
34326
  type: Optional
34043
34327
  }, {
34044
34328
  type: Inject,
34045
34329
  args: [WEB_COMPONENT_EMBEDDER_URL]
34046
- }] }]; } });
34330
+ }] }]; }, propDecorators: { viewType: [{
34331
+ type: Input
34332
+ }] } });
34047
34333
 
34048
34334
  class FeatureRecordModule {
34049
34335
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureRecordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -34133,75 +34419,159 @@ const saveRecord = createAction('[Editor] Save record');
34133
34419
  const saveRecordSuccess = createAction('[Editor] Save record success');
34134
34420
  const saveRecordFailure = createAction('[Editor] Save record failure', props());
34135
34421
  const draftSaveSuccess = createAction('[Editor] Draft save success');
34422
+ const setCurrentPage = createAction('[Editor] Set current page', props());
34136
34423
 
34137
- const DEFAULT_FIELDS = [
34138
- {
34139
- model: 'title',
34140
- formFieldConfig: {
34141
- labelKey: 'Metadata title',
34142
- type: 'text',
34143
- },
34424
+ /**
34425
+ * This file contains the configuration of the fields that will be displayed in the editor.
34426
+ * To add a new field, you need to create a new EditorField object in the fields part of this file.
34427
+ * Then add it to the corresponding section in the sections part of this file.
34428
+ * Finally, add the section to the corresponding page in the pages part of this file.
34429
+ */
34430
+ /************************************************************
34431
+ *************** FIELDS *****************
34432
+ ************************************************************
34433
+ */
34434
+ const RECORD_LICENSE_FIELD = {
34435
+ model: 'licenses',
34436
+ formFieldConfig: {
34437
+ labelKey: marker('editor.record.form.field.license'),
34144
34438
  },
34145
- {
34146
- model: 'abstract',
34147
- formFieldConfig: {
34148
- labelKey: 'Abstract',
34149
- type: 'rich',
34150
- },
34439
+ };
34440
+ const RECORD_KEYWORDS_FIELD = {
34441
+ model: 'keywords',
34442
+ formFieldConfig: {
34443
+ labelKey: marker('editor.record.form.field.keywords'),
34151
34444
  },
34152
- {
34153
- model: 'uniqueIdentifier',
34154
- formFieldConfig: {
34155
- labelKey: 'Unique identifier',
34156
- type: 'text',
34157
- locked: true,
34158
- },
34445
+ };
34446
+ const RECORD_UNIQUE_IDENTIFIER_FIELD = {
34447
+ model: 'uniqueIdentifier',
34448
+ formFieldConfig: {
34449
+ labelKey: marker('editor.record.form.field.uniqueIdentifier'),
34450
+ locked: true,
34159
34451
  },
34160
- {
34161
- model: 'recordUpdated',
34162
- formFieldConfig: {
34163
- labelKey: 'Record Updated',
34164
- type: 'text',
34165
- locked: true,
34166
- },
34167
- onSaveProcess: '${dateNow()}',
34452
+ };
34453
+ const RECORD_RESOURCE_UPDATED_FIELD = {
34454
+ model: 'resourceUpdated',
34455
+ formFieldConfig: {
34456
+ labelKey: marker('editor.record.form.field.resourceUpdated'),
34168
34457
  },
34169
- {
34170
- model: 'licenses',
34171
- formFieldConfig: {
34172
- labelKey: marker('editor.record.form.license'),
34173
- type: 'list',
34174
- },
34458
+ };
34459
+ const RECORD_UPDATED_FIELD = {
34460
+ model: 'recordUpdated',
34461
+ formFieldConfig: {
34462
+ labelKey: marker('editor.record.form.field.recordUpdated'),
34463
+ locked: true,
34175
34464
  },
34176
- {
34177
- model: 'resourceUpdated',
34178
- formFieldConfig: {
34179
- labelKey: marker('editor.record.form.resourceUpdated'),
34180
- type: 'date',
34181
- },
34465
+ onSaveProcess: '${dateNow()}',
34466
+ };
34467
+ const RECORD_UPDATE_FREQUENCY_FIELD = {
34468
+ model: 'updateFrequency',
34469
+ formFieldConfig: {
34470
+ labelKey: marker('editor.record.form.field.updateFrequency'),
34182
34471
  },
34183
- {
34184
- model: 'updateFrequency',
34185
- formFieldConfig: {
34186
- labelKey: marker('editor.record.form.updateFrequency'),
34187
- type: 'text',
34188
- },
34472
+ };
34473
+ const RECORD_TEMPORAL_EXTENTS_FIELD = {
34474
+ model: 'temporalExtents',
34475
+ formFieldConfig: {
34476
+ labelKey: marker('editor.record.form.field.temporalExtents'),
34189
34477
  },
34190
- {
34191
- model: 'temporalExtents',
34192
- formFieldConfig: {
34193
- labelKey: marker('editor.record.form.temporalExtents'),
34194
- type: 'list',
34195
- },
34478
+ };
34479
+ const RECORD_TITLE_FIELD = {
34480
+ model: 'title',
34481
+ formFieldConfig: {
34482
+ labelKey: marker('editor.record.form.field.title'),
34196
34483
  },
34197
- {
34198
- model: 'keywords',
34199
- formFieldConfig: {
34200
- labelKey: marker('editor.record.form.keywords'),
34201
- type: 'list',
34202
- },
34484
+ };
34485
+ const RECORD_ABSTRACT_FIELD = {
34486
+ model: 'abstract',
34487
+ formFieldConfig: {
34488
+ labelKey: marker('editor.record.form.field.abstract'),
34203
34489
  },
34204
- ];
34490
+ };
34491
+ /************************************************************
34492
+ *************** SECTIONS *****************
34493
+ ************************************************************
34494
+ */
34495
+ const TITLE_SECTION = {
34496
+ hidden: false,
34497
+ fields: [RECORD_TITLE_FIELD, RECORD_ABSTRACT_FIELD],
34498
+ };
34499
+ const ABOUT_SECTION = {
34500
+ labelKey: marker('editor.record.form.section.about.label'),
34501
+ descriptionKey: marker('editor.record.form.section.about.description'),
34502
+ hidden: false,
34503
+ fields: [
34504
+ RECORD_UNIQUE_IDENTIFIER_FIELD,
34505
+ RECORD_RESOURCE_UPDATED_FIELD,
34506
+ RECORD_UPDATED_FIELD,
34507
+ RECORD_UPDATE_FREQUENCY_FIELD,
34508
+ RECORD_TEMPORAL_EXTENTS_FIELD,
34509
+ ],
34510
+ };
34511
+ const GEOGRAPHICAL_COVERAGE_SECTION = {
34512
+ labelKey: marker('editor.record.form.section.geographicalCoverage.label'),
34513
+ hidden: false,
34514
+ fields: [],
34515
+ };
34516
+ const ASSOCIATED_RESOURCES_SECTION = {
34517
+ labelKey: marker('editor.record.form.section.associatedResources.label'),
34518
+ descriptionKey: marker('editor.record.form.section.associatedResources.description'),
34519
+ hidden: false,
34520
+ fields: [],
34521
+ };
34522
+ const ANNEXES_SECTION = {
34523
+ labelKey: marker('editor.record.form.section.annexes.label'),
34524
+ hidden: false,
34525
+ fields: [],
34526
+ };
34527
+ const CLASSIFICATION_SECTION = {
34528
+ labelKey: marker('editor.record.form.section.classification.label'),
34529
+ descriptionKey: marker('editor.record.form.section.classification.description'),
34530
+ hidden: false,
34531
+ fields: [RECORD_KEYWORDS_FIELD],
34532
+ };
34533
+ const USE_AND_ACCESS_CONDITIONS_SECTION = {
34534
+ labelKey: marker('editor.record.form.section.useAndAccessConditions.label'),
34535
+ hidden: false,
34536
+ fields: [RECORD_LICENSE_FIELD],
34537
+ };
34538
+ const DATA_MANAGERS_SECTION = {
34539
+ labelKey: marker('editor.record.form.section.dataManagers.label'),
34540
+ descriptionKey: marker('editor.record.form.section.dataManagers.description'),
34541
+ hidden: false,
34542
+ fields: [],
34543
+ };
34544
+ const DATA_POINT_OF_CONTACT_SECTION = {
34545
+ labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
34546
+ descriptionKey: marker('editor.record.form.section.dataPointOfContact.description'),
34547
+ hidden: false,
34548
+ fields: [],
34549
+ };
34550
+ /************************************************************
34551
+ *************** PAGES *****************
34552
+ ************************************************************
34553
+ */
34554
+ const DEFAULT_CONFIGURATION = {
34555
+ pages: [
34556
+ {
34557
+ labelKey: marker('editor.record.form.page.description'),
34558
+ sections: [TITLE_SECTION, ABOUT_SECTION, GEOGRAPHICAL_COVERAGE_SECTION],
34559
+ },
34560
+ {
34561
+ labelKey: marker('editor.record.form.page.ressources'),
34562
+ sections: [ASSOCIATED_RESOURCES_SECTION, ANNEXES_SECTION],
34563
+ },
34564
+ {
34565
+ labelKey: marker('editor.record.form.page.accessAndContact'),
34566
+ sections: [
34567
+ CLASSIFICATION_SECTION,
34568
+ USE_AND_ACCESS_CONDITIONS_SECTION,
34569
+ DATA_MANAGERS_SECTION,
34570
+ DATA_POINT_OF_CONTACT_SECTION,
34571
+ ],
34572
+ },
34573
+ ],
34574
+ };
34205
34575
 
34206
34576
  const EDITOR_FEATURE_KEY = 'editor';
34207
34577
  const initialEditorState = {
@@ -34211,7 +34581,8 @@ const initialEditorState = {
34211
34581
  saving: false,
34212
34582
  saveError: null,
34213
34583
  changedSinceSave: false,
34214
- fieldsConfig: DEFAULT_FIELDS,
34584
+ editorConfig: DEFAULT_CONFIGURATION,
34585
+ currentPage: 0,
34215
34586
  };
34216
34587
  const reducer = createReducer(initialEditorState, on(openRecord, (state, { record, recordSource, alreadySavedOnce }) => ({
34217
34588
  ...state,
@@ -34241,6 +34612,9 @@ const reducer = createReducer(initialEditorState, on(openRecord, (state, { recor
34241
34612
  })), on(markRecordAsChanged, (state) => ({
34242
34613
  ...state,
34243
34614
  changedSinceSave: true,
34615
+ })), on(setCurrentPage, (state, { page }) => ({
34616
+ ...state,
34617
+ currentPage: page,
34244
34618
  })));
34245
34619
  function editorReducer(state, action) {
34246
34620
  return reducer(state, action);
@@ -34253,11 +34627,21 @@ const selectRecordSaving = createSelector(selectEditorState, (state) => state.sa
34253
34627
  const selectRecordSaveError = createSelector(selectEditorState, (state) => state.saveError);
34254
34628
  const selectRecordChangedSinceSave = createSelector(selectEditorState, (state) => state.changedSinceSave);
34255
34629
  const selectRecordAlreadySavedOnce = createSelector(selectEditorState, (state) => state.alreadySavedOnce);
34256
- const selectRecordFieldsConfig = createSelector(selectEditorState, (state) => state.fieldsConfig);
34257
- const selectRecordFields = createSelector(selectEditorState, (state) => state.fieldsConfig.map((fieldConfig) => ({
34258
- config: fieldConfig,
34259
- value: state.record?.[fieldConfig.model] ?? null,
34260
- })));
34630
+ const selectEditorConfig = createSelector(selectEditorState, (state) => state.editorConfig);
34631
+ const selectCurrentPage = createSelector(selectEditorState, (state) => state.currentPage);
34632
+ const selectRecordSections = createSelector(selectEditorState, (state) => {
34633
+ const currentPage = state.editorConfig.pages[state.currentPage];
34634
+ if (!currentPage) {
34635
+ return [];
34636
+ }
34637
+ return currentPage.sections.map((section) => ({
34638
+ ...section,
34639
+ fieldsWithValues: section.fields.map((fieldConfig) => ({
34640
+ config: fieldConfig,
34641
+ value: state.record?.[fieldConfig.model] ?? null,
34642
+ })),
34643
+ }));
34644
+ });
34261
34645
 
34262
34646
  class EditorFacade {
34263
34647
  constructor() {
@@ -34270,8 +34654,10 @@ class EditorFacade {
34270
34654
  this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
34271
34655
  this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
34272
34656
  this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
34273
- this.recordFields$ = this.store.pipe(select(selectRecordFields));
34657
+ this.currentSections$ = this.store.pipe(select(selectRecordSections));
34274
34658
  this.draftSaveSuccess$ = this.actions$.pipe(ofType(draftSaveSuccess));
34659
+ this.currentPage$ = this.store.pipe(select(selectCurrentPage));
34660
+ this.editorConfig$ = this.store.pipe(select(selectEditorConfig));
34275
34661
  }
34276
34662
  openRecord(record, recordSource, alreadySavedOnce) {
34277
34663
  this.store.dispatch(openRecord({ record, recordSource, alreadySavedOnce }));
@@ -34282,6 +34668,9 @@ class EditorFacade {
34282
34668
  updateRecordField(field, value) {
34283
34669
  this.store.dispatch(updateRecordField({ field, value }));
34284
34670
  }
34671
+ setCurrentPage(page) {
34672
+ this.store.dispatch(setCurrentPage({ page }));
34673
+ }
34285
34674
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34286
34675
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorFacade }); }
34287
34676
  }
@@ -34309,12 +34698,13 @@ class EditorService {
34309
34698
  // returns the record as it was when saved, alongside its source
34310
34699
  saveRecord(record, fieldsConfig, generateNewUniqueIdentifier = false) {
34311
34700
  const savedRecord = { ...record };
34701
+ const fields = fieldsConfig.pages.flatMap((page) => page.sections.flatMap((section) => section.fields));
34312
34702
  // run onSave processes
34313
- for (const field of fieldsConfig) {
34703
+ for (const field of fields) {
34314
34704
  if (field.onSaveProcess && field.model) {
34315
34705
  const evaluator = evaluate(field.onSaveProcess);
34316
34706
  savedRecord[field.model] = evaluator({
34317
- config: field,
34707
+ model: field.model,
34318
34708
  value: record[field.model],
34319
34709
  });
34320
34710
  }
@@ -34351,7 +34741,7 @@ class EditorEffects {
34351
34741
  this.editorService = inject(EditorService);
34352
34742
  this.recordsRepository = inject(RecordsRepositoryInterface);
34353
34743
  this.store = inject(Store);
34354
- this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectRecordFieldsConfig), this.store.select(selectRecordAlreadySavedOnce)), switchMap$1(([, record, fieldsConfig, alreadySavedOnce]) => this.editorService
34744
+ this.saveRecord$ = createEffect(() => this.actions$.pipe(ofType(saveRecord), withLatestFrom$1(this.store.select(selectRecord), this.store.select(selectEditorConfig), this.store.select(selectRecordAlreadySavedOnce)), switchMap$1(([, record, fieldsConfig, alreadySavedOnce]) => this.editorService
34355
34745
  .saveRecord(record, fieldsConfig, !alreadySavedOnce)
34356
34746
  .pipe(switchMap$1(([record, recordSource]) => of(saveRecordSuccess(), openRecord({
34357
34747
  record,
@@ -35304,7 +35694,7 @@ class FormFieldComponent {
35304
35694
  return this.model === 'title' || this.model === 'abstract';
35305
35695
  }
35306
35696
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35697
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35308
35698
  }
35309
35699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
35310
35700
  type: Component,
@@ -35327,7 +35717,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35327
35717
  FormFieldArrayComponent,
35328
35718
  FormFieldKeywordsComponent,
35329
35719
  TranslateModule,
35330
- ], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n" }]
35720
+ ], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey! | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n</ng-template>\n" }]
35331
35721
  }], ctorParameters: function () { return []; }, propDecorators: { model: [{
35332
35722
  type: Input
35333
35723
  }], config: [{
@@ -35344,23 +35734,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35344
35734
  class RecordFormComponent {
35345
35735
  constructor(facade) {
35346
35736
  this.facade = facade;
35347
- this.fields$ = this.facade.recordFields$;
35348
35737
  }
35349
- handleFieldValueChange(field, newValue) {
35350
- if (!field.config.model) {
35738
+ handleFieldValueChange(model, newValue) {
35739
+ if (!model) {
35351
35740
  return;
35352
35741
  }
35353
- this.facade.updateRecordField(field.config.model, newValue);
35742
+ this.facade.updateRecordField(model, newValue);
35354
35743
  }
35355
35744
  fieldTracker(index, field) {
35356
35745
  return field.config.model;
35357
35746
  }
35747
+ sectionTracker(index, section) {
35748
+ return section.labelKey;
35749
+ }
35358
35750
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
35359
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["model", "config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-petrona text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["model", "config", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35360
35752
  }
35361
35753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
35362
35754
  type: Component,
35363
- args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
35755
+ args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-petrona text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n" }]
35364
35756
  }], ctorParameters: function () { return [{ type: EditorFacade }]; } });
35365
35757
 
35366
35758
  const ROUTER_STATE_KEY = 'router';
@@ -35743,5 +36135,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35743
36135
  * Generated bundle index. Do not edit.
35744
36136
  */
35745
36137
 
35746
- export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectRecordSource, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
36138
+ export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isBeginningOfResults, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setCurrentPage, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
35747
36139
  //# sourceMappingURL=geonetwork-ui.mjs.map