geonetwork-ui 2.4.0-dev.8f04e899 → 2.4.0-dev.9121e5f4

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 (172) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +10 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +2 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +2 -2
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -5
  6. package/esm2022/libs/common/domain/src/lib/model/record/organization.model.mjs +1 -1
  7. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  8. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  9. package/esm2022/libs/data-access/gn4/src/openapi/model/user.api.model.mjs +1 -1
  10. package/esm2022/libs/feature/catalog/src/index.mjs +2 -1
  11. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +1 -1
  12. package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
  13. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +4 -0
  14. package/esm2022/libs/feature/catalog/src/lib/records/records.service.mjs +4 -6
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -2
  16. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +8 -12
  17. package/esm2022/libs/feature/router/src/lib/default/constants.mjs +2 -1
  18. package/esm2022/libs/feature/router/src/lib/default/router.config.mjs +1 -1
  19. package/esm2022/libs/feature/router/src/lib/default/router.service.mjs +9 -2
  20. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +8 -1
  21. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  22. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +49 -0
  23. package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +3 -2
  24. package/esm2022/libs/feature/search/src/lib/state/selectors.mjs +4 -1
  25. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +5 -5
  26. package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +5 -2
  27. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -8
  28. package/esm2022/libs/ui/elements/src/index.mjs +1 -2
  29. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +5 -3
  30. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +4 -4
  31. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +24 -5
  32. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -9
  33. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  34. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +71 -0
  35. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +1 -1
  36. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  37. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +120 -0
  38. package/esm2022/translations/de.json +27 -4
  39. package/esm2022/translations/en.json +30 -4
  40. package/esm2022/translations/es.json +27 -4
  41. package/esm2022/translations/fr.json +31 -5
  42. package/esm2022/translations/it.json +27 -4
  43. package/esm2022/translations/nl.json +27 -4
  44. package/esm2022/translations/pt.json +27 -4
  45. package/fesm2022/geonetwork-ui.mjs +478 -228
  46. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  47. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  48. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  49. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  50. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  51. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -1
  52. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  53. package/libs/common/domain/src/lib/model/record/organization.model.d.ts +1 -0
  54. package/libs/common/domain/src/lib/model/record/organization.model.d.ts.map +1 -1
  55. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -1
  56. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  57. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +2 -0
  58. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  59. package/libs/data-access/gn4/src/openapi/model/user.api.model.d.ts +1 -1
  60. package/libs/feature/catalog/src/index.d.ts +1 -0
  61. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  62. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  63. package/libs/feature/catalog/src/lib/organisations/organisations.component.d.ts.map +1 -1
  64. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +3 -0
  65. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -0
  66. package/libs/feature/catalog/src/lib/records/records.service.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  68. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  69. package/libs/feature/router/src/lib/default/constants.d.ts +1 -0
  70. package/libs/feature/router/src/lib/default/constants.d.ts.map +1 -1
  71. package/libs/feature/router/src/lib/default/router.config.d.ts +1 -0
  72. package/libs/feature/router/src/lib/default/router.config.d.ts.map +1 -1
  73. package/libs/feature/router/src/lib/default/router.service.d.ts +1 -0
  74. package/libs/feature/router/src/lib/default/router.service.d.ts.map +1 -1
  75. package/libs/feature/router/src/lib/default/state/router.facade.d.ts +1 -0
  76. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  77. package/libs/feature/search/src/index.d.ts +1 -1
  78. package/libs/feature/search/src/index.d.ts.map +1 -1
  79. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +25 -0
  80. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -0
  81. package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
  82. package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
  83. package/libs/feature/search/src/lib/state/selectors.d.ts +1 -0
  84. package/libs/feature/search/src/lib/state/selectors.d.ts.map +1 -1
  85. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts +2 -2
  86. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +2 -1
  87. package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
  88. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -2
  89. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  90. package/libs/ui/elements/src/index.d.ts +0 -1
  91. package/libs/ui/elements/src/index.d.ts.map +1 -1
  92. package/libs/ui/elements/src/lib/error/error.component.d.ts +3 -1
  93. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -1
  94. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +5 -1
  95. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  96. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +19 -19
  97. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  98. package/libs/ui/layout/src/index.d.ts +1 -0
  99. package/libs/ui/layout/src/index.d.ts.map +1 -1
  100. package/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.d.ts +2 -2
  101. package/libs/ui/layout/src/lib/max-lines/max-lines.component.d.ts.map +1 -0
  102. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  103. package/libs/ui/search/src/index.d.ts +1 -0
  104. package/libs/ui/search/src/index.d.ts.map +1 -1
  105. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +30 -0
  106. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
  107. package/package.json +1 -1
  108. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +14 -0
  109. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +1 -0
  110. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +3 -1
  111. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +1 -1
  112. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +26 -15
  113. package/src/libs/common/domain/src/lib/model/record/organization.model.ts +1 -0
  114. package/src/libs/common/domain/src/lib/platform.service.interface.ts +5 -1
  115. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +3 -0
  116. package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +28 -0
  117. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  118. package/src/libs/data-access/datafeeder/src/openapi/model/datasetMetadata.api.model.ts +4 -0
  119. package/src/libs/data-access/datafeeder/src/openapi/model/datasetUploadStatus.api.model.ts +2 -0
  120. package/src/libs/data-access/gn4/src/openapi/model/user.api.model.ts +1 -1
  121. package/src/libs/feature/catalog/src/index.ts +1 -0
  122. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -1
  123. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.html +1 -1
  124. package/src/libs/feature/catalog/src/lib/organisations/organisations.component.ts +2 -2
  125. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +6 -0
  126. package/src/libs/feature/catalog/src/lib/records/records.service.ts +6 -8
  127. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +8 -6
  128. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +42 -31
  129. package/src/libs/feature/router/src/lib/default/constants.ts +1 -0
  130. package/src/libs/feature/router/src/lib/default/router.config.ts +1 -0
  131. package/src/libs/feature/router/src/lib/default/router.service.ts +13 -1
  132. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +9 -1
  133. package/src/libs/feature/search/src/index.ts +1 -1
  134. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +9 -0
  135. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +49 -0
  136. package/src/libs/feature/search/src/lib/state/search.facade.ts +5 -0
  137. package/src/libs/feature/search/src/lib/state/selectors.ts +7 -0
  138. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +8 -6
  139. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  140. package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +2 -0
  141. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +11 -3
  142. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +3 -7
  143. package/src/libs/ui/elements/src/index.ts +0 -1
  144. package/src/libs/ui/elements/src/lib/error/error.component.html +30 -6
  145. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -0
  146. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  147. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +22 -1
  148. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -4
  149. package/src/libs/ui/layout/src/index.ts +1 -0
  150. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.html +1 -0
  151. package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.ts +9 -5
  152. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -1
  153. package/src/libs/ui/search/src/index.ts +1 -0
  154. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +0 -0
  155. package/src/libs/{feature → ui}/search/src/lib/results-table/results-table.component.html +8 -8
  156. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +138 -0
  157. package/translations/de.json +27 -4
  158. package/translations/en.json +30 -4
  159. package/translations/es.json +27 -4
  160. package/translations/fr.json +31 -5
  161. package/translations/it.json +27 -4
  162. package/translations/nl.json +27 -4
  163. package/translations/pt.json +27 -4
  164. package/translations/sk.json +28 -5
  165. package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +0 -136
  166. package/esm2022/libs/ui/elements/src/lib/max-lines/max-lines.component.mjs +0 -69
  167. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +0 -36
  168. package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +0 -1
  169. package/libs/ui/elements/src/lib/max-lines/max-lines.component.d.ts.map +0 -1
  170. package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +0 -171
  171. /package/src/libs/feature/search/src/lib/results-table/{results-table.component.css → results-table-container.component.css} +0 -0
  172. /package/src/libs/ui/{elements → layout}/src/lib/max-lines/max-lines.component.css +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';
@@ -17306,9 +17306,10 @@ var next$6 = "weiter";
17306
17306
  var previous$6 = "zurück";
17307
17307
  var records$6 = "Datensätze";
