geonetwork-ui 2.7.0-dev.54999b5e2 → 2.7.0-dev.652a07b0d

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 (405) hide show
  1. package/esm2022/index.mjs +1 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +4 -7
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +20 -20
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  9. package/esm2022/libs/api/repository/src/index.mjs +2 -2
  10. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +5 -5
  11. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +9 -10
  12. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +3 -3
  13. package/esm2022/libs/api/repository/src/lib/gn4/gn4.provider.mjs +26 -3
  14. package/esm2022/libs/api/repository/src/lib/gn4/organizations/index.mjs +3 -5
  15. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.mjs +5 -0
  16. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +3 -3
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +3 -3
  18. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.mjs +6 -0
  19. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +37 -23
  20. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +3 -1
  21. package/esm2022/libs/api/repository/src/lib/metadata-language.token.mjs +3 -0
  22. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +11 -1
  23. package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
  24. package/esm2022/libs/feature/catalog/src/index.mjs +1 -2
  25. package/esm2022/libs/feature/catalog/src/lib/organization-url.token.mjs +3 -1
  26. package/esm2022/libs/feature/catalog/src/lib/site-title/site-title.component.mjs +5 -4
  27. package/esm2022/libs/feature/catalog/src/lib/source-label/source-label.component.mjs +4 -3
  28. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +3 -3
  29. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +4 -4
  30. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +4 -4
  31. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -2
  32. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.mjs +55 -0
  33. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
  34. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -1
  35. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +6 -36
  36. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +77 -1
  37. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +10 -5
  38. package/esm2022/libs/feature/notifications/src/index.mjs +1 -2
  39. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +4 -2
  40. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +14 -4
  41. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +5 -43
  42. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +10 -5
  43. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +15 -5
  44. package/esm2022/libs/feature/record/src/lib/record-meta/record-meta.component.mjs +4 -2
  45. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +4 -2
  46. package/esm2022/libs/feature/router/src/lib/default/container/search-router.container.directive.mjs +3 -2
  47. package/esm2022/libs/feature/router/src/lib/default/router.module.mjs +2 -5
  48. package/esm2022/libs/feature/router/src/lib/default/state/query-params.utils.mjs +4 -3
  49. package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +3 -2
  50. package/esm2022/libs/feature/search/src/index.mjs +1 -2
  51. package/esm2022/libs/feature/search/src/lib/facets/facets-container/facets-container.component.mjs +12 -5
  52. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +24 -17
  53. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +4 -100
  54. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +9 -5
  55. package/esm2022/libs/feature/search/src/lib/records-metrics/records-metrics.component.mjs +6 -5
  56. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +9 -5
  57. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +7 -6
  58. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +19 -12
  59. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +2 -1
  60. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +7 -6
  61. package/esm2022/libs/feature/search/src/lib/state/container/search-state.container.directive.mjs +3 -2
  62. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +8 -2
  63. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +10 -4
  64. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +8 -2
  65. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +8 -2
  66. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +14 -4
  67. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +8 -2
  68. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +1 -4
  69. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +7 -7
  70. package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +8 -2
  71. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +1 -6
  72. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +14 -4
  73. package/esm2022/libs/ui/search/src/index.mjs +1 -3
  74. package/esm2022/libs/ui/search/src/lib/facets/facet-block/facet-block.component.mjs +14 -30
  75. package/esm2022/libs/ui/search/src/lib/facets/facet-item/facet-item.component.mjs +6 -27
  76. package/esm2022/libs/ui/search/src/lib/facets/facet-list/facet-list.component.mjs +7 -4
  77. package/esm2022/libs/ui/search/src/lib/record-metric/record-metric.component.mjs +5 -4
  78. package/esm2022/libs/ui/search/src/lib/record-preview/record-preview.component.mjs +5 -2
  79. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +5 -4
  80. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +36 -7
  81. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +11 -5
  82. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +5 -4
  83. package/esm2022/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.mjs +5 -4
  84. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +5 -4
  85. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +5 -4
  86. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +17 -7
  87. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +4 -2
  88. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +5 -4
  89. package/esm2022/libs/ui/search/src/lib/results-list-item/results-list-item.component.mjs +5 -3
  90. package/esm2022/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.mjs +14 -4
  91. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -2
  92. package/esm2022/libs/util/app-config/src/lib/parse-utils.mjs +5 -4
  93. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +50 -9
  94. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +33 -8
  95. package/esm2022/libs/util/shared/src/lib/record/quality-score.util.mjs +9 -8
  96. package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
  97. package/esm2022/libs/util/shared/src/lib/utils/scroll.mjs +40 -0
  98. package/esm2022/translations/de.json +53 -20
  99. package/esm2022/translations/en.json +54 -21
  100. package/esm2022/translations/es.json +40 -7
  101. package/esm2022/translations/fr.json +59 -26
  102. package/esm2022/translations/it.json +53 -20
  103. package/esm2022/translations/nl.json +40 -7
  104. package/esm2022/translations/pt.json +40 -7
  105. package/esm2022/translations/sk.json +44 -11
  106. package/fesm2022/geonetwork-ui.mjs +5717 -5857
  107. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  108. package/index.d.ts +0 -1
  109. package/index.d.ts.map +1 -1
  110. package/index.ts +0 -1
  111. package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -1
  112. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +1 -1
  113. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  114. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -2
  115. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  116. package/libs/api/repository/src/index.d.ts +1 -1
  117. package/libs/api/repository/src/index.d.ts.map +1 -1
  118. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +0 -1
  119. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  120. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts +5 -1
  121. package/libs/api/repository/src/lib/gn4/gn4.provider.d.ts.map +1 -1
  122. package/libs/api/repository/src/lib/gn4/organizations/index.d.ts +2 -3
  123. package/libs/api/repository/src/lib/gn4/organizations/index.d.ts.map +1 -1
  124. package/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.d.ts +4 -0
  125. package/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.d.ts.map +1 -0
  126. package/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.d.ts +9 -0
  127. package/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.d.ts.map +1 -0
  128. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +11 -8
  129. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  130. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +2 -0
  131. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  132. package/libs/api/repository/src/lib/metadata-language.token.d.ts +5 -0
  133. package/libs/api/repository/src/lib/metadata-language.token.d.ts.map +1 -0
  134. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +5 -1
  135. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  136. package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -0
  137. package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
  138. package/libs/feature/catalog/src/index.d.ts +0 -1
  139. package/libs/feature/catalog/src/index.d.ts.map +1 -1
  140. package/libs/feature/catalog/src/lib/organization-url.token.d.ts +1 -0
  141. package/libs/feature/catalog/src/lib/organization-url.token.d.ts.map +1 -1
  142. package/libs/feature/catalog/src/lib/site-title/site-title.component.d.ts +1 -1
  143. package/libs/feature/catalog/src/lib/site-title/site-title.component.d.ts.map +1 -1
  144. package/libs/feature/catalog/src/lib/source-label/source-label.component.d.ts +1 -1
  145. package/libs/feature/catalog/src/lib/source-label/source-label.component.d.ts.map +1 -1
  146. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  147. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -1
  148. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  149. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +1 -1
  150. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  151. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  152. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts +20 -0
  153. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.d.ts.map +1 -0
  154. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
  155. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  156. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts +1 -0
  157. package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
  158. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +3 -10
  159. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  160. package/libs/feature/editor/src/lib/fields.config.d.ts +8 -1
  161. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  162. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  163. package/libs/feature/notifications/src/index.d.ts +0 -1
  164. package/libs/feature/notifications/src/index.d.ts.map +1 -1
  165. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  166. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  167. package/libs/feature/record/src/lib/feature-record.module.d.ts +4 -11
  168. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  169. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  170. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  171. package/libs/feature/record/src/lib/record-meta/record-meta.component.d.ts.map +1 -1
  172. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  173. package/libs/feature/router/src/lib/default/container/search-router.container.directive.d.ts +1 -1
  174. package/libs/feature/router/src/lib/default/container/search-router.container.directive.d.ts.map +1 -1
  175. package/libs/feature/router/src/lib/default/router.module.d.ts +4 -5
  176. package/libs/feature/router/src/lib/default/router.module.d.ts.map +1 -1
  177. package/libs/feature/router/src/lib/default/state/query-params.utils.d.ts.map +1 -1
  178. package/libs/feature/router/src/lib/default/state/router.facade.d.ts.map +1 -1
  179. package/libs/feature/search/src/index.d.ts +0 -1
  180. package/libs/feature/search/src/index.d.ts.map +1 -1
  181. package/libs/feature/search/src/lib/facets/facets-container/facets-container.component.d.ts +1 -1
  182. package/libs/feature/search/src/lib/facets/facets-container/facets-container.component.d.ts.map +1 -1
  183. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +1 -0
  184. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  185. package/libs/feature/search/src/lib/feature-search.module.d.ts +3 -26
  186. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  187. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +1 -1
  188. package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
  189. package/libs/feature/search/src/lib/records-metrics/records-metrics.component.d.ts +1 -1
  190. package/libs/feature/search/src/lib/records-metrics/records-metrics.component.d.ts.map +1 -1
  191. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +1 -1
  192. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -1
  193. package/libs/feature/search/src/lib/results-layout/results-layout.component.d.ts +1 -1
  194. package/libs/feature/search/src/lib/results-layout/results-layout.component.d.ts.map +1 -1
  195. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  196. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  197. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +1 -1
  198. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  199. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts +1 -1
  200. package/libs/feature/search/src/lib/sort-by/sort-by.component.d.ts.map +1 -1
  201. package/libs/feature/search/src/lib/state/container/search-state.container.directive.d.ts +1 -1
  202. package/libs/feature/search/src/lib/state/container/search-state.container.directive.d.ts.map +1 -1
  203. package/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.d.ts.map +1 -1
  204. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  205. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  206. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  207. package/libs/ui/elements/src/lib/external-link-card/external-link-card.component.d.ts +1 -1
  208. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -1
  209. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -1
  210. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  211. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +0 -1
  212. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  213. package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -1
  214. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  215. package/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.d.ts.map +1 -1
  216. package/libs/ui/search/src/index.d.ts +0 -2
  217. package/libs/ui/search/src/index.d.ts.map +1 -1
  218. package/libs/ui/search/src/lib/facets/facet-block/facet-block.component.d.ts +1 -11
  219. package/libs/ui/search/src/lib/facets/facet-block/facet-block.component.d.ts.map +1 -1
  220. package/libs/ui/search/src/lib/facets/facet-item/facet-item.component.d.ts +1 -11
  221. package/libs/ui/search/src/lib/facets/facet-item/facet-item.component.d.ts.map +1 -1
  222. package/libs/ui/search/src/lib/facets/facet-list/facet-list.component.d.ts +1 -1
  223. package/libs/ui/search/src/lib/facets/facet-list/facet-list.component.d.ts.map +1 -1
  224. package/libs/ui/search/src/lib/record-metric/record-metric.component.d.ts +1 -1
  225. package/libs/ui/search/src/lib/record-metric/record-metric.component.d.ts.map +1 -1
  226. package/libs/ui/search/src/lib/record-preview/record-preview.component.d.ts +1 -1
  227. package/libs/ui/search/src/lib/record-preview/record-preview.component.d.ts.map +1 -1
  228. package/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.d.ts +1 -1
  229. package/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.d.ts.map +1 -1
  230. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts +1 -1
  231. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts.map +1 -1
  232. package/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.d.ts +1 -1
  233. package/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.d.ts.map +1 -1
  234. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts +1 -1
  235. package/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.d.ts.map +1 -1
  236. package/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.d.ts +1 -1
  237. package/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.d.ts.map +1 -1
  238. package/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.d.ts +1 -1
  239. package/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.d.ts.map +1 -1
  240. package/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.d.ts +1 -1
  241. package/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.d.ts.map +1 -1
  242. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +1 -1
  243. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -1
  244. package/libs/ui/search/src/lib/results-list/results-layout.config.d.ts +1 -1
  245. package/libs/ui/search/src/lib/results-list/results-layout.config.d.ts.map +1 -1
  246. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts +1 -1
  247. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  248. package/libs/ui/search/src/lib/results-list-item/results-list-item.component.d.ts +1 -1
  249. package/libs/ui/search/src/lib/results-list-item/results-list-item.component.d.ts.map +1 -1
  250. package/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.d.ts.map +1 -1
  251. package/libs/util/app-config/src/lib/parse-utils.d.ts.map +1 -1
  252. package/libs/util/i18n/src/lib/language-codes.d.ts +91 -31
  253. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  254. package/libs/util/shared/src/lib/links/link-utils.d.ts +26 -7
  255. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  256. package/libs/util/shared/src/lib/record/quality-score.util.d.ts.map +1 -1
  257. package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
  258. package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
  259. package/libs/util/shared/src/lib/utils/scroll.d.ts +12 -0
  260. package/libs/util/shared/src/lib/utils/scroll.d.ts.map +1 -0
  261. package/package.json +11 -10
  262. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +3 -6
  263. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +47 -22
  264. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +2 -2
  265. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +2 -2
  266. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  267. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  268. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +6 -6
  269. package/src/libs/api/repository/src/index.ts +1 -1
  270. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +4 -4
  271. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +15 -11
  272. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +2 -2
  273. package/src/libs/api/repository/src/lib/gn4/gn4.provider.ts +38 -2
  274. package/src/libs/api/repository/src/lib/gn4/organizations/index.ts +2 -11
  275. package/src/libs/api/repository/src/lib/gn4/organizations/organization-strategy.token.ts +10 -0
  276. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +2 -2
  277. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +2 -2
  278. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-service.factory.ts +33 -0
  279. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +38 -40
  280. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +8 -0
  281. package/src/libs/api/repository/src/lib/metadata-language.token.ts +8 -0
  282. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +17 -1
  283. package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -0
  284. package/src/libs/feature/catalog/src/index.ts +0 -1
  285. package/src/libs/feature/catalog/src/lib/organization-url.token.ts +5 -0
  286. package/src/libs/feature/catalog/src/lib/site-title/site-title.component.ts +4 -0
  287. package/src/libs/feature/catalog/src/lib/source-label/source-label.component.ts +3 -0
  288. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +2 -5
  289. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -4
  290. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +3 -3
  291. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +8 -1
  292. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.css +0 -0
  293. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.html +22 -0
  294. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-inspire-field/form-field-inspire-theme.component.ts +57 -0
  295. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
  296. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  297. package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -0
  298. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +2 -18
  299. package/src/libs/feature/editor/src/lib/fields.config.ts +85 -1
  300. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +8 -1
  301. package/src/libs/feature/notifications/src/index.ts +0 -1
  302. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -1
  303. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +7 -2
  304. package/src/libs/feature/record/src/lib/feature-record.module.ts +1 -21
  305. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +5 -2
  306. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +12 -3
  307. package/src/libs/feature/record/src/lib/record-meta/record-meta.component.ts +2 -0
  308. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -2
  309. package/src/libs/feature/router/src/lib/default/container/search-router.container.directive.ts +1 -0
  310. package/src/libs/feature/router/src/lib/default/router.module.ts +0 -3
  311. package/src/libs/feature/router/src/lib/default/state/query-params.utils.ts +5 -2
  312. package/src/libs/feature/router/src/lib/default/state/router.facade.ts +2 -1
  313. package/src/libs/feature/search/src/index.ts +0 -1
  314. package/src/libs/feature/search/src/lib/facets/facets-container/facets-container.component.ts +14 -1
  315. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +23 -16
  316. package/src/libs/feature/search/src/lib/feature-search.module.ts +0 -61
  317. package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +12 -1
  318. package/src/libs/feature/search/src/lib/records-metrics/records-metrics.component.ts +5 -0
  319. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +11 -0
  320. package/src/libs/feature/search/src/lib/results-layout/results-layout.component.ts +5 -0
  321. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +21 -1
  322. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +1 -1
  323. package/src/libs/feature/search/src/lib/sort-by/sort-by.component.ts +5 -0
  324. package/src/libs/feature/search/src/lib/state/container/search-state.container.directive.ts +1 -0
  325. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +4 -1
  326. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -1
  327. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +4 -1
  328. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -1
  329. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +4 -1
  330. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +7 -2
  331. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +8 -1
  332. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +0 -4
  333. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -6
  334. package/src/libs/ui/elements/src/lib/notification/notification.component.ts +8 -1
  335. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +0 -6
  336. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.ts +7 -2
  337. package/src/libs/ui/search/src/index.ts +0 -2
  338. package/src/libs/ui/search/src/lib/facets/facet-block/facet-block.component.ts +12 -11
  339. package/src/libs/ui/search/src/lib/facets/facet-item/facet-item.component.ts +5 -11
  340. package/src/libs/ui/search/src/lib/facets/facet-list/facet-list.component.ts +6 -0
  341. package/src/libs/ui/search/src/lib/record-metric/record-metric.component.ts +4 -0
  342. package/src/libs/ui/search/src/lib/record-preview/record-preview.component.ts +3 -0
  343. package/src/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.ts +4 -0
  344. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +33 -1
  345. package/src/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.ts +10 -0
  346. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.ts +4 -0
  347. package/src/libs/ui/search/src/lib/record-preview-text/record-preview-text.component.ts +4 -0
  348. package/src/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.ts +4 -0
  349. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.ts +4 -0
  350. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -4
  351. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +16 -2
  352. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +5 -3
  353. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +4 -0
  354. package/src/libs/ui/search/src/lib/results-list-item/results-list-item.component.ts +3 -0
  355. package/src/libs/ui/widgets/src/lib/popup-alert/popup-alert.component.ts +6 -1
  356. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -1
  357. package/src/libs/util/app-config/src/lib/parse-utils.ts +4 -7
  358. package/src/libs/util/i18n/src/lib/language-codes.ts +62 -11
  359. package/src/libs/util/shared/src/lib/links/link-utils.ts +32 -7
  360. package/src/libs/util/shared/src/lib/record/quality-score.util.ts +13 -10
  361. package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
  362. package/src/libs/util/shared/src/lib/utils/scroll.ts +48 -0
  363. package/translations/de.json +53 -20
  364. package/translations/en.json +54 -21
  365. package/translations/es.json +40 -7
  366. package/translations/fr.json +59 -26
  367. package/translations/it.json +53 -20
  368. package/translations/nl.json +40 -7
  369. package/translations/pt.json +40 -7
  370. package/translations/sk.json +44 -11
  371. package/esm2022/libs/api/repository/src/lib/metadata-language.mjs +0 -3
  372. package/esm2022/libs/feature/auth/src/index.mjs +0 -2
  373. package/esm2022/libs/feature/auth/src/lib/feature-auth.module.mjs +0 -17
  374. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +0 -57
  375. package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +0 -18
  376. package/esm2022/libs/feature/search/src/lib/facets/facets.module.mjs +0 -21
  377. package/esm2022/libs/ui/search/src/lib/facets/facets.module.mjs +0 -23
  378. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +0 -168
  379. package/esm2022/libs/util/app-config/src/lib/constants.mjs +0 -439
  380. package/libs/api/repository/src/lib/metadata-language.d.ts +0 -3
  381. package/libs/api/repository/src/lib/metadata-language.d.ts.map +0 -1
  382. package/libs/feature/auth/src/index.d.ts +0 -2
  383. package/libs/feature/auth/src/index.d.ts.map +0 -1
  384. package/libs/feature/auth/src/lib/feature-auth.module.d.ts +0 -8
  385. package/libs/feature/auth/src/lib/feature-auth.module.d.ts.map +0 -1
  386. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +0 -14
  387. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +0 -1
  388. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +0 -7
  389. package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +0 -1
  390. package/libs/feature/search/src/lib/facets/facets.module.d.ts +0 -11
  391. package/libs/feature/search/src/lib/facets/facets.module.d.ts.map +0 -1
  392. package/libs/ui/search/src/lib/facets/facets.module.d.ts +0 -13
  393. package/libs/ui/search/src/lib/facets/facets.module.d.ts.map +0 -1
  394. package/libs/ui/search/src/lib/ui-search.module.d.ts +0 -36
  395. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +0 -1
  396. package/libs/util/app-config/src/lib/constants.d.ts +0 -2
  397. package/libs/util/app-config/src/lib/constants.d.ts.map +0 -1
  398. package/src/libs/api/repository/src/lib/metadata-language.ts +0 -3
  399. package/src/libs/feature/auth/src/index.ts +0 -1
  400. package/src/libs/feature/auth/src/lib/feature-auth.module.ts +0 -12
  401. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +0 -71
  402. package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +0 -10
  403. package/src/libs/feature/search/src/lib/facets/facets.module.ts +0 -12
  404. package/src/libs/ui/search/src/lib/facets/facets.module.ts +0 -14
  405. package/src/libs/ui/search/src/lib/ui-search.module.ts +0 -108
