geonetwork-ui 2.4.0-dev.e8fc61cb → 2.4.0-dev.fe59f179

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 (140) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  5. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  6. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  7. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  8. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  9. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  11. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  12. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  13. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -2
  14. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +8 -12
  15. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  16. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  17. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  18. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  19. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  20. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  21. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  22. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  23. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  24. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  25. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  26. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +2 -3
  27. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  28. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
  29. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  30. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  31. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  32. package/esm2022/translations/de.json +19 -3
  33. package/esm2022/translations/en.json +22 -3
  34. package/esm2022/translations/es.json +19 -3
  35. package/esm2022/translations/fr.json +23 -4
  36. package/esm2022/translations/it.json +19 -3
  37. package/esm2022/translations/nl.json +19 -3
  38. package/esm2022/translations/pt.json +19 -3
  39. package/fesm2022/geonetwork-ui.mjs +292 -133
  40. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  41. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  42. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  43. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  44. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  45. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  46. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  47. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  48. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  49. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  50. package/libs/feature/catalog/src/index.d.ts +1 -0
  51. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  52. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  53. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  54. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  55. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  56. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  57. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  58. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  59. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  60. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  61. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  62. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  63. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  64. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  65. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  66. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  67. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  68. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  69. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  70. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  71. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  72. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  73. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  74. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  75. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  76. package/libs/ui/elements/src/index.d.ts +0 -1
  77. package/libs/ui/elements/src/index.d.ts.map +1 -1
  78. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  79. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  80. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  81. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  82. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +18 -19
  83. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  84. package/libs/ui/layout/src/index.d.ts +1 -0
  85. package/libs/ui/layout/src/index.d.ts.map +1 -1
  86. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  87. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  88. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  91. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  92. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  93. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  94. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  95. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  96. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  97. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  98. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  99. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  100. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  101. package/src/libs/feature/catalog/src/index.ts +1 -0
  102. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  103. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  104. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  105. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  106. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  107. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +8 -6
  108. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +42 -31
  109. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  110. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  111. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  112. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  113. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  114. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  115. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  116. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  117. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  118. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  119. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  120. package/src/libs/ui/elements/src/index.ts +0 -1
  121. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  122. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  123. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  124. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  125. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -3
  126. package/src/libs/ui/layout/src/index.ts +1 -0
  127. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  128. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  129. package/translations/de.json +19 -3
  130. package/translations/en.json +22 -3
  131. package/translations/es.json +19 -3
  132. package/translations/fr.json +23 -4
  133. package/translations/it.json +19 -3
  134. package/translations/nl.json +19 -3
  135. package/translations/pt.json +19 -3
  136. package/translations/sk.json +20 -4
  137. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  138. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  139. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +0 -0
  140. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +0 -0
@@ -8,7 +8,7 @@ import * as i1$1 from '@ngx-translate/core';
8
8
  import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
9
9
  import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
10
10
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
11
- import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, share, pairwise, mergeMap, defaultIfEmpty, scan } from 'rxjs/operators';
11
+ import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, delay, distinctUntilChanged, debounceTime, finalize, throttleTime, first as first$1, share, pairwise, mergeMap, defaultIfEmpty, toArray } from 'rxjs/operators';
12
12
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
13
13
  import * as i1$3 from '@angular/common';
14
14
  import { CommonModule, NgFor, NgComponentOutlet, NgOptimizedImage, NgForOf } from '@angular/common';