17308
17308
  var de = {
17309
+ "Add Layer As": "",
17309
17310
  "button.login": "",
17310
17311
  "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
17311
- "catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17312
+ "catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
17312
17313
  "chart.aggregation.average": "Durchschnitt",
17313
17314
  "chart.aggregation.count": "Anzahl",
17314
17315
  "chart.aggregation.max": "Maximum",
@@ -17324,16 +17325,22 @@ var de = {
17324
17325
  "chart.type.line": "Liniendiagramm",
17325
17326
  "chart.type.lineSmooth": "Geglättes Liniendiagramm",
17326
17327
  "chart.type.pie": "Kreisdiagramm",
17328
+ "dashboard.catalog.allRecords": "Metadatenkatalog",
17329
+ "dashboard.catalog.calendar": "Kalender",
17330
+ "dashboard.catalog.contacts": "Kontakte",
17331
+ "dashboard.catalog.discussion": "Diskussion",
17332
+ "dashboard.catalog.thesaurus": "Thesaurus",
17327
17333
  "dashboard.createRecord": "Neuer Eintrag",
17334
+ "dashboard.labels.catalog": "Katalog",
17328
17335
  "dashboard.labels.mySpace": "Mein Bereich",
17329
17336
  "dashboard.records.all": "Katalog",
17330
17337
  "dashboard.records.hasDraft": "",
17331
17338
  "dashboard.records.myDraft": "Meine Entwürfe",
17332
17339
  "dashboard.records.myLibrary": "Meine Bibliothek",
17333
- "dashboard.records.myOrg": "Meine Organisation",
17334
17340
  "dashboard.records.myRecords": "Meine Datensätze",
17335
17341
  "dashboard.records.publishedRecords": "{count, plural, =1{veröffentlichter Datensatz} other{veröffentlichte Datensätze}}",
17336
17342
  "dashboard.records.search": "Suche nach \"{searchText}\"",
17343
+ "dashboard.records.templates": "Vorlagen",
17337
17344
  "dashboard.records.userDetail": "Name",
17338
17345
  "dashboard.records.userEmail": "E-Mail",
17339
17346
  "dashboard.records.username": "Benutzername",
@@ -17405,6 +17412,15 @@ var de = {
17405
17412
  "datafeeder.upload.title": "Laden Sie Ihren Datensatz hoch",
17406
17413
  "datafeeder.upload.uploadButton": "Hochladen",
17407
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": "",
17408
17424
  "datafeeder.validation.extent.title": "Hier ist der Datensatzumfang",
17409
17425
  "datafeeder.validation.extent.title.unknown": "Das Projektionssystem ist unbekannt",
17410
17426
  "datafeeder.validation.projection": "Raumbezugssystem:",
@@ -17417,7 +17433,7 @@ var de = {
17417
17433
  "datahub.header.lastRecords": "Die neuesten",
17418
17434
  "datahub.header.myfavorites": "Meine Favoriten",
17419
17435
  "datahub.header.news": "Startseite",
17420
- "datahub.header.organisations": "Organisationen",
17436
+ "datahub.header.organizations": "Organisationen",
17421
17437
  "datahub.header.popularRecords": "Die beliebtesten",
17422
17438
  "datahub.header.title.html": "<div class=\"text-white\">Entdecken Sie offene<br> Daten meiner Organisation</div>",
17423
17439
  "datahub.news.contact.contactus": "Kontaktieren Sie uns",
@@ -17453,6 +17469,7 @@ var de = {
17453
17469
  "downloads.format.unknown": "unbekannt",
17454
17470
  "downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
17455
17471
  dropFile: dropFile$6,
17472
+ "editor.record.form.keywords": "Schlagwörter",
17456
17473
  "editor.record.form.license": "Lizenz",
17457
17474
  "editor.record.form.license.cc-by": "",
17458
17475
  "editor.record.form.license.cc-by-sa": "",
@@ -17552,6 +17569,10 @@ var de = {
17552
17569
  "organisations.sortBy.nameDesc": "Name Z → A",
17553
17570
  "organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
17554
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{}}",
17555
17576
  "pagination.nextPage": "Nächste Seite",
17556
17577
  "pagination.page": "Seite",
17557
17578
  "pagination.pageOf": "von",
@@ -17589,7 +17610,7 @@ var de = {
17589
17610
  "record.metadata.preview": "Vorschau",
17590
17611
  "record.metadata.producer": "Datenproduzent",
17591
17612
  "record.metadata.publication": "Veröffentlichungsdatum",
17592
- "record.metadata.publications": "Veröffentlichungen",
17613
+ "record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
17593
17614
  "record.metadata.quality": "Metadatenqualität",
17594
17615
  "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
17595
17616
  "record.metadata.quality.contact.success": "Kontakt angegeben",
@@ -17649,6 +17670,8 @@ var de = {
17649
17670
  "results.sortBy.relevancy": "Relevanz",
17650
17671
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
17651
17672
  "search.error.couldNotReachApi": "Die API konnte nicht erreicht werden",
17673
+ "search.error.organizationHasNoDataset": "",
17674
+ "search.error.organizationNotFound": "",
17652
17675
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
17653
17676
  "search.error.recordHasnolink": "",
17654
17677
  "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
@@ -17709,9 +17732,10 @@ var next$5 = "next";
17709
17732
  var previous$5 = "previous";
17710
17733
  var records$5 = "records";
17711
17734
  var en = {
17735
+ "Add Layer As": "",
17712
17736
  "button.login": "Log in",
17713
17737
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
17714
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
17738
+ "catalog.figures.organizations": "{count, plural, =0{organizations} one{organization} other{organizations}}",
17715
17739
  "chart.aggregation.average": "average",
17716
17740
  "chart.aggregation.count": "count",
17717
17741
  "chart.aggregation.max": "max",
@@ -17727,16 +17751,22 @@ var en = {
17727
17751
  "chart.type.line": "line chart",
17728
17752
  "chart.type.lineSmooth": "smooth line chart",
17729
17753
  "chart.type.pie": "pie chart",
17754
+ "dashboard.catalog.allRecords": "Metadata records",
17755
+ "dashboard.catalog.calendar": "Calendar",
17756
+ "dashboard.catalog.contacts": "Contacts",
17757
+ "dashboard.catalog.discussion": "Discussion",
17758
+ "dashboard.catalog.thesaurus": "Thesaurus",
17730
17759
  "dashboard.createRecord": "New record",
17760
+ "dashboard.labels.catalog": "Catalog",
17731
17761
  "dashboard.labels.mySpace": "My space",
17732
17762
  "dashboard.records.all": "Metadata records",
17733
17763
  "dashboard.records.hasDraft": "draft",
17734
17764
  "dashboard.records.myDraft": "My drafts",
17735
17765
  "dashboard.records.myLibrary": "My library",
17736
- "dashboard.records.myOrg": "Organization",
17737
17766
  "dashboard.records.myRecords": "My Records",
17738
17767
  "dashboard.records.publishedRecords": "{count, plural, =1{published record} other{published records}}",
17739
17768
  "dashboard.records.search": "Search for \"{searchText}\"",
17769
+ "dashboard.records.templates": "Templates",
17740
17770
  "dashboard.records.userDetail": "Name",
17741
17771
  "dashboard.records.userEmail": "Email",
17742
17772
  "dashboard.records.username": "Username",
@@ -17749,6 +17779,8 @@ var en = {
17749
17779
  "datafeeder.analysisProgressBar.subtitle": "The analysis may take several minutes, please wait.",
17750
17780
  "datafeeder.analysisProgressBar.title": "Analyze in progress",
17751
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",
17752
17784
  "datafeeder.datasetValidation.submitButton": "OK, my data are correct",
17753
17785
  "datafeeder.datasetValidation.title": "Make sure your data are correct",
17754
17786
  "datafeeder.datasetValidation.unknown": " - ",
@@ -17779,6 +17811,7 @@ var en = {
17779
17811
  "datafeeder.publishSuccess.geonetworkRecord": "Metadata record",
17780
17812
  "datafeeder.publishSuccess.illustration.title": "Done, all is good!",
17781
17813
  "datafeeder.publishSuccess.mapViewer": "Map viewer",
17814
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
17782
17815
  "datafeeder.publishSuccess.subtitle": "View your data in:",
17783
17816
  "datafeeder.publishSuccess.title": "Congratulation! \n Your dataset has been published",
17784
17817
  "datafeeder.publishSuccess.uploadAnotherData": "Upload another dataset",
@@ -17807,6 +17840,15 @@ var en = {
17807
17840
  "datafeeder.upload.maxFileSize": "Maximum file size is {size} MB",
17808
17841
  "datafeeder.upload.title": "Upload your dataset",
17809
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",
17810
17852
  "datafeeder.validation.encoding": "encoding",
17811
17853
  "datafeeder.validation.extent.title": "Here is the dataset extent",
17812
17854
  "datafeeder.validation.extent.title.unknown": "The projection system is unknown",
@@ -17820,7 +17862,7 @@ var en = {
17820
17862
  "datahub.header.lastRecords": "The latest",
17821
17863
  "datahub.header.myfavorites": "My favorites",
17822
17864
  "datahub.header.news": "Home",
17823
- "datahub.header.organisations": "Organisations",
17865
+ "datahub.header.organizations": "Organizations",
17824
17866
  "datahub.header.popularRecords": "The most popular",
17825
17867
  "datahub.header.title.html": "<div class=\"text-white\">Discover open<br> data from my Organization</div>",
17826
17868
  "datahub.news.contact.contactus": "Contact us",
@@ -17856,6 +17898,7 @@ var en = {
17856
17898
  "downloads.format.unknown": "unknown",
17857
17899
  "downloads.wfs.featuretype.not.found": "The layer was not found",
17858
17900
  dropFile: dropFile$5,
17901
+ "editor.record.form.keywords": "Keywords",
17859
17902
  "editor.record.form.license": "License",
17860
17903
  "editor.record.form.license.cc-by": "Creative Commons CC-BY",
17861
17904
  "editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
@@ -17955,6 +17998,10 @@ var en = {
17955
17998
  "organisations.sortBy.nameDesc": "Name Z → A",
17956
17999
  "organisations.sortBy.recordCountAsc": "Publications 0 → 9",
17957
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}}",
17958
18005
  "pagination.nextPage": "Next page",
17959
18006
  "pagination.page": "page",
17960
18007
  "pagination.pageOf": "of",
@@ -17992,7 +18039,7 @@ var en = {
17992
18039
  "record.metadata.preview": "Preview",
17993
18040
  "record.metadata.producer": "Data producer",
17994
18041
  "record.metadata.publication": "Date of publication",
17995
- "record.metadata.publications": "publications",
18042
+ "record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
17996
18043
  "record.metadata.quality": "Metadata Quality",
17997
18044
  "record.metadata.quality.contact.failed": "Contact is not specified",
17998
18045
  "record.metadata.quality.contact.success": "Contact is specified",
@@ -18052,6 +18099,8 @@ var en = {
18052
18099
  "results.sortBy.relevancy": "Relevancy",
18053
18100
  "search.autocomplete.error": "Suggestions could not be fetched:",
18054
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.",
18055
18104
  "search.error.receivedError": "An error was received",
18056
18105
  "search.error.recordHasnolink": "This record currently has no link yet, please come back later.",
18057
18106
  "search.error.recordNotFound": "The record with identifier \"{ id }\" could not be found.",
@@ -18112,9 +18161,10 @@ var next$4 = "";
18112
18161
  var previous$4 = "";
18113
18162
  var records$4 = "";
18114
18163
  var es = {
18164
+ "Add Layer As": "",
18115
18165
  "button.login": "",
18116
18166
  "catalog.figures.datasets": "conjuntos de datos",
18117
- "catalog.figures.organisations": "organizaciones",
18167
+ "catalog.figures.organizations": "organizaciones",
18118
18168
  "chart.aggregation.average": "promedio",
18119
18169
  "chart.aggregation.count": "conteo",
18120
18170
  "chart.aggregation.max": "máximo",
@@ -18130,16 +18180,22 @@ var es = {
18130
18180
  "chart.type.line": "gráfico de líneas",
18131
18181
  "chart.type.lineSmooth": "gráfico de líneas suave",
18132
18182
  "chart.type.pie": "gráfico circular",
18183
+ "dashboard.catalog.allRecords": "",
18184
+ "dashboard.catalog.calendar": "",
18185
+ "dashboard.catalog.contacts": "",
18186
+ "dashboard.catalog.discussion": "",
18187
+ "dashboard.catalog.thesaurus": "",
18133
18188
  "dashboard.createRecord": "",
18189
+ "dashboard.labels.catalog": "Catálogo",
18134
18190
  "dashboard.labels.mySpace": "Mi espacio",
18135
18191
  "dashboard.records.all": "Catálogo",
18136
18192
  "dashboard.records.hasDraft": "",
18137
18193
  "dashboard.records.myDraft": "Mis borradores",
18138
18194
  "dashboard.records.myLibrary": "Mi biblioteca",
18139
- "dashboard.records.myOrg": "Organización",
18140
18195
  "dashboard.records.myRecords": "Mis Registros",
18141
18196
  "dashboard.records.publishedRecords": "",
18142
18197
  "dashboard.records.search": "Buscar \"{searchText}\"",
18198
+ "dashboard.records.templates": "",
18143
18199
  "dashboard.records.userDetail": "",
18144
18200
  "dashboard.records.userEmail": "",
18145
18201
  "dashboard.records.username": "",
@@ -18210,6 +18266,15 @@ var es = {
18210
18266
  "datafeeder.upload.maxFileSize": "",
18211
18267
  "datafeeder.upload.title": "",
18212
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": "",
18213
18278
  "datafeeder.validation.encoding": "",
18214
18279
  "datafeeder.validation.extent.title": "",
18215
18280
  "datafeeder.validation.extent.title.unknown": "",
@@ -18223,7 +18288,7 @@ var es = {
18223
18288
  "datahub.header.lastRecords": "",
18224
18289
  "datahub.header.myfavorites": "",
18225
18290
  "datahub.header.news": "",
18226
- "datahub.header.organisations": "",
18291
+ "datahub.header.organizations": "",
18227
18292
  "datahub.header.popularRecords": "",
18228
18293
  "datahub.header.title.html": "",
18229
18294
  "datahub.news.contact.contactus": "",
@@ -18259,6 +18324,7 @@ var es = {
18259
18324
  "downloads.format.unknown": "",
18260
18325
  "downloads.wfs.featuretype.not.found": "",
18261
18326
  dropFile: dropFile$4,
18327
+ "editor.record.form.keywords": "",
18262
18328
  "editor.record.form.license": "",
18263
18329
  "editor.record.form.license.cc-by": "",
18264
18330
  "editor.record.form.license.cc-by-sa": "",
@@ -18358,6 +18424,10 @@ var es = {
18358
18424
  "organisations.sortBy.nameDesc": "",
18359
18425
  "organisations.sortBy.recordCountAsc": "",
18360
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{}}",
18361
18431
  "pagination.nextPage": "",
18362
18432
  "pagination.page": "",
18363
18433
  "pagination.pageOf": "",
@@ -18395,7 +18465,7 @@ var es = {
18395
18465
  "record.metadata.preview": "",
18396
18466
  "record.metadata.producer": "",
18397
18467
  "record.metadata.publication": "",
18398
- "record.metadata.publications": "",
18468
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
18399
18469
  "record.metadata.quality": "",
18400
18470
  "record.metadata.quality.contact.failed": "",
18401
18471
  "record.metadata.quality.contact.success": "",
@@ -18455,6 +18525,8 @@ var es = {
18455
18525
  "results.sortBy.relevancy": "",
18456
18526
  "search.autocomplete.error": "",
18457
18527
  "search.error.couldNotReachApi": "",
18528
+ "search.error.organizationHasNoDataset": "",
18529
+ "search.error.organizationNotFound": "",
18458
18530
  "search.error.receivedError": "",
18459
18531
  "search.error.recordHasnolink": "",
18460
18532
  "search.error.recordNotFound": "",
@@ -18515,9 +18587,10 @@ var next$3 = "suivant";
18515
18587
  var previous$3 = "précédent";
18516
18588
  var records$3 = "enregistrements";
18517
18589
  var fr = {
18590
+ "Add Layer As": "",
18518
18591
  "button.login": "Se connecter",
18519
18592
  "catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
18520
- "catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18593
+ "catalog.figures.organizations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
18521
18594
  "chart.aggregation.average": "moyenne",
18522
18595
  "chart.aggregation.count": "nombre",
18523
18596
  "chart.aggregation.max": "maximum",
@@ -18533,16 +18606,22 @@ var fr = {
18533
18606
  "chart.type.line": "ligne",
18534
18607
  "chart.type.lineSmooth": "ligne lisse",
18535
18608
  "chart.type.pie": "camembert",
18609
+ "dashboard.catalog.allRecords": "Fiches de métadonnée",
18610
+ "dashboard.catalog.calendar": "Calendrier",
18611
+ "dashboard.catalog.contacts": "Annuaire",
18612
+ "dashboard.catalog.discussion": "Discussions",
18613
+ "dashboard.catalog.thesaurus": "Thesaurus",
18536
18614
  "dashboard.createRecord": "Nouvel enregistrement",
18615
+ "dashboard.labels.catalog": "Catalogue",
18537
18616
  "dashboard.labels.mySpace": "Mon espace",
18538
18617
  "dashboard.records.all": "Catalogue",
18539
18618
  "dashboard.records.hasDraft": "brouillon",
18540
18619
  "dashboard.records.myDraft": "Mes brouillons",
18541
18620
  "dashboard.records.myLibrary": "Ma bibliothèque",
18542
- "dashboard.records.myOrg": "Mon organisation",
18543
18621
  "dashboard.records.myRecords": "Mes fiches publiées",
18544
18622
  "dashboard.records.publishedRecords": "{count, plural, =1{donnée publiée} other{données publiées}}",
18545
18623
  "dashboard.records.search": "Résultats pour \"{searchText}\"",
18624
+ "dashboard.records.templates": "Modèles pré-remplis",
18546
18625
  "dashboard.records.userDetail": "Nom",
18547
18626
  "dashboard.records.userEmail": "Email",
18548
18627
  "dashboard.records.username": "Nom d'utilisateur",
@@ -18555,6 +18634,8 @@ var fr = {
18555
18634
  "datafeeder.analysisProgressBar.subtitle": "L'analyse peut prendre plusieurs minutes, merci d'attendre.",
18556
18635
  "datafeeder.analysisProgressBar.title": "Analyse en cours",
18557
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é",
18558
18639
  "datafeeder.datasetValidation.submitButton": "OK, mes données sont correctes",
18559
18640
  "datafeeder.datasetValidation.title": "Vérifiez que vos données sont correctes",
18560
18641
  "datafeeder.datasetValidation.unknown": " - ",
@@ -18584,7 +18665,8 @@ var fr = {
18584
18665
  "datafeeder.publish.upload": "Upload maintenant",
18585
18666
  "datafeeder.publishSuccess.geonetworkRecord": "Fiche de métadonnée",
18586
18667
  "datafeeder.publishSuccess.illustration.title": "Terminé, tout s'est bien passé !",
18587
- "datafeeder.publishSuccess.mapViewer": "Visualisateur",
18668
+ "datafeeder.publishSuccess.mapViewer": "Visualiseur",
18669
+ "datafeeder.publishSuccess.ogcFeature": "OGC API",
18588
18670
  "datafeeder.publishSuccess.subtitle": "Visualisez vos données :",
18589
18671
  "datafeeder.publishSuccess.title": "Félicitations! \n Vos données ont été publiées",
18590
18672
  "datafeeder.publishSuccess.uploadAnotherData": "Importer une autre donnée",
@@ -18613,6 +18695,15 @@ var fr = {
18613
18695
  "datafeeder.upload.maxFileSize": "La taille maximale est {size} Mo",
18614
18696
  "datafeeder.upload.title": "Importez vos données",
18615
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",
18616
18707
  "datafeeder.validation.encoding": "encodage",
18617
18708
  "datafeeder.validation.extent.title": "Voici l'emprise du jeu de données",
18618
18709
  "datafeeder.validation.extent.title.unknown": "Le système de projection est inconnu",
@@ -18626,7 +18717,7 @@ var fr = {
18626
18717
  "datahub.header.lastRecords": "Les plus récentes",
18627
18718
  "datahub.header.myfavorites": "Mes favoris",
18628
18719
  "datahub.header.news": "Accueil",
18629
- "datahub.header.organisations": "Organisations",
18720
+ "datahub.header.organizations": "Organisations",
18630
18721
  "datahub.header.popularRecords": "Les plus appréciées",
18631
18722
  "datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
18632
18723
  "datahub.news.contact.contactus": "Contactez-nous",
@@ -18662,6 +18753,7 @@ var fr = {
18662
18753
  "downloads.format.unknown": "inconnu",
18663
18754
  "downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
18664
18755
  dropFile: dropFile$3,
18756
+ "editor.record.form.keywords": "Mots-clés",
18665
18757
  "editor.record.form.license": "Licence",
18666
18758
  "editor.record.form.license.cc-by": "",
18667
18759
  "editor.record.form.license.cc-by-sa": "",
@@ -18761,6 +18853,10 @@ var fr = {
18761
18853
  "organisations.sortBy.nameDesc": "Nom Z → A",
18762
18854
  "organisations.sortBy.recordCountAsc": "Données 0 → 9",
18763
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}}",
18764
18860
  "pagination.nextPage": "Page suivante",
18765
18861
  "pagination.page": "page",
18766
18862
  "pagination.pageOf": "sur",
@@ -18798,7 +18894,7 @@ var fr = {
18798
18894
  "record.metadata.preview": "Aperçu",
18799
18895
  "record.metadata.producer": "Producteur de la donnée",
18800
18896
  "record.metadata.publication": "Date de publication",
18801
- "record.metadata.publications": "données",
18897
+ "record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
18802
18898
  "record.metadata.quality": "Qualité des métadonnées",
18803
18899
  "record.metadata.quality.contact.failed": "Contact n'est pas renseigné",
18804
18900
  "record.metadata.quality.contact.success": "Contact est renseigné",
@@ -18858,6 +18954,8 @@ var fr = {
18858
18954
  "results.sortBy.relevancy": "Pertinence",
18859
18955
  "search.autocomplete.error": "Les suggestions ne peuvent pas être récupérées",
18860
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.",
18861
18959
  "search.error.receivedError": "Erreur retournée",
18862
18960
  "search.error.recordHasnolink": "Ce dataset n'a pas encore de lien, réessayez plus tard s'il vous plaît.",
18863
18961
  "search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
@@ -18918,9 +19016,10 @@ var next$2 = "successivo";
18918
19016
  var previous$2 = "precedente";
18919
19017
  var records$2 = "record";
18920
19018
  var it = {
19019
+ "Add Layer As": "",
18921
19020
  "button.login": "",
18922
19021
  "catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
18923
- "catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
19022
+ "catalog.figures.organizations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
18924
19023
  "chart.aggregation.average": "media",
18925
19024
  "chart.aggregation.count": "conteggio",
18926
19025
  "chart.aggregation.max": "massimo",
@@ -18936,16 +19035,22 @@ var it = {
18936
19035
  "chart.type.line": "grafico a linee",
18937
19036
  "chart.type.lineSmooth": "grafico a linea liscia",
18938
19037
  "chart.type.pie": "grafico a torta",
19038
+ "dashboard.catalog.allRecords": "",
19039
+ "dashboard.catalog.calendar": "",
19040
+ "dashboard.catalog.contacts": "",
19041
+ "dashboard.catalog.discussion": "",
19042
+ "dashboard.catalog.thesaurus": "",
18939
19043
  "dashboard.createRecord": "Crea un record",
19044
+ "dashboard.labels.catalog": "Catalogo",
18940
19045
  "dashboard.labels.mySpace": "Il mio spazio",
18941
19046
  "dashboard.records.all": "Catalogo",
18942
19047
  "dashboard.records.hasDraft": "",
18943
19048
  "dashboard.records.myDraft": "Le mie bozze",
18944
19049
  "dashboard.records.myLibrary": "La mia biblioteca",
18945
- "dashboard.records.myOrg": "La mia organizzazione",
18946
19050
  "dashboard.records.myRecords": "I miei dati",
18947
19051
  "dashboard.records.publishedRecords": "dati pubblicati",
18948
19052
  "dashboard.records.search": "Risultati per \"{searchText}\"",
19053
+ "dashboard.records.templates": "",
18949
19054
  "dashboard.records.userDetail": "Nome",
18950
19055
  "dashboard.records.userEmail": "Email",
18951
19056
  "dashboard.records.username": "Nome utente",
@@ -19016,6 +19121,15 @@ var it = {
19016
19121
  "datafeeder.upload.maxFileSize": "Dimensione massima: {size} MB",
19017
19122
  "datafeeder.upload.title": "Importa i suoi dati",
19018
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": "",
19019
19133
  "datafeeder.validation.encoding": "Codifica",
19020
19134
  "datafeeder.validation.extent.title": "Ecco l'estensione del dataset",
19021
19135
  "datafeeder.validation.extent.title.unknown": "Sistema di proiezione sconosciuto",
@@ -19029,7 +19143,7 @@ var it = {
19029
19143
  "datahub.header.lastRecords": "Ultimi",
19030
19144
  "datahub.header.myfavorites": "Miei preferiti",
19031
19145
  "datahub.header.news": "Home",
19032
- "datahub.header.organisations": "Organizzazioni",
19146
+ "datahub.header.organizations": "Organizzazioni",
19033
19147
  "datahub.header.popularRecords": "Più popolari",
19034
19148
  "datahub.header.title.html": "<div class=\"text-white\">Tutti i dati<br>pubblici della mia organizzazione</div>",
19035
19149
  "datahub.news.contact.contactus": "Contattateci",
@@ -19065,6 +19179,7 @@ var it = {
19065
19179
  "downloads.format.unknown": "sconosciuto",
19066
19180
  "downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
19067
19181
  dropFile: dropFile$2,
19182
+ "editor.record.form.keywords": "",
19068
19183
  "editor.record.form.license": "Licenza",
19069
19184
  "editor.record.form.license.cc-by": "",
19070
19185
  "editor.record.form.license.cc-by-sa": "",
@@ -19164,6 +19279,10 @@ var it = {
19164
19279
  "organisations.sortBy.nameDesc": "Nome Z → A",
19165
19280
  "organisations.sortBy.recordCountAsc": "Dati 0 → 9",
19166
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{}}",
19167
19286
  "pagination.nextPage": "Pagina successiva",
19168
19287
  "pagination.page": "pagina",
19169
19288
  "pagination.pageOf": "di",
@@ -19201,7 +19320,7 @@ var it = {
19201
19320
  "record.metadata.preview": "Anteprima",
19202
19321
  "record.metadata.producer": "Produttore dei dati",
19203
19322
  "record.metadata.publication": "Data di pubblicazione",
19204
- "record.metadata.publications": "pubblicazioni",
19323
+ "record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
19205
19324
  "record.metadata.quality": "Qualità dei metadati",
19206
19325
  "record.metadata.quality.contact.failed": "Il contatto non è specificato",
19207
19326
  "record.metadata.quality.contact.success": "Il contatto è specificato",
@@ -19261,6 +19380,8 @@ var it = {
19261
19380
  "results.sortBy.relevancy": "Rilevanza",
19262
19381
  "search.autocomplete.error": "Impossibile recuperare le suggerimenti",
19263
19382
  "search.error.couldNotReachApi": "Problema di connessione all'API",
19383
+ "search.error.organizationHasNoDataset": "",
19384
+ "search.error.organizationNotFound": "",
19264
19385
  "search.error.receivedError": "Errore ricevuto",
19265
19386
  "search.error.recordHasnolink": "",
19266
19387
  "search.error.recordNotFound": "Impossibile trovare questo dato",
@@ -19321,9 +19442,10 @@ var next$1 = "";
19321
19442
  var previous$1 = "";
19322
19443
  var records$1 = "";
19323
19444
  var nl = {
19445
+ "Add Layer As": "",
19324
19446
  "button.login": "",
19325
19447
  "catalog.figures.datasets": "datasets",
19326
- "catalog.figures.organisations": "organisaties",
19448
+ "catalog.figures.organizations": "organisaties",
19327
19449
  "chart.aggregation.average": "gemiddelde",
19328
19450
  "chart.aggregation.count": "aantal",
19329
19451
  "chart.aggregation.max": "max",
@@ -19339,16 +19461,22 @@ var nl = {
19339
19461
  "chart.type.line": "lijndiagram",
19340
19462
  "chart.type.lineSmooth": "glad lijndiagram",
19341
19463
  "chart.type.pie": "cirkeldiagram",
19464
+ "dashboard.catalog.allRecords": "",
19465
+ "dashboard.catalog.calendar": "",
19466
+ "dashboard.catalog.contacts": "",
19467
+ "dashboard.catalog.discussion": "",
19468
+ "dashboard.catalog.thesaurus": "",
19342
19469
  "dashboard.createRecord": "",
19470
+ "dashboard.labels.catalog": "Catalogus",
19343
19471
  "dashboard.labels.mySpace": "Mijn ruimte",
19344
19472
  "dashboard.records.all": "Catalogus",
19345
19473
  "dashboard.records.hasDraft": "",
19346
19474
  "dashboard.records.myDraft": "Mijn concepten",
19347
19475
  "dashboard.records.myLibrary": "Mijn bibliotheek",
19348
- "dashboard.records.myOrg": "Organisatie",
19349
19476
  "dashboard.records.myRecords": "Mijn Records",
19350
19477
  "dashboard.records.publishedRecords": "",
19351
19478
  "dashboard.records.search": "Zoeken naar \"{searchText}\"",
19479
+ "dashboard.records.templates": "",
19352
19480
  "dashboard.records.userDetail": "",
19353
19481
  "dashboard.records.userEmail": "",
19354
19482
  "dashboard.records.username": "",
@@ -19419,6 +19547,15 @@ var nl = {
19419
19547
  "datafeeder.upload.maxFileSize": "",
19420
19548
  "datafeeder.upload.title": "",
19421
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": "",
19422
19559
  "datafeeder.validation.encoding": "",
19423
19560
  "datafeeder.validation.extent.title": "",
19424
19561
  "datafeeder.validation.extent.title.unknown": "",
@@ -19432,7 +19569,7 @@ var nl = {
19432
19569
  "datahub.header.lastRecords": "",
19433
19570
  "datahub.header.myfavorites": "",
19434
19571
  "datahub.header.news": "",
19435
- "datahub.header.organisations": "",
19572
+ "datahub.header.organizations": "",
19436
19573
  "datahub.header.popularRecords": "",
19437
19574
  "datahub.header.title.html": "",
19438
19575
  "datahub.news.contact.contactus": "",
@@ -19468,6 +19605,7 @@ var nl = {
19468
19605
  "downloads.format.unknown": "",
19469
19606
  "downloads.wfs.featuretype.not.found": "",
19470
19607
  dropFile: dropFile$1,
19608
+ "editor.record.form.keywords": "",
19471
19609
  "editor.record.form.license": "",
19472
19610
  "editor.record.form.license.cc-by": "",
19473
19611
  "editor.record.form.license.cc-by-sa": "",
@@ -19567,6 +19705,10 @@ var nl = {
19567
19705
  "organisations.sortBy.nameDesc": "",
19568
19706
  "organisations.sortBy.recordCountAsc": "",
19569
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{}}",
19570
19712
  "pagination.nextPage": "",
19571
19713
  "pagination.page": "",
19572
19714
  "pagination.pageOf": "",
@@ -19604,7 +19746,7 @@ var nl = {
19604
19746
  "record.metadata.preview": "",
19605
19747
  "record.metadata.producer": "",
19606
19748
  "record.metadata.publication": "",
19607
- "record.metadata.publications": "",
19749
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
19608
19750
  "record.metadata.quality": "",
19609
19751
  "record.metadata.quality.contact.failed": "",
19610
19752
  "record.metadata.quality.contact.success": "",
@@ -19664,6 +19806,8 @@ var nl = {
19664
19806
  "results.sortBy.relevancy": "",
19665
19807
  "search.autocomplete.error": "",
19666
19808
  "search.error.couldNotReachApi": "",
19809
+ "search.error.organizationHasNoDataset": "",
19810
+ "search.error.organizationNotFound": "",
19667
19811
  "search.error.receivedError": "",
19668
19812
  "search.error.recordHasnolink": "",
19669
19813
  "search.error.recordNotFound": "",
@@ -19724,9 +19868,10 @@ var next = "";
19724
19868
  var previous = "";
19725
19869
  var records = "";
19726
19870
  var pt = {
19871
+ "Add Layer As": "",
19727
19872
  "button.login": "",
19728
19873
  "catalog.figures.datasets": "conjuntos de dados",
19729
- "catalog.figures.organisations": "organizações",
19874
+ "catalog.figures.organizations": "organizações",
19730
19875
  "chart.aggregation.average": "média",
19731
19876
  "chart.aggregation.count": "contagem",
19732
19877
  "chart.aggregation.max": "máximo",
@@ -19742,16 +19887,22 @@ var pt = {
19742
19887
  "chart.type.line": "gráfico de linha",
19743
19888
  "chart.type.lineSmooth": "gráfico de linha suave",
19744
19889
  "chart.type.pie": "gráfico de pizza",
19890
+ "dashboard.catalog.allRecords": "",
19891
+ "dashboard.catalog.calendar": "",
19892
+ "dashboard.catalog.contacts": "",
19893
+ "dashboard.catalog.discussion": "",
19894
+ "dashboard.catalog.thesaurus": "",
19745
19895
  "dashboard.createRecord": "",
19896
+ "dashboard.labels.catalog": "Catálogo",
19746
19897
  "dashboard.labels.mySpace": "Meu espaço",
19747
19898
  "dashboard.records.all": "Catálogo",
19748
19899
  "dashboard.records.hasDraft": "",
19749
19900
  "dashboard.records.myDraft": "Meus rascunhos",
19750
19901
  "dashboard.records.myLibrary": "Minha biblioteca",
19751
- "dashboard.records.myOrg": "Organização",
19752
19902
  "dashboard.records.myRecords": "Meus Registros",
19753
19903
  "dashboard.records.publishedRecords": "",
19754
19904
  "dashboard.records.search": "Buscar por \"{searchText}\"",
19905
+ "dashboard.records.templates": "",
19755
19906
  "dashboard.records.userDetail": "",
19756
19907
  "dashboard.records.userEmail": "",
19757
19908
  "dashboard.records.username": "",
@@ -19822,6 +19973,15 @@ var pt = {
19822
19973
  "datafeeder.upload.maxFileSize": "",
19823
19974
  "datafeeder.upload.title": "",
19824
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": "",
19825
19985
  "datafeeder.validation.encoding": "",
19826
19986
  "datafeeder.validation.extent.title": "",
19827
19987
  "datafeeder.validation.extent.title.unknown": "",
@@ -19835,7 +19995,7 @@ var pt = {
19835
19995
  "datahub.header.lastRecords": "",
19836
19996
  "datahub.header.myfavorites": "",
19837
19997
  "datahub.header.news": "",
19838
- "datahub.header.organisations": "",
19998
+ "datahub.header.organizations": "",
19839
19999
  "datahub.header.popularRecords": "",
19840
20000
  "datahub.header.title.html": "",
19841
20001
  "datahub.news.contact.contactus": "",
@@ -19871,6 +20031,7 @@ var pt = {
19871
20031
  "downloads.format.unknown": "",
19872
20032
  "downloads.wfs.featuretype.not.found": "",
19873
20033
  dropFile: dropFile,
20034
+ "editor.record.form.keywords": "",
19874
20035
  "editor.record.form.license": "",
19875
20036
  "editor.record.form.license.cc-by": "",
19876
20037
  "editor.record.form.license.cc-by-sa": "",
@@ -19970,6 +20131,10 @@ var pt = {
19970
20131
  "organisations.sortBy.nameDesc": "",
19971
20132
  "organisations.sortBy.recordCountAsc": "",
19972
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{}}",
19973
20138
  "pagination.nextPage": "",
19974
20139
  "pagination.page": "",
19975
20140
  "pagination.pageOf": "",
@@ -20007,7 +20172,7 @@ var pt = {
20007
20172
  "record.metadata.preview": "",
20008
20173
  "record.metadata.producer": "",
20009
20174
  "record.metadata.publication": "",
20010
- "record.metadata.publications": "",
20175
+ "record.metadata.publications": "{count, plural, =0{} one{} other{}}",
20011
20176
  "record.metadata.quality": "",
20012
20177
  "record.metadata.quality.contact.failed": "",
20013
20178
  "record.metadata.quality.contact.success": "",
@@ -20067,6 +20232,8 @@ var pt = {
20067
20232
  "results.sortBy.relevancy": "",
20068
20233
  "search.autocomplete.error": "",
20069
20234
  "search.error.couldNotReachApi": "",
20235
+ "search.error.organizationHasNoDataset": "",
20236
+ "search.error.organizationNotFound": "",
20070
20237
  "search.error.receivedError": "",
20071
20238
  "search.error.recordHasnolink": "",
20072
20239
  "search.error.recordNotFound": "",
@@ -21127,6 +21294,15 @@ class Gn4Repository {
21127
21294
  recordHasDraft(uniqueIdentifier) {
21128
21295
  return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
21129
21296
  }
21297
+ // generated by copilot
21298
+ getAllDrafts() {
21299
+ const items = { ...window.localStorage };
21300
+ const drafts = Object.keys(items)
21301
+ .filter((key) => key.startsWith('geonetwork-ui-draft-'))
21302
+ .map((key) => window.localStorage.getItem(key))
21303
+ .filter((draft) => draft !== null);
21304
+ return from(Promise.all(drafts.map((draft) => findConverterForDocument(draft).readRecord(draft))));
21305
+ }
21130
21306
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository, deps: [{ token: SearchApiService }, { token: ElasticsearchService }, { token: Gn4Converter }, { token: RecordsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21131
21307
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository }); }
21132
21308
  }
@@ -21253,9 +21429,11 @@ class OrganizationsFromMetadataService {
21253
21429
  return fullOrg;
21254
21430
  return {
21255
21431
  ...fullOrg,
21432
+ email: emails[0],
21256
21433
  ...(group.description && { description: group.description }),
21257
21434
  ...(group.logo && { logoUrl: getAsUrl(`${IMAGE_URL$1}${group.logo}`) }),
21258
21435
  ...(group.website && { website: getAsUrl(group.website) }),
21436
+ ...(group.email && { email: group.email }),
21259
21437
  };
21260
21438
  });
21261
21439
  }
@@ -21356,6 +21534,7 @@ class OrganizationsFromGroupsService {
21356
21534
  return {
21357
21535
  name: group.label[lang3],
21358
21536
  ...(group.description && { description: group.description }),
21537
+ ...(group.email && { email: group.email }),
21359
21538
  ...(group.logo && {
21360
21539
  logoUrl: getAsUrl(`${IMAGE_URL}${group.logo}`),
21361
21540
  }),
@@ -21620,7 +21799,7 @@ class Gn4PlatformMapper {
21620
21799
  userFromApi(apiUser) {
21621
21800
  if (!apiUser)
21622
21801
  return null;
21623
- 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;
21624
21803
  return { ...apiUser, id: id.toString() };
21625
21804
  }
21626
21805
  keywordsFromApi(keywords, thesaurus, lang3) {
@@ -21722,8 +21901,6 @@ class Gn4PlatformService {
21722
21901
  this.allThesaurus$ = this.httpClient
21723
21902
  .get(`${this.registriesApiService.configuration.basePath}/thesaurus?_content_type=json`)
21724
21903
  .pipe(map$1((thesaurus) => {
21725
- // FIXME: find a better way to exclude place keywords
21726
- // thesaurus[0].filter((thes) => thes.dname !== 'place')
21727
21904
  return thesaurus[0];
21728
21905
  }), shareReplay(1));
21729
21906
  this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
@@ -21767,8 +21944,14 @@ class Gn4PlatformService {
21767
21944
  }
21768
21945
  return this.keyTranslations$.pipe(map$1((translations) => translations[key]));
21769
21946
  }
21770
- searchKeywords(query) {
21771
- 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
+ }));
21772
21955
  return combineLatest([keywords$, this.allThesaurus$]).pipe(map$1(([keywords, thesaurus]) => {
21773
21956
  return this.mapper.keywordsFromApi(keywords, thesaurus, this.langService.iso3);
21774
21957
  }));
@@ -26966,17 +27149,19 @@ var ErrorType;
26966
27149
  ErrorType[ErrorType["RECEIVED_ERROR"] = 1] = "RECEIVED_ERROR";
26967
27150
  ErrorType[ErrorType["RECORD_NOT_FOUND"] = 2] = "RECORD_NOT_FOUND";
26968
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";
26969
27154
  })(ErrorType || (ErrorType = {}));
26970
27155
  class ErrorComponent {
26971
27156
  constructor() {
26972
27157
  this.types = ErrorType;
26973
27158
  }
26974
27159
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26975
- 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 }); }
26976
27161
  }
26977
27162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ErrorComponent, decorators: [{
26978
27163
  type: Component,
26979
- 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"] }]
26980
27165
  }], propDecorators: { type: [{
26981
27166
  type: Input
26982
27167
  }], error: [{
@@ -27076,71 +27261,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27076
27261
  type: Output
27077
27262
  }] } });
27078
27263
 
27079
- class MaxLinesComponent {
27080
- constructor(cdr) {
27081
- this.cdr = cdr;
27082
- this.maxLines = 6;
27083
- this.isExpanded = false;
27084
- this.maxHeight = '';
27085
- this.showToggleButton = false;
27086
- }
27087
- ngAfterViewInit() {
27088
- this.calculateMaxHeight();
27089
- this.observer = new ResizeObserver((mutations) => {
27090
- mutations.forEach(() => {
27091
- this.calculateMaxHeight();
27092
- });
27093
- });
27094
- this.observer.observe(this.container.nativeElement.children[0]);
27095
- }
27096
- toggleDisplay() {
27097
- this.isExpanded = !this.isExpanded;
27098
- this.calculateMaxHeight();
27099
- }
27100
- calculateMaxHeight() {
27101
- const containerElement = this.container.nativeElement;
27102
- const contentElement = containerElement.children[0];
27103
- const contentHeight = contentElement.getBoundingClientRect().height;
27104
- if (contentHeight) {
27105
- if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27106
- this.showToggleButton = true;
27107
- this.maxHeight = this.isExpanded
27108
- ? `${contentHeight}px`
27109
- : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27110
- }
27111
- else {
27112
- this.showToggleButton = false;
27113
- this.maxHeight = `${contentHeight}px`;
27114
- }
27115
- containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27116
- this.cdr.detectChanges();
27117
- }
27118
- }
27119
- getLineHeight(element) {
27120
- const computedStyle = window.getComputedStyle(element);
27121
- const lineHeight = parseFloat(computedStyle.lineHeight);
27122
- const fontSize = parseFloat(computedStyle.fontSize || '14');
27123
- const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27124
- return result;
27125
- }
27126
- ngOnDestroy() {
27127
- if (!this.observer)
27128
- return;
27129
- this.observer.unobserve(this.container.nativeElement.children[0]);
27130
- }
27131
- 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 }); }
27132
- 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 }); }
27133
- }
27134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
27135
- type: Component,
27136
- 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" }]
27137
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
27138
- type: Input
27139
- }], container: [{
27140
- type: ViewChild,
27141
- args: ['container']
27142
- }] } });
27143
-
27144
27264
  class MetadataCatalogComponent {
27145
27265
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27146
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 }); }
@@ -27215,6 +27335,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27215
27335
  args: ['contentDiv']
27216
27336
  }] } });
27217
27337
 
27338
+ class MaxLinesComponent {
27339
+ constructor(cdr) {
27340
+ this.cdr = cdr;
27341
+ this.maxLines = 6;
27342
+ this.isExpanded = false;
27343
+ this.maxHeight = '';
27344
+ this.showToggleButton = false;
27345
+ }
27346
+ ngAfterViewInit() {
27347
+ this.calculateMaxHeight();
27348
+ this.observer = new ResizeObserver((mutations) => {
27349
+ mutations.forEach(() => {
27350
+ this.calculateMaxHeight();
27351
+ });
27352
+ });
27353
+ this.observer.observe(this.container.nativeElement.children[0]);
27354
+ }
27355
+ toggleDisplay() {
27356
+ this.isExpanded = !this.isExpanded;
27357
+ this.calculateMaxHeight();
27358
+ }
27359
+ calculateMaxHeight() {
27360
+ const containerElement = this.container.nativeElement;
27361
+ const contentElement = containerElement.children[0];
27362
+ const contentHeight = contentElement.getBoundingClientRect().height;
27363
+ if (contentHeight) {
27364
+ if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
27365
+ this.showToggleButton = true;
27366
+ this.maxHeight = this.isExpanded
27367
+ ? `${contentHeight}px`
27368
+ : `${this.maxLines * this.getLineHeight(contentElement)}px`;
27369
+ }
27370
+ else {
27371
+ this.showToggleButton = false;
27372
+ this.maxHeight = `${contentHeight}px`;
27373
+ }
27374
+ containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
27375
+ this.cdr.detectChanges();
27376
+ }
27377
+ }
27378
+ getLineHeight(element) {
27379
+ const computedStyle = window.getComputedStyle(element);
27380
+ const lineHeight = parseFloat(computedStyle.lineHeight);
27381
+ const fontSize = parseFloat(computedStyle.fontSize || '14');
27382
+ const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
27383
+ return result;
27384
+ }
27385
+ ngOnDestroy() {
27386
+ if (!this.observer)
27387
+ return;
27388
+ this.observer.unobserve(this.container.nativeElement.children[0]);
27389
+ }
27390
+ 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 }); }
27391
+ 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 data-cy=\"readMoreButton\"\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 }); }
27392
+ }
27393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MaxLinesComponent, decorators: [{
27394
+ type: Component,
27395
+ 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 data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
27396
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { maxLines: [{
27397
+ type: Input
27398
+ }], container: [{
27399
+ type: ViewChild,
27400
+ args: ['container']
27401
+ }] } });
27402
+
27218
27403
  /* eslint-disable @angular-eslint/directive-selector */
27219
27404
  class GnUiLinkifyDirective {
27220
27405
  constructor(el, renderer) {
@@ -27354,7 +27539,7 @@ class MetadataInfoComponent {
27354
27539
  this.keyword.emit(keyword);
27355
27540
  }
27356
27541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27357
- 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 }); }
27542
+ 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: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { 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 }); }
27358
27543
  }
27359
27544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
27360
27545
  type: Component,
@@ -27625,13 +27810,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27625
27810
  }] } });
27626
27811
 
27627
27812
  class RelatedRecordCardComponent {
27813
+ constructor() {
27814
+ this.extraClass = '';
27815
+ this.baseClasses = [
27816
+ 'w-72',
27817
+ 'h-96',
27818
+ 'overflow-hidden',
27819
+ 'rounded-lg',
27820
+ 'bg-white',
27821
+ 'cursor-pointer',
27822
+ 'block',
27823
+ 'hover:-translate-y-2 ',
27824
+ 'duration-[180ms]',
27825
+ ].join(' ');
27826
+ }
27827
+ get classList() {
27828
+ return `${this.baseClasses} ${this.extraClass}`;
27829
+ }
27628
27830
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27629
- 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 }); }
27831
+ 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 }); }
27630
27832
  }
27631
27833
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
27632
27834
  type: Component,
27633
- 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" }]
27634
- }], propDecorators: { record: [{
27835
+ 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" }]
27836
+ }], ctorParameters: function () { return []; }, propDecorators: { record: [{
27837
+ type: Input
27838
+ }], extraClass: [{
27635
27839
  type: Input
27636
27840
  }] } });
27637
27841
 
@@ -28188,7 +28392,6 @@ class UiElementsModule {
28188
28392
  UserPreviewComponent,
28189
28393
  GnUiLinkifyDirective,
28190
28394
  PaginationButtonsComponent,
28191
- MaxLinesComponent,
28192
28395
  RecordApiFormComponent,
28193
28396
  UserFeedbackItemComponent,
28194
28397
  ImageOverlayPreviewComponent], imports: [CommonModule,
@@ -28203,7 +28406,8 @@ class UiElementsModule {
28203
28406
  MarkdownParserComponent,
28204
28407
  ThumbnailComponent,
28205
28408
  TimeSincePipe,
28206
- BadgeComponent], exports: [MetadataInfoComponent,
28409
+ BadgeComponent,
28410
+ MaxLinesComponent], exports: [MetadataInfoComponent,
28207
28411
  ContentGhostComponent,
28208
28412
  DownloadItemComponent,
28209
28413
  DownloadsListComponent,
@@ -28219,7 +28423,6 @@ class UiElementsModule {
28219
28423
  AvatarComponent,
28220
28424
  UserPreviewComponent,
28221
28425
  PaginationButtonsComponent,
28222
- MaxLinesComponent,
28223
28426
  RecordApiFormComponent,
28224
28427
  MarkdownParserComponent,
28225
28428
  UserFeedbackItemComponent,
@@ -28235,7 +28438,8 @@ class UiElementsModule {
28235
28438
  UiInputsModule,
28236
28439
  FormsModule,
28237
28440
  ThumbnailComponent,
28238
- BadgeComponent] }); }
28441
+ BadgeComponent,
28442
+ MaxLinesComponent] }); }
28239
28443
  }