@@ -1,3 +1,4 @@
1
+ import { CommonModule } from '@angular/common'
1
2
  import {
2
3
  Component,
3
4
  EventEmitter,
@@ -6,11 +7,20 @@ import {
6
7
  SimpleChanges,
7
8
  Output,
8
9
  } from '@angular/core'
9
- import { Choice } from '../../../../../../libs/ui/inputs/src'
10
+ import { KindBadgeComponent } from '../../../../../../libs/ui/elements/src'
11
+ import { Choice, InlineFilterComponent } from '../../../../../../libs/ui/inputs/src'
12
+ import { TranslatePipe } from '@ngx-translate/core'
10
13
 
11
14
  @Component({
12
15
  selector: 'gn-ui-results-hits-search-kind',
13
16
  templateUrl: './results-hits-search-kind.component.html',
17
+ standalone: true,
18
+ imports: [
19
+ CommonModule,
20
+ InlineFilterComponent,
21
+ KindBadgeComponent,
22
+ TranslatePipe,
23
+ ],
14
24
  })
15
25
  export class ResultsHitsSearchKindComponent implements OnChanges {
16
26
  @Input() selected: string[] = []
@@ -38,7 +48,11 @@ export class ResultsHitsSearchKindComponent implements OnChanges {
38
48
  }
39
49
 
40
50
  onSelectedValues(values: string[]) {
41
- const selectedValues = values.includes('all') ? [] : values
51
+ const selectedValues = values.includes('all')
52
+ ? []
53
+ : values.length > 1
54
+ ? [values[values.length - 1]]
55
+ : values
42
56
 
43
57
  this.selectionChanged.emit(selectedValues)
44
58
  }
@@ -20,9 +20,6 @@ export class ResultsLayoutConfigItem {
20
20
  }
21
21
  export type ResultsLayoutConfigModel = Record<string, ResultsLayoutConfigItem>
22
22
 
23
- export const RESULTS_LAYOUT_CONFIG =
24
- new InjectionToken<ResultsLayoutConfigModel>('results-layout.config')
25
-
26
23
  export const DEFAULT_RESULTS_LAYOUT_CONFIG: ResultsLayoutConfigModel = {
27
24
  CARD: new ResultsLayoutConfigItem(
28
25
  RecordPreviewCardComponent,
@@ -46,3 +43,8 @@ export const DEFAULT_RESULTS_LAYOUT_CONFIG: ResultsLayoutConfigModel = {
46
43
  TEXT: new ResultsLayoutConfigItem(RecordPreviewTextComponent),
47
44
  TITLE: new ResultsLayoutConfigItem(RecordPreviewTitleComponent),
48
45
  }
46
+
47
+ export const RESULTS_LAYOUT_CONFIG =
48
+ new InjectionToken<ResultsLayoutConfigModel>('results-layout.config', {
49
+ factory: () => DEFAULT_RESULTS_LAYOUT_CONFIG,
50
+ })
@@ -11,12 +11,16 @@ import {
11
11
  ResultsLayoutConfigItem,
12
12
  } from './results-layout.config'
13
13
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
14
+ import { ResultsListItemComponent } from '../results-list-item/results-list-item.component'
15
+ import { CommonModule } from '@angular/common'
14
16
 
15
17
  @Component({
16
18
  selector: 'gn-ui-results-list',
17
19
  templateUrl: './results-list.component.html',
18
20
  styleUrls: ['./results-list.component.css'],
19
21
  changeDetection: ChangeDetectionStrategy.OnPush,
22
+ standalone: true,
23
+ imports: [CommonModule, ResultsListItemComponent],
20
24
  })
21
25
  export class ResultsListComponent {
22
26
  @Input() records: CatalogRecord[]
@@ -14,12 +14,15 @@ import {
14
14
  import { RecordPreviewComponent } from '../record-preview/record-preview.component'
15
15
  import { ResultsLayoutConfigItem } from '../results-list/results-layout.config'
16
16
  import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
17
+ import { CommonModule } from '@angular/common'
17
18
 
18
19
  @Component({
19
20
  selector: 'gn-ui-results-list-item',
20
21
  templateUrl: './results-list-item.component.html',
21
22
  styleUrls: ['./results-list-item.component.css'],
22
23
  changeDetection: ChangeDetectionStrategy.OnPush,
24
+ standalone: true,
25
+ imports: [CommonModule, RecordPreviewComponent],
23
26
  })
24
27
  export class ResultsListItemComponent implements OnChanges, AfterViewInit {
25
28
  @Input() layoutConfig: ResultsLayoutConfigItem
@@ -22,7 +22,12 @@ import { matErrorOutlineOutline } from '@ng-icons/material-icons/outline'
22
22
  changeDetection: ChangeDetectionStrategy.OnPush,
23
23
  standalone: true,
24
24
  imports: [CommonModule, NgIconComponent],
25
- providers: [provideIcons({ matErrorOutlineOutline })],
25
+ providers: [
26
+ provideIcons({ matErrorOutlineOutline }),
27
+ provideNgIconsConfig({
28
+ size: '1.5em',
29
+ }),
30
+ ],
26
31
  })
27
32
  export class PopupAlertComponent implements OnInit {
28
33
  @Input() icon: string
@@ -124,7 +124,7 @@ export const wrongLanguageCodeConfigFixture = () => `
124
124
  [global]
125
125
  geonetwork4_api_url = "/geonetwork/srv/api"
126
126
  proxy_path = "/proxy/?url="
127
- metadata_language = "fra"
127
+ metadata_language = "abc"
128
128
 
129
129
  [map]
130
130
 
@@ -1,4 +1,4 @@
1
- import { LANGUAGE_CODES_ISO_3 } from './constants'
1
+ import { toLang2 } from '../../../../../libs/util/i18n/src'
2
2
 
3
3
  const flatten = (
4
4
  base: string,
@@ -129,13 +129,10 @@ export function checkMetadataLanguage(
129
129
  parsedConfigSection: any,
130
130
  outWarnings: string[]
131
131
  ) {
132
- if (
133
- LANGUAGE_CODES_ISO_3.indexOf(
134
- parsedConfigSection.metadata_language.toLowerCase()
135
- ) === -1
136
- ) {
132
+ const lang2 = toLang2(parsedConfigSection.metadata_language.toLowerCase())
133
+ if (lang2?.length !== 2) {
137
134
  outWarnings.push(
138
- `In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not in ISO 639-2/B format`
135
+ `In the [global] section: metadata_language = "${parsedConfigSection.metadata_language}" is not a recognized ISO 639 language code`
139
136
  )
140
137
  }
141
138
  return parsedConfigSection
@@ -1,20 +1,32 @@
1
1
  import { marker } from '@biesbjerg/ngx-translate-extract-marker'
2
2
 
3
+ /**
4
+ * Taken from https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
5
+ * Note: some languages have multiple 3-char codes, like 'fre' and 'fra'; in that case, the one to be used
6
+ * in priority is the one defined last
7
+ */
3
8
  const LANG_3_TO_2_MAPPER = {
4
9
  eng: 'en',
10
+ nld: 'nl', // duplicate for "dut"
5
11
  dut: 'nl',
12
+ fra: 'fr', // duplicate for "fre"
6
13
  fre: 'fr',
14
+ deu: 'de', // duplicate for "ger"
7
15
  ger: 'de',
8
16
  kor: 'ko',
9
17
  spa: 'es',
18
+ ces: 'cs', // duplicate for "cze"
10
19
  cze: 'cs',
11
20
  cat: 'ca',
12
21
  fin: 'fi',
22
+ isl: 'is', // duplicate for "ice"
13
23
  ice: 'is',
14
24
  ita: 'it',
15
25
  por: 'pt',
16
26
  rus: 'ru',
27
+ zho: 'zh', // duplicate for "chi"
17
28
  chi: 'zh',
29
+ slk: 'sk', // duplicate for "slo"
18
30
  slo: 'sk',
19
31
  roh: 'rm',
20
32
  ara: 'ar',
@@ -25,10 +37,12 @@ const LANG_3_TO_2_MAPPER = {
25
37
  tur: 'tr',
26
38
  arm: 'hy',
27
39
  aze: 'az',
40
+ kat: 'ka', // duplicate for "geo"
28
41
  geo: 'ka',
29
42
  ukr: 'uk',
43
+ cym: 'cy', // duplicate for "wel"
30
44
  wel: 'cy',
31
- }
45
+ } as const
32
46
 
33
47
  export const LANGUAGE_NAMES = {
34
48
  en: 'English',
@@ -58,26 +72,63 @@ export const LANGUAGE_NAMES = {
58
72
  ka: 'ქართული',
59
73
  uk: 'українська',
60
74
  wel: 'Cymraeg',
61
- }
75
+ } as const
76
+
77
+ export type LanguageCode3 = keyof typeof LANG_3_TO_2_MAPPER
78
+ export type LanguageCode2 = (typeof LANG_3_TO_2_MAPPER)[LanguageCode3]
62
79
 
63
80
  export const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce(
64
81
  (mapperObject, langEntry) => {
65
82
  return { ...mapperObject, [langEntry[1]]: langEntry[0] }
66
83
  },
67
84
  {}
68
- )
85
+ ) as Record<LanguageCode2, LanguageCode3>
69
86
 
70
- export function getLang3FromLang2(lang2: string): string {
71
- return LANG_2_TO_3_MAPPER[lang2] ?? lang2
72
- }
87
+ /**
88
+ * This can be:
89
+ * - an ISO 639-2 language code in 3 characters (e.g. 'eng', 'fre', 'ger')
90
+ * - an ISO 639-1 language code in 2 characters (e.g. 'en', 'fr', 'de')
91
+ * - a 2-character language code with locale (e.g. 'fr_FR', 'fr_CA')
92
+ */
93
+ export type LanguageCodeLike = LanguageCode2 | LanguageCode3 | string
73
94
 
74
- export function getLang2FromLang3(lang3: string): string {
75
- return LANG_3_TO_2_MAPPER[lang3] ?? lang3
95
+ /**
96
+ * Converts a language code in any format to the ISO 639-2 format (3 characters)
97
+ * Returns the given string if the corresponding language code could not be recognized
98
+ */
99
+ export function toLang3(lang: LanguageCodeLike): LanguageCode3 | string {
100
+ if (!lang) {
101
+ // also handle falsy values just in case
102
+ return lang
103
+ }
104
+ if (lang.length === 3) {
105
+ return LANG_2_TO_3_MAPPER[LANG_3_TO_2_MAPPER[lang.toLowerCase()]] ?? lang
106
+ }
107
+ const lang2 = lang.toLowerCase().substring(0, 2)
108
+ return LANG_2_TO_3_MAPPER[lang2] ?? lang
76
109
  }
77
110
 
78
- export function getLocalizedIndexKey(lang2: string): string {
79
- const lang3 = getLang3FromLang2(lang2)
80
- return lang3 ? `lang${lang3}` : null
111
+ /**
112
+ * Converts a language code in any format to the ISO 639-1 format (2 characters)
113
+ * Returns the given string if the corresponding language code could not be recognized
114
+ */
115
+ export function toLang2(lang: LanguageCodeLike): LanguageCode2 | string {
116
+ if (!lang) {
117
+ // also handle falsy values just in case
118
+ return lang
119
+ }
120
+ if (lang.length === 3) {
121
+ return LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang
122
+ }
123
+ const lang2 = lang.toLowerCase().substring(0, 2)
124
+ if (lang2 in LANG_2_TO_3_MAPPER) {
125
+ return lang2
126
+ }
127
+ if (lang.match(/[a-z]{2}_[A-Z]{2}/)) {
128
+ // remove locale code even if the language code is not known
129
+ return lang2
130
+ }
131
+ return lang
81
132
  }
82
133
 
83
134
  marker('language.en')
@@ -75,10 +75,17 @@ export const FORMATS = {
75
75
  mimeTypes: ['application/geopackage+sqlite3'],
76
76
  },
77
77
  zip: {
78
- extensions: ['zip', 'tar.gz'],
78
+ extensions: ['zip', 'tar.gz', 'gz', '7z', '7zip'],
79
79
  priority: 8,
80
80
  color: '#B0CB52',
81
- mimeTypes: ['application/zip', 'application/x-zip'],
81
+ mimeTypes: [
82
+ 'application/zip',
83
+ 'application/x-zip',
84
+ 'application/x-compressed',
85
+ 'application/x-7z-compressed',
86
+ 'application/gzip',
87
+ 'application/x-gzip',
88
+ ],
82
89
  },
83
90
  pdf: {
84
91
  extensions: ['pdf'],
@@ -92,39 +99,57 @@ export const FORMATS = {
92
99
  color: '#C4A98F',
93
100
  mimeTypes: ['image/jpg'],
94
101
  },
102
+ png: {
103
+ extensions: ['png'],
104
+ priority: 10,
105
+ color: '#8B5A3C',
106
+ mimeTypes: ['image/png'],
107
+ },
108
+ tiff: {
109
+ extensions: ['tiff', 'tif', 'geotiff', 'geotif'],
110
+ priority: 11,
111
+ color: '#6B4423',
112
+ mimeTypes: ['image/tiff'],
113
+ },
95
114
  svg: {
96
115
  extensions: ['svg'],
97
- priority: 10,
116
+ priority: 12,
98
117
  color: '#EB6D82',
99
118
  mimeTypes: ['image/svg+xml'],
100
119
  },
101
120
  dxf: {
102
121
  extensions: ['dxf'],
103
- priority: 11,
122
+ priority: 13,
104
123
  color: '#DCCD00',
105
124
  mimeTypes: ['application/x-dxf', 'image/x-dxf'],
106
125
  },
107
126
  html: {
108
127
  extensions: ['html', 'htm'],
109
- priority: 12,
128
+ priority: 14,
110
129
  color: '#C0C9B6',
111
130
  mimeTypes: ['text/html'],
112
131
  },
113
132
  fgb: {
114
133
  extensions: ['fgb', 'flatgeobuf'],
115
- priority: 13,
134
+ priority: 15,
116
135
  color: '#A8111C',
117
136
  mimeTypes: ['application/flatgeobuf'],
118
137
  },
119
138
  jsonfg: {
120
139
  extensions: ['jsonfg', 'jsonfgc'],
121
- priority: 14,
140
+ priority: 16,
122
141
  color: '#009EE0',
123
142
  mimeTypes: [
124
143
  'application/vnd.ogc.fg+json',
125
144
  'application/vnd.ogc.fg+json;compatibility=geojson',
126
145
  ],
127
146
  },
147
+ webp: {
148
+ extensions: ['webp'],
149
+ priority: 17,
150
+ color: '#5A9E6F',
151
+ mimeTypes: ['image/webp'],
152
+ },
128
153
  } as const
129
154
 
130
155
  export type FileFormat = keyof typeof FORMATS
@@ -11,15 +11,18 @@ const ValidatorMapper: TValidatorMapper = {
11
11
  title: (record) => !!record?.title,
12
12
  abstract: (record) => !!record?.abstract,
13
13
  keywords: (record) => (record?.keywords?.length ?? 0) > 0,
14
- legalConstraints: (record) => (record?.legalConstraints?.length ?? 0) > 0,
15
- contacts: (record) => !!record?.contacts?.[0]?.email,
16
- updateFrequency: (record) => !!record?.updateFrequency,
14
+ legalConstraints: (record) =>
15
+ !!(
16
+ record?.legalConstraints?.length &&
17
+ record.legalConstraints.some((c) => c?.text?.trim().length > 0)
18
+ ),
19
+ contacts: (record) =>
20
+ !!record?.contacts?.[0]?.email &&
21
+ record.contacts[0].email !== 'missing@missing.com',
22
+ updateFrequency: (record) =>
23
+ !!record?.updateFrequency && record.updateFrequency !== 'unknown',
17
24
  topics: (record) => (record?.topics?.length ?? 0) > 0,
18
25
  organisation: (record) => !!record?.contacts?.[0]?.organization?.name,
19
- capabilities: (record) =>
20
- record?.onlineResources?.some((resource) =>
21
- resource?.url?.href.toLowerCase().includes('capabilities')
22
- ),
23
26
  source: (record) => !!record?.extras?.sourcesIdentifiers,
24
27
  } as const
25
28
 
@@ -40,12 +43,12 @@ function getMappersFromKind(kind: RecordKind) {
40
43
  ]
41
44
 
42
45
  switch (kind) {
43
- case 'service':
44
- kindKeys = ['capabilities']
45
- break
46
46
  case 'reuse':
47
47
  kindKeys = ['topics', 'organisation', 'source']
48
48
  break
49
+ case 'service':
50
+ kindKeys = []
51
+ break
49
52
  case 'dataset':
50
53
  default:
51
54
  kindKeys = ['updateFrequency', 'topics', 'organisation']
@@ -8,6 +8,7 @@ export * from './mobile-screen'
8
8
  export * from './no-duplicate-file-name'
9
9
  export * from './parse'
10
10
  export * from './remove-whitespace'
11
+ export * from './scroll'
11
12
  export * from './sort-by'
12
13
  export * from './strip-html'
13
14
  export * from './temporal-extent-union'
@@ -0,0 +1,48 @@
1
+ import { ViewportScroller } from '@angular/common'
2
+ import { Event, NavigationEnd, Router, Scroll } from '@angular/router'
3
+ import { filter, pairwise, tap } from 'rxjs'
4
+
5
+ /**
6
+ * When route is changed, Angular interprets a simple query params change as "forward navigation" too.
7
+ * Using the pairwise function allows us to have both the previous and current router events, which we can
8
+ * use to effectively compare the two navigation events and see if they actually change route, or only
9
+ * the route parameters (i.e. search params stored in query params).
10
+ *
11
+ * Related to: https://github.com/angular/angular/issues/26744
12
+ */
13
+ export function handleScrollOnNavigation(
14
+ router: Router,
15
+ viewportScroller: ViewportScroller
16
+ ): void {
17
+ router.events
18
+ .pipe(
19
+ filter((e: Event): e is Scroll => e instanceof Scroll),
20
+ pairwise()
21
+ )
22
+ .subscribe(([previous, current]: [Scroll, Scroll]) => {
23
+ if (current.position) {
24
+ // Backward navigation
25
+ viewportScroller.scrollToPosition(current.position)
26
+ } else if (current.anchor) {
27
+ // Anchor navigation
28
+ viewportScroller.scrollToAnchor(current.anchor)
29
+ } else {
30
+ // Check if routes match, or if it is only a query param change
31
+ if (
32
+ previous.routerEvent instanceof NavigationEnd &&
33
+ current.routerEvent instanceof NavigationEnd &&
34
+ getBaseRoute(previous.routerEvent.urlAfterRedirects) !==
35
+ getBaseRoute(current.routerEvent.urlAfterRedirects)
36
+ ) {
37
+ // Routes don't match, this is actual forward navigation
38
+ // Default behavior: scroll to top
39
+ viewportScroller.scrollToPosition([0, 0])
40
+ }
41
+ }
42
+ })
43
+ }
44
+
45
+ function getBaseRoute(url: string): string {
46
+ // return url without query params
47
+ return url.split('?')[0]
48
+ }
@@ -3,7 +3,7 @@
3
3
  "Add Layer As": "",
4
4
  "Enter to search": "",
5
5
  "button.login": "",
6
- "catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
6
+ "catalog.figures.datasets": "{count, plural, =0{Ressource} one{Ressource} other{Ressourcen}}",
7
7
  "catalog.figures.organizations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
8
8
  "chart.aggregation.average": "Durchschnitt",
9
9
  "chart.aggregation.count": "Anzahl",
@@ -184,6 +184,26 @@
184
184
  "editor.record.form.field.topics": "Kategorien",
185
185
  "editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
186
186
  "editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
187
+ "editor.record.form.inspire.biota": "",
188
+ "editor.record.form.inspire.boundaries": "",
189
+ "editor.record.form.inspire.climatology": "",
190
+ "editor.record.form.inspire.economy": "",
191
+ "editor.record.form.inspire.elevation": "",
192
+ "editor.record.form.inspire.environnement": "",
193
+ "editor.record.form.inspire.farming": "",
194
+ "editor.record.form.inspire.geoscientific": "",
195
+ "editor.record.form.inspire.health": "",
196
+ "editor.record.form.inspire.imagery": "",
197
+ "editor.record.form.inspire.intelligence": "",
198
+ "editor.record.form.inspire.location": "",
199
+ "editor.record.form.inspire.oceans": "",
200
+ "editor.record.form.inspire.placeholder": "",
201
+ "editor.record.form.inspire.planning": "",
202
+ "editor.record.form.inspire.society": "",
203
+ "editor.record.form.inspire.structure": "",
204
+ "editor.record.form.inspire.transportation": "",
205
+ "editor.record.form.inspire.utilities": "",
206
+ "editor.record.form.inspire.waters": "",
187
207
  "editor.record.form.keywords.place.placeholder": "",
188
208
  "editor.record.form.keywords.place.withoutExtent": "",
189
209
  "editor.record.form.keywords.placeholder": "",
@@ -219,6 +239,8 @@
219
239
  "editor.record.form.section.dataManagers.description": "",
220
240
  "editor.record.form.section.dataManagers.label": "",
221
241
  "editor.record.form.section.geographicalCoverage.label": "",
242
+ "editor.record.form.section.inspire.description": "",
243
+ "editor.record.form.section.inspire.label": "",
222
244
  "editor.record.form.section.metadataPointOfContact.description": "",
223
245
  "editor.record.form.section.metadataPointOfContact.label": "",
224
246
  "editor.record.form.section.useAndAccessConditions.label": "",
@@ -367,10 +389,10 @@
367
389
  "organisations.sortBy.nameDesc": "Name Z → A",
368
390
  "organisations.sortBy.recordCountAsc": "Veröffentlichungen 0 → 9",
369
391
  "organisations.sortBy.recordCountDesc": "Veröffentlichungen 9 → 0",
370
- "organization.details.lastPublishedDatasets": "",
392
+ "organization.details.lastPublishedDatasets": "Zuletzt veröffentlichte Ressourcen",
371
393
  "organization.details.lastPublishedDatasets.searchAllButton": "",
372
394
  "organization.details.mailContact": "",
373
- "organization.header.recordCount": "{count, plural, =0{} one{} other{}}",
395
+ "organization.header.recordCount": "{count, plural, =0{Veröffentlichung} one{Veröffentlichung} other{Veröffentlichungen}}",
374
396
  "pagination.nextPage": "Nächste Seite",
375
397
  "pagination.page": "Seite",
376
398
  "pagination.pageOf": "von",
@@ -390,6 +412,16 @@
390
412
  "record.kind.service": "",
391
413
  "record.metadata.about": "Beschreibung",
392
414
  "record.metadata.api": "API",
415
+ "record.metadata.api.accessServiceProtocol.GPFDL": "",
416
+ "record.metadata.api.accessServiceProtocol.esriRest": "",
417
+ "record.metadata.api.accessServiceProtocol.maplibre-style": "",
418
+ "record.metadata.api.accessServiceProtocol.ogcFeatures": "",
419
+ "record.metadata.api.accessServiceProtocol.other": "",
420
+ "record.metadata.api.accessServiceProtocol.tms": "",
421
+ "record.metadata.api.accessServiceProtocol.wfs": "",
422
+ "record.metadata.api.accessServiceProtocol.wms": "",
423
+ "record.metadata.api.accessServiceProtocol.wmts": "",
424
+ "record.metadata.api.accessServiceProtocol.wps": "",
393
425
  "record.metadata.api.form.closeButton": "Schließen",
394
426
  "record.metadata.api.form.closeForm": "Formular schließen",
395
427
  "record.metadata.api.form.create": "Ihre Anfrage erstellen",
@@ -451,12 +483,12 @@
451
483
  "record.metadata.publication": "Veröffentlichungsdatum",
452
484
  "record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
453
485
  "record.metadata.quality": "Metadatenqualität",
486
+ "record.metadata.quality.abstract.failed": "Beschreibung nicht angegeben",
487
+ "record.metadata.quality.abstract.success": "Beschreibung angegeben",
454
488
  "record.metadata.quality.capabilities.failed": "",
455
- "record.metadata.quality.capabilities.success": "",
456
- "record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
457
- "record.metadata.quality.contact.success": "Kontakt angegeben",
458
- "record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
459
- "record.metadata.quality.description.success": "Beschreibung angegeben",
489
+ "record.metadata.quality.capabilities.success": "Kontakt angegeben",
490
+ "record.metadata.quality.contacts.failed": "Kontakt nicht angegeben",
491
+ "record.metadata.quality.contacts.success": "",
460
492
  "record.metadata.quality.details": "Details",
461
493
  "record.metadata.quality.keywords.failed": "Schlagwörter nicht angegeben",
462
494
  "record.metadata.quality.keywords.success": "Schlagwörter angegeben",
@@ -468,8 +500,8 @@
468
500
  "record.metadata.quality.source.success": "",
469
501
  "record.metadata.quality.title.failed": "Titel nicht angegeben",
470
502
  "record.metadata.quality.title.success": "Titel angegeben",
471
- "record.metadata.quality.topic.failed": "Thema nicht angegeben",
472
- "record.metadata.quality.topic.success": "Thema angegeben",
503
+ "record.metadata.quality.topics.failed": "Thema nicht angegeben",
504
+ "record.metadata.quality.topics.success": "Thema angegeben",
473
505
  "record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
474
506
  "record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
475
507
  "record.metadata.related": "Entdecken Sie den Katalog",
@@ -490,6 +522,7 @@
490
522
  "record.metadata.usage": "Nutzung und Einschränkungen",
491
523
  "record.metadata.userFeedbacks": "",
492
524
  "record.metadata.userFeedbacks.anonymousUser": "",
525
+ "record.metadata.userFeedbacks.authDisabled": "",
493
526
  "record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
494
527
  "record.metadata.userFeedbacks.newAnswer.placeholder": "",
495
528
  "record.metadata.userFeedbacks.newComment.placeholder": "",
@@ -500,18 +533,18 @@
500
533
  "record.tab.chart": "Diagramm",
501
534
  "record.tab.data": "Tabelle",
502
535
  "record.tab.map": "Karte",
503
- "record.was.created.time": "erstellte diesen Datensatz {time}",
536
+ "record.was.created.time": "erstellte diesen Ressource {time}",
504
537
  "records": "Datensätze",
505
538
  "results.layout.selectOne": "Layout auswählen",
506
- "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Datensatz.} one{1 Datensatz} other{{displayed} Datensätze }} {hits, plural, other{angezeigt von {hits} insgesamt.}}",
539
+ "results.records.hits.displayedOn": "{displayed, plural, =0{Kein Ressource.} one{1 } other{{displayed} }} {hits, plural, other{von insgesamt {hits} angezeigt.}}",
507
540
  "results.records.hits.empty.help.html": "Vorschläge: <ul class='list-disc list-inside'><li>Versuchen Sie es mit anderen Worten</li><li>Beschränken Sie die Suchwörter</li></ul>",
508
- "results.records.hits.found": "{hits, plural, =0{Keine Dokumente entsprechen der angegebenen Suche.} one{1 Datensatz gefunden.} other{{hits} Datensätze gefunden.}}",
541
+ "results.records.hits.found": "{hits, plural, =0{Keine Ressource entsprechen der angegebenen Suche.} one{1 Ressource gefunden.} other{{hits} Ressourcen gefunden.}}",
509
542
  "results.records.hits.selected": "{ amount } ausgewählt",
510
543
  "results.showMore": "Mehr Ergebnisse anzeigen...",
511
544
  "results.sortBy.changeDate": "",
512
545
  "results.sortBy.dateStamp": "Neueste",
513
546
  "results.sortBy.popularity": "Beliebtheit",
514
- "results.sortBy.qualityScore": "Qualitätsbewertung",
547
+ "results.sortBy.qualityScore": "Fertigstellungsanzeige",
515
548
  "results.sortBy.relevancy": "Relevanz",
516
549
  "reuse.metadata.access": "",
517
550
  "search.autocomplete.error": "Vorschläge konnten nicht abgerufen werden:",
@@ -520,7 +553,7 @@
520
553
  "search.error.organizationNotFound": "",
521
554
  "search.error.receivedError": "Ein Fehler ist aufgetreten",
522
555
  "search.error.recordHasnolink": "",
523
- "search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
556
+ "search.error.recordNotFound": "Die Ressource mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
524
557
  "search.field.any.placeholder": "Suche im katalog ...",
525
558
  "search.field.sortBy": "Sortieren nach:",
526
559
  "search.filter.into.feature.catalog": "",
@@ -547,10 +580,10 @@
547
580
  "search.filters.license.unknown": "Unbekannt oder nicht vorhanden",
548
581
  "search.filters.maximize": "Erweitern",
549
582
  "search.filters.minimize": "Minimieren",
550
- "search.filters.myRecords": "Nur meine Datensätze anzeigen",
551
- "search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Datensätze angezeigt; Datensätze, die von anderen erstellt wurden, werden nicht angezeigt.",
583
+ "search.filters.myRecords": "Nur meine Ressourcen anzeigen",
584
+ "search.filters.myRecordsHelp": "Wenn dies aktiviert ist, werden nur von mir erstellte Ressourcen angezeigt; Ressourcen, die von anderen erstellt wurden, werden nicht angezeigt.",
552
585
  "search.filters.organization": "",
553
- "search.filters.otherRecords": "Datensätze von einer anderen Person anzeigen",
586
+ "search.filters.otherRecords": "Ressourcen von einer anderen Person anzeigen",
554
587
  "search.filters.producerOrg": "",
555
588
  "search.filters.publicationYear": "Veröffentlichungsjahr",
556
589
  "search.filters.publisherOrg": "",
@@ -565,8 +598,8 @@
565
598
  "search.filters.summaryLabel.user": "Geändert von: ",
566
599
  "search.filters.title": "Ergebnisse filtern",
567
600
  "search.filters.topic": "Themen",
568
- "search.filters.useSpatialFilter": "Zuerst Datensätze im Interessenbereich anzeigen",
569
- "search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Datensätze im Bereich des Katalogs zuerst angezeigt. Datensätze außerhalb dieses Bereichs werden nicht angezeigt.",
601
+ "search.filters.useSpatialFilter": "Zuerst Ressourcen im Interessenbereich anzeigen",
602
+ "search.filters.useSpatialFilterHelp": "Wenn diese Option aktiviert ist, werden Ressourcen im Bereich des Katalogs zuerst angezeigt. Ressourcen außerhalb dieses Bereichs werden nicht angezeigt.",
570
603
  "search.filters.user": "Editor",
571
604
  "service.metadata.capabilities": "",
572
605
  "service.metadata.capabilities.abstract": "",