@@ -17309,7 +17309,7 @@ var de = {
17309
17309
  "Add Layer As": "",
17310
17310
  "button.login": "",
17311
17311
  "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
17312
- "catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17312
+ "catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17313
17313
  "chart.aggregation.average": "Durchschnitt",
17314
17314
  "chart.aggregation.count": "Anzahl",
17315
17315
  "chart.aggregation.max": "Maximum",
@@ -17412,6 +17412,15 @@ var de = {
17412
17412
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
17413
17413
  "datafeeder.upload.uploadButton": "Hochladen",
17414
17414
  "datafeeder.validation.encoding": "Codierung",
17415
+ "datafeeder.validation.csv.delimiter": "",
17416
+ "datafeeder.validation.csv.delimiter.comma": "",
17417
+ "datafeeder.validation.csv.delimiter.semicolon": "",
17418
+ "datafeeder.validation.csv.lat.field": "",
17419
+ "datafeeder.validation.csv.lng.field": "",
17420
+ "datafeeder.validation.csv.quote.double": "",
17421
+ "datafeeder.validation.csv.quote.none": "",
17422
+ "datafeeder.validation.csv.quote.simple": "",
17423
+ "datafeeder.validation.csv.quoteChar": "",
17415
17424
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
17416
17425
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
17417
17426
  "datafeeder.validation.projection": "Raumbezugssystem:",
@@ -17424,7 +17433,7 @@ var de = {
17424
17433
  "datahub.header.lastRecords": "Die neuesten",
17425
17434
  "datahub.header.myfavorites": "Meine Favoriten",
17426
17435
  "datahub.header.news": "Startseite",
17427
- "datahub.header.organisations": "Organisationen",
17436
+ "datahub.header.organizations": "Organisationen",
17428
17437
  "datahub.header.popularRecords": "Die beliebtesten",
17429
17438
  "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
17430
17439
  "datahub.news.contact.contactus": "Kontaktieren Sie uns",
@@ -17460,6 +17469,7 @@ var de = {
17460
17469
  "downloads.format.unknown": "unbekannt",
17461
17470
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
17462
17471
  dropFile: dropFile$6,
17472
+ "editor.record.form.keywords": "Schlagwörter",
17463
17473
  "editor.record.form.license": "Lizenz",
17464
17474
  "editor.record.form.license.cc-by": "",
17465
17475
  "editor.record.form.license.cc-by-sa": "",
@@ -17559,6 +17569,10 @@ var de = {
17559
17569
  "organisations.sortBy.nameDesc": "Name Z → A",
17560
17570
  "organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
17561
17571
  "organisations.sortBy.recordCountDesc": "Veröffentlichungen 9 → 0",
17572
+ "organization.details.lastPublishedDatasets": "",
17573
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
17574
+ "organization.details.mailContact": "",
17575
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
17562
17576
  "pagination.nextPage": "Nächste Seite",
17563
17577
  "pagination.page": "Seite",
17564
17578
  "pagination.pageOf": "von",
@@ -17596,7 +17610,7 @@ var de = {
17596
17610
  "record.metadata.preview": "Vorschau",
17597
17611
  "record.metadata.producer": "Datenproduzent",
17598
17612
  "record.metadata.publication": "Veröffentlichungsdatum",
17599
- "record.metadata.publications": "Veröffentlichungen",
17613
+ "record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
17600
17614
  "record.metadata.quality": "Metadatenqualität",
17601
17615
  "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
17602
17616
  "record.metadata.quality.contact.success": "Kontakt angegeben",
@@ -17656,6 +17670,8 @@ var de = {
17656
17670
  "results.sortBy.relevancy": "Relevanz",
17657
17671
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
17658
17672
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
17673
+ "search.error.organizationHasNoDataset": "",
17674
+ "search.error.organizationNotFound": "",
17659
17675
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
17660
17676
  "search.error.recordHasnolink": "",
17661
17677
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
@@ -17719,7 +17735,7 @@ var en = {
17719
17735
  "Add Layer As": "",
17720
17736
  "button.login": "Log in",
17721
17737
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
17722
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
17738
+ "catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
17723
17739
  "chart.aggregation.average": "average",
17724
17740
  "chart.aggregation.count": "count",
17725
17741
  "chart.aggregation.max": "max",
@@ -17763,6 +17779,8 @@ var en = {
17763
17779
  "datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
17764
17780
  "datafeeder.analysisProgressBar.title": "Analyze in progress",
17765
17781
  "datafeeder.datasetValidation.datasetInformation": "The provided dataset contains {number} entities",
17782
+ "datafeeder.datasetValidationCsv.lineNumbers": "Sample of the first 5 lines* of the dataset:",
17783
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "*The table must display the first 5 lines (excluding the header)<br>If this is not the case, check that the file is correctly formatted",
17766
17784
  "datafeeder.datasetValidation.submitButton": "OK, my data are correct",
17767
17785
  "datafeeder.datasetValidation.title": "Make sure your data are correct",
17768
17786
  "datafeeder.datasetValidation.unknown": " - ",
@@ -17793,6 +17811,7 @@ var en = {
17793
17811
  "datafeeder.publishSuccess.geonetworkRecord": "Metadata record",
17794
17812
  "datafeeder.publishSuccess.illustration.title": "Done, all is good!",
17795
17813
  "datafeeder.publishSuccess.mapViewer": "Map viewer",
17814
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
17796
17815
  "datafeeder.publishSuccess.subtitle": "View your data in:",
17797
17816
  "datafeeder.publishSuccess.title": "Congratulation! \n Your dataset has been published",
17798
17817
  "datafeeder.publishSuccess.uploadAnotherData": "Upload another dataset",
@@ -17821,6 +17840,15 @@ var en = {
17821
17840
  "datafeeder.upload.maxFileSize": "Maximum file size is {size} MB",
17822
17841
  "datafeeder.upload.title": "Upload your dataset",
17823
17842
  "datafeeder.upload.uploadButton": "Upload",
17843
+ "datafeeder.validation.csv.delimiter": "Delimiter",
17844
+ "datafeeder.validation.csv.delimiter.comma": "Comma",
17845
+ "datafeeder.validation.csv.delimiter.semicolon": "Semicolon",
17846
+ "datafeeder.validation.csv.lat.field": "Latitude column",
17847
+ "datafeeder.validation.csv.lng.field": "Longitude column",
17848
+ "datafeeder.validation.csv.quote.double": "Double quote",
17849
+ "datafeeder.validation.csv.quote.none": "None",
17850
+ "datafeeder.validation.csv.quote.simple": "Simple quote",
17851
+ "datafeeder.validation.csv.quoteChar": "Quote separator",
17824
17852
  "datafeeder.validation.encoding": "encoding",
17825
17853
  "datafeeder.validation.extent.title": "Here is the dataset extent",
17826
17854
  "datafeeder.validation.extent.title.unknown": "The projection system is unknown",
@@ -17834,7 +17862,7 @@ var en = {
17834
17862
  "datahub.header.lastRecords": "The latest",
17835
17863
  "datahub.header.myfavorites": "My favorites",
17836
17864
  "datahub.header.news": "Home",
17837
- "datahub.header.organisations": "Organisations",
17865
+ "datahub.header.organizations": "Organizations",
17838
17866
  "datahub.header.popularRecords": "The most popular",
17839
17867
  "datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
17840
17868
  "datahub.news.contact.contactus": "Contact us",
@@ -17870,6 +17898,7 @@ var en = {
17870
17898
  "downloads.format.unknown": "unknown",
17871
17899
  "downloads.wfs.featuretype.not.found": "The layer was not found",
17872
17900
  dropFile: dropFile$5,
17901
+ "editor.record.form.keywords": "Keywords",
17873
17902
  "editor.record.form.license": "License",
17874
17903
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
17875
17904
  "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
@@ -17969,6 +17998,10 @@ var en = {
17969
17998
  "organisations.sortBy.nameDesc": "Name Z → A",
17970
17999
  "organisations.sortBy.recordCountAsc": "Publications 0 → 9",
17971
18000
  "organisations.sortBy.recordCountDesc": "Publications 9 → 0",
18001
+ "organization.details.lastPublishedDatasets": "Last published datasets",
18002
+ "organization.details.lastPublishedDatasets.searchAllButton": "Search all",
18003
+ "organization.details.mailContact": "Contact by email",
18004
+ "organization.header.recordCount": "{count, plural, =0{data} one{data} other{datas}}",
17972
18005
  "pagination.nextPage": "Next page",
17973
18006
  "pagination.page": "page",
17974
18007
  "pagination.pageOf": "of",
@@ -18006,7 +18039,7 @@ var en = {
18006
18039
  "record.metadata.preview": "Preview",
18007
18040
  "record.metadata.producer": "Data producer",
18008
18041
  "record.metadata.publication": "Date of publication",
18009
- "record.metadata.publications": "publications",
18042
+ "record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
18010
18043
  "record.metadata.quality": "Metadata Quality",
18011
18044
  "record.metadata.quality.contact.failed": "Contact is not specified",
18012
18045
  "record.metadata.quality.contact.success": "Contact is specified",
@@ -18066,6 +18099,8 @@ var en = {
18066
18099
  "results.sortBy.relevancy": "Relevancy",
18067
18100
  "search.autocomplete.error": "Suggestions could not be fetched:",
18068
18101
  "search.error.couldNotReachApi": "The API could not be reached",
18102
+ "search.error.organizationHasNoDataset": "This organization has no dataset yet.",
18103
+ "search.error.organizationNotFound": "This organization could not be found.",
18069
18104
  "search.error.receivedError": "An error was received",
18070
18105
  "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
18071
18106
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
@@ -18129,7 +18164,7 @@ var es = {
18129
18164
  "Add Layer As": "",
18130
18165
  "button.login": "",
18131
18166
  "catalog.figures.datasets": "conjuntos de datos",
18132
- "catalog.figures.organisations": "organizaciones",
18167
+ "catalog.figures.organizations": "organizaciones",
18133
18168
  "chart.aggregation.average": "promedio",
18134
18169
  "chart.aggregation.count": "conteo",
18135
18170
  "chart.aggregation.max": "máximo",
@@ -18231,6 +18266,15 @@ var es = {
18231
18266
  "datafeeder.upload.maxFileSize": "",
18232
18267
  "datafeeder.upload.title": "",
18233
18268
  "datafeeder.upload.uploadButton": "",
18269
+ "datafeeder.validation.csv.delimiter": "",
18270
+ "datafeeder.validation.csv.delimiter.comma": "Coma",
18271
+ "datafeeder.validation.csv.delimiter.semicolon": "Punto y coma",
18272
+ "datafeeder.validation.csv.lat.field": "",
18273
+ "datafeeder.validation.csv.lng.field": "",
18274
+ "datafeeder.validation.csv.quote.double": "Comillas dobles",
18275
+ "datafeeder.validation.csv.quote.none": "Ninguno",
18276
+ "datafeeder.validation.csv.quote.simple": "Comillas simples",
18277
+ "datafeeder.validation.csv.quoteChar": "",
18234
18278
  "datafeeder.validation.encoding": "",
18235
18279
  "datafeeder.validation.extent.title": "",
18236
18280
  "datafeeder.validation.extent.title.unknown": "",
@@ -18244,7 +18288,7 @@ var es = {
18244
18288
  "datahub.header.lastRecords": "",
18245
18289
  "datahub.header.myfavorites": "",
18246
18290
  "datahub.header.news": "",
18247
- "datahub.header.organisations": "",
18291
+ "datahub.header.organizations": "",
18248
18292
  "datahub.header.popularRecords": "",
18249
18293
  "datahub.header.title.html": "",
18250
18294
  "datahub.news.contact.contactus": "",
@@ -18280,6 +18324,7 @@ var es = {
18280
18324
  "downloads.format.unknown": "",
18281
18325
  "downloads.wfs.featuretype.not.found": "",
18282
18326
  dropFile: dropFile$4,
18327
+ "editor.record.form.keywords": "",
18283
18328
  "editor.record.form.license": "",
18284
18329
  "editor.record.form.license.cc-by": "",
18285
18330
  "editor.record.form.license.cc-by-sa": "",
@@ -18379,6 +18424,10 @@ var es = {
18379
18424
  "organisations.sortBy.nameDesc": "",
18380
18425
  "organisations.sortBy.recordCountAsc": "",
18381
18426
  "organisations.sortBy.recordCountDesc": "",
18427
+ "organization.details.lastPublishedDatasets": "",
18428
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
18429
+ "organization.details.mailContact": "",
18430
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
18382
18431
  "pagination.nextPage": "",
18383
18432
  "pagination.page": "",
18384
18433
  "pagination.pageOf": "",
@@ -18416,7 +18465,7 @@ var es = {
18416
18465
  "record.metadata.preview": "",
18417
18466
  "record.metadata.producer": "",
18418
18467
  "record.metadata.publication": "",
18419
- "record.metadata.publications": "",
18468
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
18420
18469
  "record.metadata.quality": "",
18421
18470
  "record.metadata.quality.contact.failed": "",
18422
18471
  "record.metadata.quality.contact.success": "",
@@ -18476,6 +18525,8 @@ var es = {
18476
18525
  "results.sortBy.relevancy": "",
18477
18526
  "search.autocomplete.error": "",
18478
18527
  "search.error.couldNotReachApi": "",
18528
+ "search.error.organizationHasNoDataset": "",
18529
+ "search.error.organizationNotFound": "",
18479
18530
  "search.error.receivedError": "",
18480
18531
  "search.error.recordHasnolink": "",
18481
18532
  "search.error.recordNotFound": "",
@@ -18539,7 +18590,7 @@ var fr = {
18539
18590
  "Add Layer As": "",
18540
18591
  "button.login": "Se connecter",
18541
18592
  "catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
18542
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18593
+ "catalog.figures.organizations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18543
18594
  "chart.aggregation.average": "moyenne",
18544
18595
  "chart.aggregation.count": "nombre",
18545
18596
  "chart.aggregation.max": "maximum",
@@ -18583,6 +18634,8 @@ var fr = {
18583
18634
  "datafeeder.analysisProgressBar.subtitle": "L'analyse peut prendre plusieurs minutes, merci d'attendre.",
18584
18635
  "datafeeder.analysisProgressBar.title": "Analyse en cours",
18585
18636
  "datafeeder.datasetValidation.datasetInformation": "Le jeu de données fourni contient {number} entités",
18637
+ "datafeeder.datasetValidationCsv.lineNumbers": "Résumé des 5 premières lignes* du CSV :",
18638
+ "datafeeder.datasetValidationCsv.explicitLineNumbers": "*Le tableau doit afficher les 5 premières lignes (hors en-tête)<br>Si ce n'est pas le cas, vérifier que le fichier est bien formatté",
18586
18639
  "datafeeder.datasetValidation.submitButton": "OK, mes données sont correctes",
18587
18640
  "datafeeder.datasetValidation.title": "Vérifiez que vos données sont correctes",
18588
18641
  "datafeeder.datasetValidation.unknown": " - ",
@@ -18612,7 +18665,8 @@ var fr = {
18612
18665
  "datafeeder.publish.upload": "Upload maintenant",
18613
18666
  "datafeeder.publishSuccess.geonetworkRecord": "Fiche de métadonnée",
18614
18667
  "datafeeder.publishSuccess.illustration.title": "Terminé, tout s'est bien passé !",
18615
- "datafeeder.publishSuccess.mapViewer": "Visualisateur",
18668
+ "datafeeder.publishSuccess.mapViewer": "Visualiseur",
18669
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
18616
18670
  "datafeeder.publishSuccess.subtitle": "Visualisez vos données :",
18617
18671
  "datafeeder.publishSuccess.title": "Félicitations! \n Vos données ont été publiées",
18618
18672
  "datafeeder.publishSuccess.uploadAnotherData": "Importer une autre donnée",
@@ -18641,6 +18695,15 @@ var fr = {
18641
18695
  "datafeeder.upload.maxFileSize": "La taille maximale est {size} Mo",
18642
18696
  "datafeeder.upload.title": "Importez vos données",
18643
18697
  "datafeeder.upload.uploadButton": "Transférer",
18698
+ "datafeeder.validation.csv.delimiter": "Séparateur de colonne",
18699
+ "datafeeder.validation.csv.delimiter.comma": "Virgule",
18700
+ "datafeeder.validation.csv.delimiter.semicolon": "Point-virgule",
18701
+ "datafeeder.validation.csv.lat.field": "Colonne latitude",
18702
+ "datafeeder.validation.csv.lng.field": "Colonne longitude",
18703
+ "datafeeder.validation.csv.quote.double": "Double guillemets",
18704
+ "datafeeder.validation.csv.quote.none": "Aucun",
18705
+ "datafeeder.validation.csv.quote.simple": "Simple guillemet",
18706
+ "datafeeder.validation.csv.quoteChar": "Séparateur de texte",
18644
18707
  "datafeeder.validation.encoding": "encodage",
18645
18708
  "datafeeder.validation.extent.title": "Voici l'emprise du jeu de données",
18646
18709
  "datafeeder.validation.extent.title.unknown": "Le système de projection est inconnu",
@@ -18654,7 +18717,7 @@ var fr = {
18654
18717
  "datahub.header.lastRecords": "Les plus récentes",
18655
18718
  "datahub.header.myfavorites": "Mes favoris",
18656
18719
  "datahub.header.news": "Accueil",
18657
- "datahub.header.organisations": "Organisations",
18720
+ "datahub.header.organizations": "Organisations",
18658
18721
  "datahub.header.popularRecords": "Les plus appréciées",
18659
18722
  "datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
18660
18723
  "datahub.news.contact.contactus": "Contactez-nous",
@@ -18690,6 +18753,7 @@ var fr = {
18690
18753
  "downloads.format.unknown": "inconnu",
18691
18754
  "downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
18692
18755
  dropFile: dropFile$3,
18756
+ "editor.record.form.keywords": "Mots-clés",
18693
18757
  "editor.record.form.license": "Licence",
18694
18758
  "editor.record.form.license.cc-by": "",
18695
18759
  "editor.record.form.license.cc-by-sa": "",
@@ -18789,6 +18853,10 @@ var fr = {
18789
18853
  "organisations.sortBy.nameDesc": "Nom Z → A",
18790
18854
  "organisations.sortBy.recordCountAsc": "Données 0 → 9",
18791
18855
  "organisations.sortBy.recordCountDesc": "Données 9 → 0",
18856
+ "organization.details.lastPublishedDatasets": "Dernières données publiées",
18857
+ "organization.details.lastPublishedDatasets.searchAllButton": "Rechercher tous",
18858
+ "organization.details.mailContact": "Contacter par mail",
18859
+ "organization.header.recordCount": "{count, plural, =0{donnée} one{donnée} other{données}}",
18792
18860
  "pagination.nextPage": "Page suivante",
18793
18861
  "pagination.page": "page",
18794
18862
  "pagination.pageOf": "sur",
@@ -18826,7 +18894,7 @@ var fr = {
18826
18894
  "record.metadata.preview": "Aperçu",
18827
18895
  "record.metadata.producer": "Producteur de la donnée",
18828
18896
  "record.metadata.publication": "Date de publication",
18829
- "record.metadata.publications": "données",
18897
+ "record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
18830
18898
  "record.metadata.quality": "Qualité des métadonnées",
18831
18899
  "record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
18832
18900
  "record.metadata.quality.contact.success": "Contact est renseigné",
@@ -18886,6 +18954,8 @@ var fr = {
18886
18954
  "results.sortBy.relevancy": "Pertinence",
18887
18955
  "search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
18888
18956
  "search.error.couldNotReachApi": "Problème de connexion à l'API",
18957
+ "search.error.organizationHasNoDataset": "Cette organisation n'a pas encore de données.",
18958
+ "search.error.organizationNotFound": "L'organisation n'a pas pu être trouvée.",
18889
18959
  "search.error.receivedError": "Erreur retournée",
18890
18960
  "search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
18891
18961
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
@@ -18949,7 +19019,7 @@ var it = {
18949
19019
  "Add Layer As": "",
18950
19020
  "button.login": "",
18951
19021
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
18952
- "catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
19022
+ "catalog.figures.organizations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
18953
19023
  "chart.aggregation.average": "media",
18954
19024
  "chart.aggregation.count": "conteggio",
18955
19025
  "chart.aggregation.max": "massimo",
@@ -19051,6 +19121,15 @@ var it = {
19051
19121
  "datafeeder.upload.maxFileSize": "Dimensione massima: {size} MB",
19052
19122
  "datafeeder.upload.title": "Importa i suoi dati",
19053
19123
  "datafeeder.upload.uploadButton": "Carica",
19124
+ "datafeeder.validation.csv.delimiter": "",
19125
+ "datafeeder.validation.csv.delimiter.comma": "",
19126
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19127
+ "datafeeder.validation.csv.lat.field": "",
19128
+ "datafeeder.validation.csv.lng.field": "",
19129
+ "datafeeder.validation.csv.quote.double": "",
19130
+ "datafeeder.validation.csv.quote.none": "",
19131
+ "datafeeder.validation.csv.quote.simple": "",
19132
+ "datafeeder.validation.csv.quoteChar": "",
19054
19133
  "datafeeder.validation.encoding": "Codifica",
19055
19134
  "datafeeder.validation.extent.title": "Ecco l'estensione del dataset",
19056
19135
  "datafeeder.validation.extent.title.unknown": "Sistema di proiezione sconosciuto",
@@ -19064,7 +19143,7 @@ var it = {
19064
19143
  "datahub.header.lastRecords": "Ultimi",
19065
19144
  "datahub.header.myfavorites": "Miei preferiti",
19066
19145
  "datahub.header.news": "Home",
19067
- "datahub.header.organisations": "Organizzazioni",
19146
+ "datahub.header.organizations": "Organizzazioni",
19068
19147
  "datahub.header.popularRecords": "Più popolari",
19069
19148
  "datahub.header.title.html": "<div class=\"text-white\">Tutti i dati<br>pubblici della mia organizzazione</div>",
19070
19149
  "datahub.news.contact.contactus": "Contattateci",
@@ -19100,6 +19179,7 @@ var it = {
19100
19179
  "downloads.format.unknown": "sconosciuto",
19101
19180
  "downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
19102
19181
  dropFile: dropFile$2,
19182
+ "editor.record.form.keywords": "",
19103
19183
  "editor.record.form.license": "Licenza",
19104
19184
  "editor.record.form.license.cc-by": "",
19105
19185
  "editor.record.form.license.cc-by-sa": "",
@@ -19199,6 +19279,10 @@ var it = {
19199
19279
  "organisations.sortBy.nameDesc": "Nome Z → A",
19200
19280
  "organisations.sortBy.recordCountAsc": "Dati 0 → 9",
19201
19281
  "organisations.sortBy.recordCountDesc": "Dati 9 → 0",
19282
+ "organization.details.lastPublishedDatasets": "",
19283
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
19284
+ "organization.details.mailContact": "",
19285
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
19202
19286
  "pagination.nextPage": "Pagina successiva",
19203
19287
  "pagination.page": "pagina",
19204
19288
  "pagination.pageOf": "di",
@@ -19236,7 +19320,7 @@ var it = {
19236
19320
  "record.metadata.preview": "Anteprima",
19237
19321
  "record.metadata.producer": "Produttore dei dati",
19238
19322
  "record.metadata.publication": "Data di pubblicazione",
19239
- "record.metadata.publications": "pubblicazioni",
19323
+ "record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
19240
19324
  "record.metadata.quality": "Qualità dei metadati",
19241
19325
  "record.metadata.quality.contact.failed": "Il contatto non è specificato",
19242
19326
  "record.metadata.quality.contact.success": "Il contatto è specificato",
@@ -19296,6 +19380,8 @@ var it = {
19296
19380
  "results.sortBy.relevancy": "Rilevanza",
19297
19381
  "search.autocomplete.error": "Impossibile recuperare le suggerimenti",
19298
19382
  "search.error.couldNotReachApi": "Problema di connessione all'API",
19383
+ "search.error.organizationHasNoDataset": "",
19384
+ "search.error.organizationNotFound": "",
19299
19385
  "search.error.receivedError": "Errore ricevuto",
19300
19386
  "search.error.recordHasnolink": "",
19301
19387
  "search.error.recordNotFound": "Impossibile trovare questo dato",
@@ -19359,7 +19445,7 @@ var nl = {
19359
19445
  "Add Layer As": "",
19360
19446
  "button.login": "",
19361
19447
  "catalog.figures.datasets": "datasets",
19362
- "catalog.figures.organisations": "organisaties",
19448
+ "catalog.figures.organizations": "organisaties",
19363
19449
  "chart.aggregation.average": "gemiddelde",
19364
19450
  "chart.aggregation.count": "aantal",
19365
19451
  "chart.aggregation.max": "max",
@@ -19461,6 +19547,15 @@ var nl = {
19461
19547
  "datafeeder.upload.maxFileSize": "",
19462
19548
  "datafeeder.upload.title": "",
19463
19549
  "datafeeder.upload.uploadButton": "",
19550
+ "datafeeder.validation.csv.delimiter": "",
19551
+ "datafeeder.validation.csv.delimiter.comma": "",
19552
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19553
+ "datafeeder.validation.csv.lat.field": "",
19554
+ "datafeeder.validation.csv.lng.field": "",
19555
+ "datafeeder.validation.csv.quote.double": "",
19556
+ "datafeeder.validation.csv.quote.none": "",
19557
+ "datafeeder.validation.csv.quote.simple": "",
19558
+ "datafeeder.validation.csv.quoteChar": "",
19464
19559
  "datafeeder.validation.encoding": "",
19465
19560
  "datafeeder.validation.extent.title": "",
19466
19561
  "datafeeder.validation.extent.title.unknown": "",
@@ -19474,7 +19569,7 @@ var nl = {
19474
19569
  "datahub.header.lastRecords": "",
19475
19570
  "datahub.header.myfavorites": "",
19476
19571
  "datahub.header.news": "",
19477
- "datahub.header.organisations": "",
19572
+ "datahub.header.organizations": "",
19478
19573
  "datahub.header.popularRecords": "",
19479
19574
  "datahub.header.title.html": "",
19480
19575
  "datahub.news.contact.contactus": "",
@@ -19510,6 +19605,7 @@ var nl = {
19510
19605
  "downloads.format.unknown": "",
19511
19606
  "downloads.wfs.featuretype.not.found": "",
19512
19607
  dropFile: dropFile$1,
19608
+ "editor.record.form.keywords": "",
19513
19609
  "editor.record.form.license": "",
19514
19610
  "editor.record.form.license.cc-by": "",
19515
19611
  "editor.record.form.license.cc-by-sa": "",
@@ -19609,6 +19705,10 @@ var nl = {
19609
19705
  "organisations.sortBy.nameDesc": "",
19610
19706
  "organisations.sortBy.recordCountAsc": "",
19611
19707
  "organisations.sortBy.recordCountDesc": "",
19708
+ "organization.details.lastPublishedDatasets": "",
19709
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
19710
+ "organization.details.mailContact": "",
19711
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
19612
19712
  "pagination.nextPage": "",
19613
19713
  "pagination.page": "",
19614
19714
  "pagination.pageOf": "",
@@ -19646,7 +19746,7 @@ var nl = {
19646
19746
  "record.metadata.preview": "",
19647
19747
  "record.metadata.producer": "",
19648
19748
  "record.metadata.publication": "",
19649
- "record.metadata.publications": "",
19749
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
19650
19750
  "record.metadata.quality": "",
19651
19751
  "record.metadata.quality.contact.failed": "",
19652
19752
  "record.metadata.quality.contact.success": "",
@@ -19706,6 +19806,8 @@ var nl = {
19706
19806
  "results.sortBy.relevancy": "",
19707
19807
  "search.autocomplete.error": "",
19708
19808
  "search.error.couldNotReachApi": "",
19809
+ "search.error.organizationHasNoDataset": "",
19810
+ "search.error.organizationNotFound": "",
19709
19811
  "search.error.receivedError": "",
19710
19812
  "search.error.recordHasnolink": "",
19711
19813
  "search.error.recordNotFound": "",
@@ -19769,7 +19871,7 @@ var pt = {
19769
19871
  "Add Layer As": "",
19770
19872
  "button.login": "",
19771
19873
  "catalog.figures.datasets": "conjuntos de dados",
19772
- "catalog.figures.organisations": "organizações",
19874
+ "catalog.figures.organizations": "organizações",
19773
19875
  "chart.aggregation.average": "média",
19774
19876
  "chart.aggregation.count": "contagem",
19775
19877
  "chart.aggregation.max": "máximo",
@@ -19871,6 +19973,15 @@ var pt = {
19871
19973
  "datafeeder.upload.maxFileSize": "",
19872
19974
  "datafeeder.upload.title": "",
19873
19975
  "datafeeder.upload.uploadButton": "",
19976
+ "datafeeder.validation.csv.delimiter": "",
19977
+ "datafeeder.validation.csv.delimiter.comma": "",
19978
+ "datafeeder.validation.csv.delimiter.semicolon": "",
19979
+ "datafeeder.validation.csv.lat.field": "",
19980
+ "datafeeder.validation.csv.lng.field": "",
19981
+ "datafeeder.validation.csv.quote.double": "",
19982
+ "datafeeder.validation.csv.quote.none": "",
19983
+ "datafeeder.validation.csv.quote.simple": "",
19984
+ "datafeeder.validation.csv.quoteChar": "",
19874
19985
  "datafeeder.validation.encoding": "",
19875
19986
  "datafeeder.validation.extent.title": "",
19876
19987
  "datafeeder.validation.extent.title.unknown": "",
@@ -19884,7 +19995,7 @@ var pt = {
19884
19995
  "datahub.header.lastRecords": "",
19885
19996
  "datahub.header.myfavorites": "",
19886
19997
  "datahub.header.news": "",
19887
- "datahub.header.organisations": "",
19998
+ "datahub.header.organizations": "",
19888
19999
  "datahub.header.popularRecords": "",
19889
20000
  "datahub.header.title.html": "",
19890
20001
  "datahub.news.contact.contactus": "",
@@ -19920,6 +20031,7 @@ var pt = {
19920
20031
  "downloads.format.unknown": "",
19921
20032
  "downloads.wfs.featuretype.not.found": "",
19922
20033
  dropFile: dropFile,
20034
+ "editor.record.form.keywords": "",
19923
20035
  "editor.record.form.license": "",
19924
20036
  "editor.record.form.license.cc-by": "",
19925
20037
  "editor.record.form.license.cc-by-sa": "",
@@ -20019,6 +20131,10 @@ var pt = {
20019
20131
  "organisations.sortBy.nameDesc": "",
20020
20132
  "organisations.sortBy.recordCountAsc": "",
20021
20133
  "organisations.sortBy.recordCountDesc": "",
20134
+ "organization.details.lastPublishedDatasets": "",
20135
+ "organization.details.lastPublishedDatasets.searchAllButton": "",
20136
+ "organization.details.mailContact": "",
20137
+ "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
20022
20138
  "pagination.nextPage": "",
20023
20139
  "pagination.page": "",
20024
20140
  "pagination.pageOf": "",
@@ -20056,7 +20172,7 @@ var pt = {
20056
20172
  "record.metadata.preview": "",
20057
20173
  "record.metadata.producer": "",
20058
20174
  "record.metadata.publication": "",
20059
- "record.metadata.publications": "",
20175
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
20060
20176
  "record.metadata.quality": "",
20061
20177
  "record.metadata.quality.contact.failed": "",
20062
20178
  "record.metadata.quality.contact.success": "",
@@ -20116,6 +20232,8 @@ var pt = {
20116
20232
  "results.sortBy.relevancy": "",
20117
20233
  "search.autocomplete.error": "",
20118
20234
  "search.error.couldNotReachApi": "",
20235
+ "search.error.organizationHasNoDataset": "",
20236
+ "search.error.organizationNotFound": "",
20119
20237
  "search.error.receivedError": "",
20120
20238
  "search.error.recordHasnolink": "",
20121
20239
  "search.error.recordNotFound": "",
@@ -21311,9 +21429,11 @@ class OrganizationsFromMetadataService {
21311
21429
  return fullOrg;
21312
21430
  return {
21313
21431
  ...fullOrg,
21432
+ email: emails[0],
21314
21433
  ...(group.description && { description: group.description }),
21315
21434
  ...(group.logo && { logoUrl: getAsUrl(`${IMAGE_URL$1}${group.logo}`) }),
21316
21435
  ...(group.website && { website: getAsUrl(group.website) }),
21436
+ ...(group.email && { email: group.email }),
21317
21437
  };
21318
21438
  });
21319
21439
  }
@@ -21414,6 +21534,7 @@ class OrganizationsFromGroupsService {
21414
21534
  return {
21415
21535
  name: group.label[lang3],
21416
21536
  ...(group.description && { description: group.description }),
21537
+ ...(group.email && { email: group.email }),
21417
21538
  ...(group.logo && {
21418
21539
  logoUrl: getAsUrl(`${IMAGE_URL}${group.logo}`),
21419
21540
  }),
@@ -21678,7 +21799,7 @@ class Gn4PlatformMapper {
21678
21799
  userFromApi(apiUser) {
21679
21800
  if (!apiUser)
21680
21801
  return null;
21681
- const { enabled, emailAddresses, organisation, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
21802
+ const { enabled, emailAddresses, organization, kind, lastLoginDate, accountNonExpired, accountNonLocked, id, credentialsNonExpired, ...user } = apiUser;
21682
21803
  return { ...apiUser, id: id.toString() };
21683
21804
  }
21684
21805
  keywordsFromApi(keywords, thesaurus, lang3) {
@@ -21780,8 +21901,6 @@ class Gn4PlatformService {
21780
21901
  this.allThesaurus$ = this.httpClient
21781
21902
  .get(`${this.registriesApiService.configuration.basePath}/thesaurus?_content_type=json`)
21782
21903
  .pipe(map$1((thesaurus) => {
21783
- // FIXME: find a better way to exclude place keywords
21784
- // thesaurus[0].filter((thes) => thes.dname !== 'place')
21785
21904
  return thesaurus[0];
21786
21905
  }), shareReplay(1));
21787
21906
  this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
@@ -21825,8 +21944,14 @@ class Gn4PlatformService {
21825
21944
  }
21826
21945
  return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
21827
21946
  }
21828
- searchKeywords(query) {
21829
- const keywords$ = this.registriesApiService.searchKeywords(query, this.langService.iso3, 10, 0, null, null, null, `*${query}*`);
21947
+ searchKeywords(query, keywordTypes) {
21948
+ const keywords$ = this.allThesaurus$.pipe(switchMap((thesaurus) => {
21949
+ const selectedThesauri = [];
21950
+ keywordTypes.map((keywordType) => {
21951
+ selectedThesauri.push(...thesaurus.filter((thes) => thes.dname === keywordType));
21952
+ });
21953
+ return this.registriesApiService.searchKeywords(query, this.langService.iso3, 10, 0, null, selectedThesauri.map((thes) => thes.key), null, `*${query}*`);
21954
+ }));
21830
21955
  return combineLatest([keywords$, this.allThesaurus$]).pipe(map$1(([keywords, thesaurus]) => {
21831
21956
  return this.mapper.keywordsFromApi(keywords, thesaurus, this.langService.iso3);
21832
21957
  }));
@@ -27024,17 +27149,19 @@ var ErrorType;
27024
27149
  ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
27025
27150
  ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
27026
27151
  ErrorType[ErrorType["DATASET_HAS_NO_LINK"] = 3] = "DATASET_HAS_NO_LINK";
27152
+ ErrorType[ErrorType["ORGANIZATION_HAS_NO_DATASET"] = 4] = "ORGANIZATION_HAS_NO_DATASET";
27153
+ ErrorType[ErrorType["ORGANIZATION_NOT_FOUND"] = 5] = "ORGANIZATION_NOT_FOUND";
27027
27154
  })(ErrorType || (ErrorType = {}));
27028
27155
  class ErrorComponent {
27029
27156
  constructor() {
27030
27157
  this.types = ErrorType;
27031
27158
  }
27032
27159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27033
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ 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: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ErrorComponent, selector: "gn-ui-error", inputs: { type: "type", error: "error", recordId: "recordId" }, ngImport: i0, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark\n </mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"], dependencies: [{ 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: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27034
27161
  }
27035
27162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, decorators: [{
27036
27163
  type: Component,
27037
- args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark</mat-icon\n >\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark</mat-icon\n >\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark</mat-icon\n >\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
27164
+ args: [{ selector: 'gn-ui-error', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[1.7em] bg-red-50 text-red-800 text-[1.5em] text-center rounded-lg\"\n>\n <div\n *ngIf=\"type === types.COULD_NOT_REACH_API\"\n data-test=\"could-not-reach-api-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">face</mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark1\"\n >question_mark\n </mat-icon>\n <mat-icon class=\"material-symbols-outlined question-mark2\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.couldNotReachApi</div>\n </div>\n <div\n *ngIf=\"type === types.DATASET_HAS_NO_LINK\"\n data-test=\"dataset-has-no-link-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">computer</mat-icon>\n </div>\n <div translate>search.error.recordHasnolink</div>\n </div>\n <div *ngIf=\"type === types.RECEIVED_ERROR\" data-test=\"received-error-error\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined face\">mood_bad</mat-icon>\n </div>\n <div translate>search.error.receivedError</div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div *ngIf=\"type === types.ORGANIZATION_HAS_NO_DATASET\">\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate>search.error.organizationHasNoDataset</div>\n </div>\n <div\n *ngIf=\"type === types.RECORD_NOT_FOUND\"\n data-test=\"record-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.recordNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n <div\n *ngIf=\"type === types.ORGANIZATION_NOT_FOUND\"\n data-test=\"org-not-found-error\"\n >\n <div class=\"relative opacity-40\">\n <mat-icon class=\"material-symbols-outlined computer\">computer</mat-icon>\n <mat-icon class=\"material-symbols-outlined computer-question-mark\"\n >question_mark\n </mat-icon>\n </div>\n <div translate [translateParams]=\"{ id: recordId }\">\n search.error.organizationNotFound\n </div>\n <div *ngIf=\"error\">{{ error }}</div>\n </div>\n</div>\n", styles: ["mat-icon{width:auto;height:auto}mat-icon.face{font-size:3em}mat-icon.question-mark1{position:absolute;bottom:1.1em;left:calc(50% + .7em);font-size:1.7em}mat-icon.question-mark2{position:absolute;bottom:1.6em;left:calc(50% + 1.6em);font-size:1.4em}.computer{font-size:3em}.computer-question-mark{position:absolute;top:.6em;left:calc(50% - .5em);font-size:1.2em}\n"] }]
27038
27165
  }], propDecorators: { type: [{
27039
27166
  type: Input
27040
27167
  }], error: [{
@@ -27134,71 +27261,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27134
27261
  type: Output
27135
27262
  }] } });
27136
27263
 
27137
- class MaxLinesComponent {
27138
- constructor(cdr) {
27139
- this.cdr = cdr;
27140
- this.maxLines = 6;
27141
- this.isExpanded = false;
27142
- this.maxHeight = '';
27143
- this.showToggleButton = false;
27144
- }
27145
- ngAfterViewInit() {
27146
- this.calculateMaxHeight();
27147
- this.observer = new ResizeObserver((mutations) => {
27148
- mutations.forEach(() => {
27149
- this.calculateMaxHeight();
27150
- });
27151
- });
27152
- this.observer.observe(this.container.nativeElement.children[0]);
27153
- }
27154
- toggleDisplay() {
27155
- this.isExpanded = !this.isExpanded;
27156
- this.calculateMaxHeight();
27157
- }
27158
- calculateMaxHeight() {
27159
- const containerElement = this.container.nativeElement;
27160
- const contentElement = containerElement.children[0];
27161
- const contentHeight = contentElement.getBoundingClientRect().height;
27162
- if (contentHeight) {
27163
- if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27164
- this.showToggleButton = true;
27165
- this.maxHeight = this.isExpanded
27166
- ? `${contentHeight}px`
27167
- : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27168
- }
27169
- else {
27170
- this.showToggleButton = false;
27171
- this.maxHeight = `${contentHeight}px`;
27172
- }
27173
- containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27174
- this.cdr.detectChanges();
27175
- }
27176
- }
27177
- getLineHeight(element) {
27178
- const computedStyle = window.getComputedStyle(element);
27179
- const lineHeight = parseFloat(computedStyle.lineHeight);
27180
- const fontSize = parseFloat(computedStyle.fontSize || '14');
27181
- const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27182
- return result;
27183
- }
27184
- ngOnDestroy() {
27185
- if (!this.observer)
27186
- return;
27187
- this.observer.unobserve(this.container.nativeElement.children[0]);
27188
- }
27189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27190
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\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: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27191
- }
27192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
27193
- type: Component,
27194
- args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
27195
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
27196
- type: Input
27197
- }], container: [{
27198
- type: ViewChild,
27199
- args: ['container']
27200
- }] } });
27201
-
27202
27264
  class MetadataCatalogComponent {
27203
27265
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27204
27266
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataCatalogComponent, selector: "gn-ui-metadata-catalog", inputs: { sourceLabel: "sourceLabel" }, ngImport: i0, template: "<div>\n <p class=\"text-gray-700 text-xs mb-3 uppercase\" translate>\n record.metadata.catalog\n </p>\n <p class=\"text-primary font-title text-21 mb-1\">\n {{ sourceLabel }}\n </p>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -27412,7 +27474,7 @@ class MetadataInfoComponent {
27412
27474
  this.keyword.emit(keyword);
27413
27475
  }
27414
27476
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27415
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27477
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27416
27478
  }
27417
27479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
27418
27480
  type: Component,
@@ -27683,13 +27745,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27683
27745
  }] } });
27684
27746
 
27685
27747
  class RelatedRecordCardComponent {
27748
+ constructor() {
27749
+ this.extraClass = '';
27750
+ this.baseClasses = [
27751
+ 'w-72',
27752
+ 'h-96',
27753
+ 'overflow-hidden',
27754
+ 'rounded-lg',
27755
+ 'bg-white',
27756
+ 'cursor-pointer',
27757
+ 'block',
27758
+ 'hover:-translate-y-2 ',
27759
+ 'duration-[180ms]',
27760
+ ].join(' ');
27761
+ }
27762
+ get classList() {
27763
+ return `${this.baseClasses} ${this.extraClass}`;
27764
+ }
27686
27765
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27687
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ 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: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27688
27767
  }
27689
27768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
27690
27769
  type: Component,
27691
- args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n" }]
27692
- }], propDecorators: { record: [{
27770
+ args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n" }]
27771
+ }], ctorParameters: function () { return []; }, propDecorators: { record: [{
27772
+ type: Input
27773
+ }], extraClass: [{
27693
27774
  type: Input
27694
27775
  }] } });
27695
27776
 
@@ -27868,6 +27949,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27868
27949
  type: Input
27869
27950
  }] } });
27870
27951
 
27952
+ class MaxLinesComponent {
27953
+ constructor(cdr) {
27954
+ this.cdr = cdr;
27955
+ this.maxLines = 6;
27956
+ this.isExpanded = false;
27957
+ this.maxHeight = '';
27958
+ this.showToggleButton = false;
27959
+ }
27960
+ ngAfterViewInit() {
27961
+ this.calculateMaxHeight();
27962
+ this.observer = new ResizeObserver((mutations) => {
27963
+ mutations.forEach(() => {
27964
+ this.calculateMaxHeight();
27965
+ });
27966
+ });
27967
+ this.observer.observe(this.container.nativeElement.children[0]);
27968
+ }
27969
+ toggleDisplay() {
27970
+ this.isExpanded = !this.isExpanded;
27971
+ this.calculateMaxHeight();
27972
+ }
27973
+ calculateMaxHeight() {
27974
+ const containerElement = this.container.nativeElement;
27975
+ const contentElement = containerElement.children[0];
27976
+ const contentHeight = contentElement.getBoundingClientRect().height;
27977
+ if (contentHeight) {
27978
+ if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27979
+ this.showToggleButton = true;
27980
+ this.maxHeight = this.isExpanded
27981
+ ? `${contentHeight}px`
27982
+ : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27983
+ }
27984
+ else {
27985
+ this.showToggleButton = false;
27986
+ this.maxHeight = `${contentHeight}px`;
27987
+ }
27988
+ containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27989
+ this.cdr.detectChanges();
27990
+ }
27991
+ }
27992
+ getLineHeight(element) {
27993
+ const computedStyle = window.getComputedStyle(element);
27994
+ const lineHeight = parseFloat(computedStyle.lineHeight);
27995
+ const fontSize = parseFloat(computedStyle.fontSize || '14');
27996
+ const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27997
+ return result;
27998
+ }
27999
+ ngOnDestroy() {
28000
+ if (!this.observer)
28001
+ return;
28002
+ this.observer.unobserve(this.container.nativeElement.children[0]);
28003
+ }
28004
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
28005
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28006
+ }
28007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
28008
+ type: Component,
28009
+ args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-3\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-secondary cursor-pointer pt-2.5\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
28010
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
28011
+ type: Input
28012
+ }], container: [{
28013
+ type: ViewChild,
28014
+ args: ['container']
28015
+ }] } });
28016
+
27871
28017
  class InteractiveTableColumnComponent {
27872
28018
  constructor() {
27873
28019
  this.grow = false;
@@ -28246,7 +28392,6 @@ class UiElementsModule {
28246
28392
  UserPreviewComponent,
28247
28393
  GnUiLinkifyDirective,
28248
28394
  PaginationButtonsComponent,
28249
- MaxLinesComponent,
28250
28395
  RecordApiFormComponent,
28251
28396
  UserFeedbackItemComponent,
28252
28397
  ImageOverlayPreviewComponent], imports: [CommonModule,
@@ -28277,7 +28422,6 @@ class UiElementsModule {
28277
28422
  AvatarComponent,
28278
28423
  UserPreviewComponent,
28279
28424
  PaginationButtonsComponent,
28280
- MaxLinesComponent,
28281
28425
  RecordApiFormComponent,
28282
28426
  MarkdownParserComponent,
28283
28427
  UserFeedbackItemComponent,
@@ -28332,7 +28476,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28332
28476
  UserPreviewComponent,
28333
28477
  GnUiLinkifyDirective,
28334
28478
  PaginationButtonsComponent,
28335
- MaxLinesComponent,
28336
28479
  RecordApiFormComponent,
28337
28480
  UserFeedbackItemComponent,
28338
28481
  ImageOverlayPreviewComponent,
@@ -28354,7 +28497,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28354
28497
  AvatarComponent,
28355
28498
  UserPreviewComponent,
28356
28499
  PaginationButtonsComponent,
28357
- MaxLinesComponent,
28358
28500
  RecordApiFormComponent,
28359
28501
  MarkdownParserComponent,
28360
28502
  UserFeedbackItemComponent,
@@ -29111,6 +29253,9 @@ const getSearchResults = createSelector(getSearchStateSearch, (state) => state.r
29111
29253
  const getSearchResultsLoading = createSelector(getSearchStateSearch, (state) => state.loadingResults);
29112
29254
  const getSearchResultsAggregations = createSelector(getSearchStateSearch, (state) => state.results.aggregations);
29113
29255
  const getSearchResultsHits = createSelector(getSearchStateSearch, (state) => state.results.count);
29256
+ const isBeginningOfResults = createSelector(getSearchStateSearch, (state) => {
29257
+ return state.params.currentPage === 0;
29258
+ });
29114
29259
  const isEndOfResults = createSelector(getSearchStateSearch, (state) => {
29115
29260
  return (state.params.currentPage * state.params.pageSize +
29116
29261
  state.params.pageSize >=
@@ -29144,6 +29289,7 @@ class SearchFacade {
29144
29289
  this.isLoading$ = this.store.pipe(select(getSearchResultsLoading, searchId));
29145
29290
  this.searchFilters$ = this.store.pipe(select(getSearchFilters, searchId));
29146
29291
  this.resultsHits$ = this.store.pipe(select(getSearchResultsHits, searchId));
29292
+ this.isBeginningOfResults$ = this.store.pipe(select(isBeginningOfResults, searchId));
29147
29293
  this.isEndOfResults$ = this.store.pipe(select(isEndOfResults, searchId));
29148
29294
  this.totalPages$ = this.store.pipe(select(totalPages, searchId));
29149
29295
  this.currentPage$ = this.store.pipe(select(currentPage, searchId));
@@ -31383,12 +31529,9 @@ const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => sta
31383
31529
 
31384
31530
  class FigureComponent {
31385
31531
  constructor() {
31532
+ this.unit = '';
31386
31533
  this.color = 'primary';
31387
31534
  }
31388
- get hoverTitle() {
31389
- return `${this.figure.toString()} ${this.unit || ''}
31390
- ${this.title}`;
31391
- }
31392
31535
  get textClass() {
31393
31536
  return this.color === 'primary' ? 'text-primary' : 'text-secondary';
31394
31537
  }
@@ -31396,11 +31539,11 @@ ${this.title}`;
31396
31539
  return this.color === 'primary' ? 'bg-primary-white' : 'bg-secondary-white';
31397
31540
  }
31398
31541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31399
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FigureComponent, selector: "gn-ui-figure", inputs: { icon: "icon", title: "title", figure: "figure", unit: "unit", color: "color" }, ngImport: i0, template: "<div\n translate\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n [title]=\"hoverTitle\"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\">{{ figure }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31542
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FigureComponent, selector: "gn-ui-figure", inputs: { icon: "icon", title: "title", figure: "figure", unit: "unit", color: "color" }, ngImport: i0, template: "<div\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n data-test=\"figureTitle\"\n [title]=\"\n figure.toString() +\n ' ' +\n unit +\n ' ' +\n (title | translate: { count: figure })\n \"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\" data-test=\"figure\">{{\n figure\n }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31400
31543
  }
31401
31544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, decorators: [{
31402
31545
  type: Component,
31403
- args: [{ selector: 'gn-ui-figure', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n translate\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n [title]=\"hoverTitle\"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\">{{ figure }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"] }]
31546
+ args: [{ selector: 'gn-ui-figure', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-row justify-start items-center overflow-hidden\"\n data-test=\"figureTitle\"\n [title]=\"\n figure.toString() +\n ' ' +\n unit +\n ' ' +\n (title | translate: { count: figure })\n \"\n>\n <mat-icon\n class=\"material-symbols-outlined {{ bgClass }} {{\n textClass\n }} text-[1.875em] rounded-full mr-[0.55em] p-[0.6em] w-[2.2em] h-[2.2em] shrink-0\"\n style=\"width: 2.2em; height: 2.2em\"\n >\n {{ icon }}\n </mat-icon>\n <div class=\"shrink overflow-hidden\">\n <div class=\"figure-block text-[1.5em] text-black\">\n <span class=\"figure font-medium mr-[0.3em]\" data-test=\"figure\">{{\n figure\n }}</span>\n <span class=\"unit text-[0.665em]\">{{ unit }}</span>\n </div>\n <div translate class=\"title truncate\" [translateParams]=\"{ count: figure }\">\n {{ title }}\n </div>\n </div>\n</div>\n", styles: [":host{display:inherit}\n"] }]
31404
31547
  }], propDecorators: { icon: [{
31405
31548
  type: Input
31406
31549
  }], title: [{
@@ -32979,9 +33122,7 @@ class MdViewFacade {
32979
33122
  this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
32980
33123
  this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
32981
33124
  this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
32982
- this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(mergeMap((links) => {
32983
- return from(links);
32984
- }), mergeMap((link) => {
33125
+ this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(switchMap$1((links) => from(links).pipe(mergeMap((link) => {
32985
33126
  if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
32986
33127
  if (link.type === 'service' &&
32987
33128
  link.accessServiceProtocol === 'ogcFeatures') {
@@ -32989,7 +33130,10 @@ class MdViewFacade {
32989
33130
  return collectionRecords && collectionRecords.geometry
32990
33131
  ? link
32991
33132
  : null;
32992
- }), defaultIfEmpty(null));
33133
+ }), defaultIfEmpty(null), catchError((e) => {
33134
+ console.error(e);
33135
+ return of(null);
33136
+ }));
32993
33137
  }
32994
33138
  else {
32995
33139
  return of(link);
@@ -32998,12 +33142,7 @@ class MdViewFacade {
32998
33142
  else {
32999
33143
  return of(null);
33000
33144
  }
33001
- }), scan((acc, val) => {
33002
- if (val !== null && !acc.includes(val)) {
33003
- acc.push(val);
33004
- }
33005
- return acc;
33006
- }, []));
33145
+ }), toArray(), map$1((links) => links.filter((link) => link !== null)))));
33007
33146
  this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
33008
33147
  this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
33009
33148
  this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
@@ -33355,15 +33494,15 @@ class OrganisationPreviewComponent {
33355
33494
  }
33356
33495
  clickOrganisation(event) {
33357
33496
  event.preventDefault();
33358
- this.clickedOrganisation.emit(this.organisation);
33497
+ this.clickedOrganisation.emit(this.organization);
33359
33498
  }
33360
33499
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organization: "organization", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organization.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organization.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organization.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organization.recordCount\n }}</span>\n <span translate [translateParams]=\"{ count: organization.recordCount }\"\n >record.metadata.publications</span\n >\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33362
33501
  }
33363
33502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, decorators: [{
33364
33503
  type: Component,
33365
- args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"] }]
33366
- }], propDecorators: { organisation: [{
33504
+ args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organization.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organization.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organization.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organization.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organization.recordCount\n }}</span>\n <span translate [translateParams]=\"{ count: organization.recordCount }\"\n >record.metadata.publications</span\n >\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"] }]
33505
+ }], propDecorators: { organization: [{
33367
33506
  type: Input
33368
33507
  }], organisationUrl: [{
33369
33508
  type: Input
@@ -33475,7 +33614,8 @@ class UiCatalogModule {
33475
33614
  LanguageSwitcherComponent,
33476
33615
  OrganisationsResultComponent], imports: [CommonModule, i1$1.TranslateModule, UiElementsModule,
33477
33616
  UiInputsModule,
33478
- MatIconModule], exports: [CatalogTitleComponent,
33617
+ MatIconModule,
33618
+ RouterLink], exports: [CatalogTitleComponent,
33479
33619
  OrganisationPreviewComponent,
33480
33620
  OrganisationsFilterComponent,
33481
33621
  LanguageSwitcherComponent,
@@ -33502,6 +33642,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33502
33642
  UiElementsModule,
33503
33643
  UiInputsModule,
33504
33644
  MatIconModule,
33645
+ RouterLink,
33505
33646
  ],
33506
33647
  exports: [
33507
33648
  CatalogTitleComponent,
@@ -33549,6 +33690,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33549
33690
  type: Input
33550
33691
  }] } });
33551
33692
 
33693
+ // expects the replacement key ${name}
33694
+ const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken('organization-page-url-token');
33695
+
33552
33696
  class OrganisationsComponent {
33553
33697
  constructor(organisationsService, urlTemplate) {
33554
33698
  this.organisationsService = organisationsService;
@@ -33620,17 +33764,17 @@ class OrganisationsComponent {
33620
33764
  return null;
33621
33765
  return this.urlTemplate.replace('${name}', organisation.name);
33622
33766
  }
33623
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, deps: [{ token: OrganizationsServiceInterface }, { token: ORGANIZATION_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33624
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationsComponent, selector: "gn-ui-organisations", inputs: { itemsOnPage: "itemsOnPage" }, outputs: { orgSelect: "orgSelect" }, ngImport: i0, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organisation]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: ["organisation", "organisationUrl"], outputs: ["clickedOrganisation"] }, { kind: "component", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: ["sortBy", "filterBy"] }, { kind: "component", type: OrganisationsResultComponent, selector: "gn-ui-organisations-result", inputs: ["hits", "total"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: PaginationComponent, selector: "gn-ui-pagination", inputs: ["currentPage", "nPages", "hideButton"], outputs: ["newCurrentPageEvent"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, deps: [{ token: OrganizationsServiceInterface }, { token: ORGANIZATION_PAGE_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrganisationsComponent, selector: "gn-ui-organisations", inputs: { itemsOnPage: "itemsOnPage" }, outputs: { orgSelect: "orgSelect" }, ngImport: i0, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organization]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: ["organization", "organisationUrl"], outputs: ["clickedOrganisation"] }, { kind: "component", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: ["sortBy", "filterBy"] }, { kind: "component", type: OrganisationsResultComponent, selector: "gn-ui-organisations-result", inputs: ["hits", "total"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: PaginationComponent, selector: "gn-ui-pagination", inputs: ["currentPage", "nPages", "hideButton"], outputs: ["newCurrentPageEvent"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33625
33769
  }
33626
33770
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, decorators: [{
33627
33771
  type: Component,
33628
- args: [{ selector: 'gn-ui-organisations', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organisation]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n" }]
33772
+ args: [{ selector: 'gn-ui-organisations', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-organisations-filter\n (sortBy)=\"setSortBy($event)\"\n (filterBy)=\"setFilterBy($event)\"\n></gn-ui-organisations-filter>\n<div class=\"mt-6 rounded-lg text-gray-800 p-4 bg-slate-100\">\n <gn-ui-organisations-result\n *ngIf=\"organisationsTotal$ | async\"\n [hits]=\"organisationResults\"\n [total]=\"organisationsTotal$ | async\"\n ></gn-ui-organisations-result>\n</div>\n<div\n class=\"grid grid-cols-1 mt-6 gap-x-6 gap-y-8 sm:grid-cols-2 lg:grid-cols-3\"\n>\n <gn-ui-content-ghost\n class=\"h-[300px]\"\n ghostClass=\"h-full mb-36\"\n *ngFor=\"let organisation of organisations$ | async; trackBy: trackByIndex\"\n [showContent]=\"!!organisation.name\"\n >\n <gn-ui-organisation-preview\n [organization]=\"organisation\"\n [organisationUrl]=\"getOrganisationUrl(organisation)\"\n (clickedOrganisation)=\"orgSelect.emit($event)\"\n ></gn-ui-organisation-preview>\n </gn-ui-content-ghost>\n</div>\n<div class=\"py-20\">\n <gn-ui-pagination\n [currentPage]=\"currentPage$ | async\"\n [nPages]=\"totalPages\"\n (newCurrentPageEvent)=\"setCurrentPage($event)\"\n ></gn-ui-pagination>\n</div>\n" }]
33629
33773
  }], ctorParameters: function () { return [{ type: OrganizationsServiceInterface }, { type: undefined, decorators: [{
33630
33774
  type: Optional
33631
33775
  }, {
33632
33776
  type: Inject,
33633
- args: [ORGANIZATION_URL_TOKEN]
33777
+ args: [ORGANIZATION_PAGE_URL_TOKEN]
33634
33778
  }] }]; }, propDecorators: { itemsOnPage: [{
33635
33779
  type: Input
33636
33780
  }], orgSelect: [{
@@ -33709,9 +33853,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33709
33853
  class RecordsService {
33710
33854
  constructor(recordsRepository) {
33711
33855
  this.recordsRepository = recordsRepository;
33712
- this.recordsCount$ = this.recordsRepository
33713
- .getMatchesCount({})
33714
- .pipe(shareReplay(1), catchError(() => of(0)));
33856
+ this.recordsCount$ = of(true).pipe(switchMap(() => this.recordsRepository.getMatchesCount({})), shareReplay(1));
33715
33857
  }
33716
33858
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, deps: [{ token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
33717
33859
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, providedIn: 'root' }); }
@@ -34610,7 +34752,9 @@ class FormFieldKeywordsComponent {
34610
34752
  return `${item.title} (${item.value.thesaurus?.name})`;
34611
34753
  };
34612
34754
  this.autoCompleteAction = (query) => {
34613
- return this.platformService.searchKeywords(query).pipe(map$2((keywords) => keywords.map((keyword) => {
34755
+ return this.platformService
34756
+ .searchKeywords(query, ['temporal', 'theme', 'other'])
34757
+ .pipe(map$2((keywords) => keywords.map((keyword) => {
34614
34758
  return { title: keyword.label, value: keyword };
34615
34759
  })));
34616
34760
  };
@@ -35186,6 +35330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35186
35330
  const ROUTER_STATE_KEY = 'router';
35187
35331
  const ROUTER_ROUTE_SEARCH = 'search';
35188
35332
  const ROUTER_ROUTE_DATASET = 'dataset';
35333
+ const ROUTER_ROUTE_ORGANIZATION = 'organization';
35189
35334
  var ROUTE_PARAMS;
35190
35335
  (function (ROUTE_PARAMS) {
35191
35336
  ROUTE_PARAMS["SORT"] = "_sort";
@@ -35217,11 +35362,18 @@ class RouterService {
35217
35362
  path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
35218
35363
  component: this.routerConfig.recordRouteComponent,
35219
35364
  },
35365
+ {
35366
+ path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
35367
+ component: this.routerConfig.organizationRouteComponent,
35368
+ },
35220
35369
  ];
35221
35370
  }
35222
35371
  getSearchRoute() {
35223
35372
  return ROUTER_ROUTE_SEARCH;
35224
35373
  }
35374
+ getOrganizationPageRoute() {
35375
+ return ROUTER_ROUTE_ORGANIZATION;
35376
+ }
35225
35377
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$7.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
35226
35378
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
35227
35379
  }
@@ -35268,6 +35420,13 @@ class RouterFacade {
35268
35420
  this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
35269
35421
  });
35270
35422
  }
35423
+ goToOrganization(organizationName) {
35424
+ const path = `${this.routerService.getOrganizationPageRoute()}/${organizationName}`;
35425
+ this.go({
35426
+ path,
35427
+ queryParamsHandling: '',
35428
+ });
35429
+ }
35271
35430
  updateSearch(query) {
35272
35431
  this.go({
35273
35432
  path: this.routerService.getSearchRoute(),
@@ -35548,5 +35707,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35548
35707
  * Generated bundle index. Do not edit.
35549
35708
  */
35550
35709
 
35551
- 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_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_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, 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 };
35710
+ 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 };
35552
35711
  //# sourceMappingURL=geonetwork-ui.mjs.map