28240
28444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UiElementsModule, decorators: [{
28241
28445
  type: NgModule,
@@ -28256,6 +28460,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28256
28460
  ThumbnailComponent,
28257
28461
  TimeSincePipe,
28258
28462
  BadgeComponent,
28463
+ MaxLinesComponent,
28259
28464
  ],
28260
28465
  declarations: [
28261
28466
  MetadataInfoComponent,
@@ -28274,7 +28479,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28274
28479
  UserPreviewComponent,
28275
28480
  GnUiLinkifyDirective,
28276
28481
  PaginationButtonsComponent,
28277
- MaxLinesComponent,
28278
28482
  RecordApiFormComponent,
28279
28483
  UserFeedbackItemComponent,
28280
28484
  ImageOverlayPreviewComponent,
@@ -28296,7 +28500,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28296
28500
  AvatarComponent,
28297
28501
  UserPreviewComponent,
28298
28502
  PaginationButtonsComponent,
28299
- MaxLinesComponent,
28300
28503
  RecordApiFormComponent,
28301
28504
  MarkdownParserComponent,
28302
28505
  UserFeedbackItemComponent,
@@ -28409,6 +28612,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
28409
28612
  }]
28410
28613
  }] });
28411
28614
 
28615
+ class ResultsTableComponent {
28616
+ constructor() {
28617
+ this.records = [];
28618
+ this.selectedRecordsIdentifiers = [];
28619
+ this.sortOrder = null;
28620
+ this.recordHasDraft = () => false;
28621
+ // emits the column (field) as well as the order
28622
+ this.sortByChange = new EventEmitter();
28623
+ this.recordClick = new EventEmitter();
28624
+ this.recordsSelectedChange = new EventEmitter();
28625
+ }
28626
+ dateToString(date) {
28627
+ return date?.toLocaleDateString(undefined, {
28628
+ year: 'numeric',
28629
+ month: 'long',
28630
+ day: 'numeric',
28631
+ timeZone: 'UTC',
28632
+ });
28633
+ }
28634
+ getStatus(isPublishedToAll) {
28635
+ return isPublishedToAll ? 'published' : 'not published';
28636
+ }
28637
+ getRecordFormats(record) {
28638
+ if (record.kind === 'service' || !('distributions' in record)) {
28639
+ return [];
28640
+ }
28641
+ const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
28642
+ formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
28643
+ return formats;
28644
+ }
28645
+ formatUserInfo(userInfo) {
28646
+ const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
28647
+ if (infos && infos.length === 4) {
28648
+ return `${infos[2]} ${infos[1]}`;
28649
+ }
28650
+ return undefined;
28651
+ }
28652
+ getBadgeColor(format) {
28653
+ return getBadgeColor(format);
28654
+ }
28655
+ handleRecordClick(item) {
28656
+ this.recordClick.emit(item);
28657
+ }
28658
+ setSortBy(col, order) {
28659
+ this.sortByChange.emit([col, order]);
28660
+ }
28661
+ isSortedBy(col) {
28662
+ if (!this.sortOrder) {
28663
+ return null;
28664
+ }
28665
+ const sortArray = Array.isArray(this.sortOrder[0])
28666
+ ? this.sortOrder
28667
+ : [this.sortOrder];
28668
+ for (const sort of sortArray) {
28669
+ if (sort[1] === col) {
28670
+ return sort[0];
28671
+ }
28672
+ }
28673
+ return null;
28674
+ }
28675
+ isChecked(record) {
28676
+ return this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier);
28677
+ }
28678
+ handleRecordSelectedChange(selected, record) {
28679
+ this.recordsSelectedChange.emit([[record], selected]);
28680
+ }
28681
+ async toggleSelectAll() {
28682
+ this.recordsSelectedChange.emit([this.records, !this.isAllSelected()]);
28683
+ }
28684
+ isAllSelected() {
28685
+ return this.records.every((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28686
+ }
28687
+ isSomeSelected() {
28688
+ const allSelected = this.records.every((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28689
+ const someSelected = this.records.some((record) => this.selectedRecordsIdentifiers.includes(record.uniqueIdentifier));
28690
+ return !allSelected && someSelected;
28691
+ }
28692
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28693
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", recordHasDraft: "recordHasDraft" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
28694
+ }
28695
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
28696
+ type: Component,
28697
+ args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
28698
+ CommonModule,
28699
+ UiInputsModule,
28700
+ InteractiveTableComponent,
28701
+ InteractiveTableColumnComponent,
28702
+ MatIconModule,
28703
+ TranslateModule,
28704
+ BadgeComponent,
28705
+ ], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"recordHasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
28706
+ }], propDecorators: { records: [{
28707
+ type: Input
28708
+ }], selectedRecordsIdentifiers: [{
28709
+ type: Input
28710
+ }], sortOrder: [{
28711
+ type: Input
28712
+ }], recordHasDraft: [{
28713
+ type: Input
28714
+ }], sortByChange: [{
28715
+ type: Output
28716
+ }], recordClick: [{
28717
+ type: Output
28718
+ }], recordsSelectedChange: [{
28719
+ type: Output
28720
+ }] } });
28721
+
28412
28722
  const ADD_SEARCH = '[Search] Add search instance';
28413
28723
  const SET_FILTERS = '[Search] Set Filters';
28414
28724
  const SET_CONFIG_FILTERS = '[Search] Set config filters';
@@ -28946,6 +29256,9 @@ const getSearchResults = createSelector(getSearchStateSearch, (state) => state.r
28946
29256
  const getSearchResultsLoading = createSelector(getSearchStateSearch, (state) => state.loadingResults);
28947
29257
  const getSearchResultsAggregations = createSelector(getSearchStateSearch, (state) => state.results.aggregations);
28948
29258
  const getSearchResultsHits = createSelector(getSearchStateSearch, (state) => state.results.count);
29259
+ const isBeginningOfResults = createSelector(getSearchStateSearch, (state) => {
29260
+ return state.params.currentPage === 0;
29261
+ });
28949
29262
  const isEndOfResults = createSelector(getSearchStateSearch, (state) => {
28950
29263
  return (state.params.currentPage * state.params.pageSize +
28951
29264
  state.params.pageSize >=
@@ -28979,6 +29292,7 @@ class SearchFacade {
28979
29292
  this.isLoading$ = this.store.pipe(select(getSearchResultsLoading, searchId));
28980
29293
  this.searchFilters$ = this.store.pipe(select(getSearchFilters, searchId));
28981
29294
  this.resultsHits$ = this.store.pipe(select(getSearchResultsHits, searchId));
29295
+ this.isBeginningOfResults$ = this.store.pipe(select(isBeginningOfResults, searchId));
28982
29296
  this.isEndOfResults$ = this.store.pipe(select(isEndOfResults, searchId));
28983
29297
  this.totalPages$ = this.store.pipe(select(totalPages, searchId));
28984
29298
  this.currentPage$ = this.store.pipe(select(currentPage, searchId));
@@ -30371,7 +30685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
30371
30685
  }]
30372
30686
  }] });
30373
30687
 
30374
- class ResultsTableComponent {
30688
+ class ResultsTableContainerComponent {
30375
30689
  constructor(searchFacade, searchService, selectionService, recordsRepository) {
30376
30690
  this.searchFacade = searchFacade;
30377
30691
  this.searchService = searchService;
@@ -30380,106 +30694,29 @@ class ResultsTableComponent {
30380
30694
  this.recordClick = new EventEmitter();
30381
30695
  this.records$ = this.searchFacade.results$;
30382
30696
  this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
30383
- }
30384
- dateToString(date) {
30385
- return date?.toLocaleDateString(undefined, {
30386
- year: 'numeric',
30387
- month: 'long',
30388
- day: 'numeric',
30389
- timeZone: 'UTC',
30390
- });
30391
- }
30392
- getStatus(isPublishedToAll) {
30393
- return isPublishedToAll ? 'published' : 'not published';
30394
- }
30395
- getRecordFormats(record) {
30396
- if (record.kind === 'service' || !('distributions' in record)) {
30397
- return [];
30398
- }
30399
- const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
30400
- formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
30401
- return formats;
30402
- }
30403
- formatUserInfo(userInfo) {
30404
- const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
30405
- if (infos && infos.length === 4) {
30406
- return `${infos[2]} ${infos[1]}`;
30407
- }
30408
- return undefined;
30409
- }
30410
- getBadgeColor(format) {
30411
- return getBadgeColor(format);
30697
+ this.sortBy$ = this.searchFacade.sortBy$;
30698
+ this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
30412
30699
  }
30413
30700
  handleRecordClick(item) {
30414
30701
  this.recordClick.emit(item);
30415
30702
  }
30416
- setSortBy(col, order) {
30703
+ handleSortByChange(col, order) {
30417
30704
  this.searchService.setSortBy([order, col]);
30418
30705
  }
30419
- isSortedBy(col) {
30420
- return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
30421
- const sortArray = Array.isArray(sortOrder[0])
30422
- ? sortOrder
30423
- : [sortOrder];
30424
- for (const sort of sortArray) {
30425
- if (sort[1] === col) {
30426
- return sort[0];
30427
- }
30428
- }
30429
- return null;
30430
- }));
30431
- }
30432
- isChecked(record) {
30433
- return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
30434
- return selectedRecords.includes(record.uniqueIdentifier);
30435
- }));
30436
- }
30437
- handleRecordSelectedChange(selected, record) {
30706
+ handleRecordsSelectedChange(records, selected) {
30438
30707
  if (!selected) {
30439
- this.selectionService.deselectRecords([record]);
30440
- }
30441
- else {
30442
- this.selectionService.selectRecords([record]);
30443
- }
30444
- }
30445
- async toggleSelectAll() {
30446
- const records = await firstValueFrom(this.records$);
30447
- if (await firstValueFrom(this.isAllSelected())) {
30448
30708
  this.selectionService.deselectRecords(records);
30449
30709
  }
30450
30710
  else {
30451
30711
  this.selectionService.selectRecords(records);
30452
30712
  }
30453
30713
  }
30454
- isAllSelected() {
30455
- return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
30456
- return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
30457
- }));
30458
- }
30459
- isSomeSelected() {
30460
- return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
30461
- const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
30462
- const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
30463
- return !allSelected && someSelected;
30464
- }));
30465
- }
30466
- hasDraft(record) {
30467
- return this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
30468
- }
30469
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
30470
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
30714
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
30715
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "recordHasDraft"], outputs: ["sortByChange", "recordClick", "recordsSelectedChange"] }] }); }
30471
30716
  }
30472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
30717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
30473
30718
  type: Component,
30474
- args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
30475
- CommonModule,
30476
- UiInputsModule,
30477
- InteractiveTableComponent,
30478
- InteractiveTableColumnComponent,
30479
- MatIconModule,
30480
- TranslateModule,
30481
- BadgeComponent,
30482
- ], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
30719
+ args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [recordHasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
30483
30720
  }], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
30484
30721
  type: Output
30485
30722
  }] } });
@@ -31295,12 +31532,9 @@ const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => sta
31295
31532
 
31296
31533
  class FigureComponent {
31297
31534
  constructor() {
31535
+ this.unit = '';
31298
31536
  this.color = 'primary';
31299
31537
  }
31300
- get hoverTitle() {
31301
- return `${this.figure.toString()} ${this.unit || ''}
31302
- ${this.title}`;
31303
- }
31304
31538
  get textClass() {
31305
31539
  return this.color === 'primary' ? 'text-primary' : 'text-secondary';
31306
31540
  }
@@ -31308,11 +31542,11 @@ ${this.title}`;
31308
31542
  return this.color === 'primary' ? 'bg-primary-white' : 'bg-secondary-white';
31309
31543
  }
31310
31544
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31311
- 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 }); }
31545
+ 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 }); }
31312
31546
  }
31313
31547
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FigureComponent, decorators: [{
31314
31548
  type: Component,
31315
- 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"] }]
31549
+ 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"] }]
31316
31550
  }], propDecorators: { icon: [{
31317
31551
  type: Input
31318
31552
  }], title: [{
@@ -32891,9 +33125,7 @@ class MdViewFacade {
32891
33125
  this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
32892
33126
  this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
32893
33127
  this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
32894
- this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(mergeMap((links) => {
32895
- return from(links);
32896
- }), mergeMap((link) => {
33128
+ this.geoDataLinksWithGeometry$ = this.allLinks$.pipe(switchMap$1((links) => from(links).pipe(mergeMap((link) => {
32897
33129
  if (this.linkClassifier.hasUsage(link, LinkUsage.GEODATA)) {
32898
33130
  if (link.type === 'service' &&
32899
33131
  link.accessServiceProtocol === 'ogcFeatures') {
@@ -32901,7 +33133,10 @@ class MdViewFacade {
32901
33133
  return collectionRecords && collectionRecords.geometry
32902
33134
  ? link
32903
33135
  : null;
32904
- }), defaultIfEmpty(null));
33136
+ }), defaultIfEmpty(null), catchError((e) => {
33137
+ console.error(e);
33138
+ return of(null);
33139
+ }));
32905
33140
  }
32906
33141
  else {
32907
33142
  return of(link);
@@ -32910,12 +33145,7 @@ class MdViewFacade {
32910
33145
  else {
32911
33146
  return of(null);
32912
33147
  }
32913
- }), scan((acc, val) => {
32914
- if (val !== null && !acc.includes(val)) {
32915
- acc.push(val);
32916
- }
32917
- return acc;
32918
- }, []));
33148
+ }), toArray(), map$1((links) => links.filter((link) => link !== null)))));
32919
33149
  this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
32920
33150
  this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
32921
33151
  this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
@@ -33267,15 +33497,15 @@ class OrganisationPreviewComponent {
33267
33497
  }
33268
33498
  clickOrganisation(event) {
33269
33499
  event.preventDefault();
33270
- this.clickedOrganisation.emit(this.organisation);
33500
+ this.clickedOrganisation.emit(this.organization);
33271
33501
  }
33272
33502
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33273
- 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 }); }
33503
+ 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 }); }
33274
33504
  }
33275
33505
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationPreviewComponent, decorators: [{
33276
33506
  type: Component,
33277
- 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"] }]
33278
- }], propDecorators: { organisation: [{
33507
+ 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"] }]
33508
+ }], propDecorators: { organization: [{
33279
33509
  type: Input
33280
33510
  }], organisationUrl: [{
33281
33511
  type: Input
@@ -33387,7 +33617,8 @@ class UiCatalogModule {
33387
33617
  LanguageSwitcherComponent,
33388
33618
  OrganisationsResultComponent], imports: [CommonModule, i1$1.TranslateModule, UiElementsModule,
33389
33619
  UiInputsModule,
33390
- MatIconModule], exports: [CatalogTitleComponent,
33620
+ MatIconModule,
33621
+ RouterLink], exports: [CatalogTitleComponent,
33391
33622
  OrganisationPreviewComponent,
33392
33623
  OrganisationsFilterComponent,
33393
33624
  LanguageSwitcherComponent,
@@ -33414,6 +33645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33414
33645
  UiElementsModule,
33415
33646
  UiInputsModule,
33416
33647
  MatIconModule,
33648
+ RouterLink,
33417
33649
  ],
33418
33650
  exports: [
33419
33651
  CatalogTitleComponent,
@@ -33461,6 +33693,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33461
33693
  type: Input
33462
33694
  }] } });
33463
33695
 
33696
+ // expects the replacement key ${name}
33697
+ const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken('organization-page-url-token');
33698
+
33464
33699
  class OrganisationsComponent {
33465
33700
  constructor(organisationsService, urlTemplate) {
33466
33701
  this.organisationsService = organisationsService;
@@ -33532,17 +33767,17 @@ class OrganisationsComponent {
33532
33767
  return null;
33533
33768
  return this.urlTemplate.replace('${name}', organisation.name);
33534
33769
  }
33535
- 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 }); }
33536
- 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 }); }
33770
+ 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 }); }
33771
+ 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 }); }
33537
33772
  }
33538
33773
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrganisationsComponent, decorators: [{
33539
33774
  type: Component,
33540
- 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" }]
33775
+ 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" }]
33541
33776
  }], ctorParameters: function () { return [{ type: OrganizationsServiceInterface }, { type: undefined, decorators: [{
33542
33777
  type: Optional
33543
33778
  }, {
33544
33779
  type: Inject,
33545
- args: [ORGANIZATION_URL_TOKEN]
33780
+ args: [ORGANIZATION_PAGE_URL_TOKEN]
33546
33781
  }] }]; }, propDecorators: { itemsOnPage: [{
33547
33782
  type: Input
33548
33783
  }], orgSelect: [{
@@ -33621,9 +33856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33621
33856
  class RecordsService {
33622
33857
  constructor(recordsRepository) {
33623
33858
  this.recordsRepository = recordsRepository;
33624
- this.recordsCount$ = this.recordsRepository
33625
- .getMatchesCount({})
33626
- .pipe(shareReplay(1), catchError(() => of(0)));
33859
+ this.recordsCount$ = of(true).pipe(switchMap(() => this.recordsRepository.getMatchesCount({})), shareReplay(1));
33627
33860
  }
33628
33861
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, deps: [{ token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
33629
33862
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordsService, providedIn: 'root' }); }
@@ -34522,7 +34755,9 @@ class FormFieldKeywordsComponent {
34522
34755
  return `${item.title} (${item.value.thesaurus?.name})`;
34523
34756
  };
34524
34757
  this.autoCompleteAction = (query) => {
34525
- return this.platformService.searchKeywords(query).pipe(map$2((keywords) => keywords.map((keyword) => {
34758
+ return this.platformService
34759
+ .searchKeywords(query, ['temporal', 'theme', 'other'])
34760
+ .pipe(map$2((keywords) => keywords.map((keyword) => {
34526
34761
  return { title: keyword.label, value: keyword };
34527
34762
  })));
34528
34763
  };
@@ -35098,6 +35333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35098
35333
  const ROUTER_STATE_KEY = 'router';
35099
35334
  const ROUTER_ROUTE_SEARCH = 'search';
35100
35335
  const ROUTER_ROUTE_DATASET = 'dataset';
35336
+ const ROUTER_ROUTE_ORGANIZATION = 'organization';
35101
35337
  var ROUTE_PARAMS;
35102
35338
  (function (ROUTE_PARAMS) {
35103
35339
  ROUTE_PARAMS["SORT"] = "_sort";
@@ -35129,11 +35365,18 @@ class RouterService {
35129
35365
  path: `${ROUTER_ROUTE_DATASET}/:metadataUuid`,
35130
35366
  component: this.routerConfig.recordRouteComponent,
35131
35367
  },
35368
+ {
35369
+ path: `${ROUTER_ROUTE_ORGANIZATION}/:name`,
35370
+ component: this.routerConfig.organizationRouteComponent,
35371
+ },
35132
35372
  ];
35133
35373
  }
35134
35374
  getSearchRoute() {
35135
35375
  return ROUTER_ROUTE_SEARCH;
35136
35376
  }
35377
+ getOrganizationPageRoute() {
35378
+ return ROUTER_ROUTE_ORGANIZATION;
35379
+ }
35137
35380
  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 }); }
35138
35381
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
35139
35382
  }
@@ -35180,6 +35423,13 @@ class RouterFacade {
35180
35423
  this.store.dispatch(setIncompleteMetadata({ incomplete: metadata }));
35181
35424
  });
35182
35425
  }
35426
+ goToOrganization(organizationName) {
35427
+ const path = `${this.routerService.getOrganizationPageRoute()}/${organizationName}`;
35428
+ this.go({
35429
+ path,
35430
+ queryParamsHandling: '',
35431
+ });
35432
+ }
35183
35433
  updateSearch(query) {
35184
35434
  this.go({
35185
35435
  path: this.routerService.getSearchRoute(),
@@ -35460,5 +35710,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
35460
35710
  * Generated bundle index. Do not edit.
35461
35711
  */
35462
35712
 
35463
- 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, 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 };
35713
+ 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 };
35464
35714
  //# sourceMappingURL=geonetwork-ui.mjs.map