geonetwork-ui 2.2.0-dev.9ae0a68b → 2.2.0-dev.ae0a63ae

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 (168) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/gn4/atomic-operations.mjs +2 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +36 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
  4. package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
  7. package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
  8. package/esm2022/libs/feature/map/src/index.mjs +2 -1
  9. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
  10. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +106 -0
  11. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
  12. package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
  13. package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
  14. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +23 -3
  15. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
  16. package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
  17. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +5 -3
  18. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
  19. package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
  20. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
  21. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
  22. package/esm2022/libs/feature/search/src/lib/state/effects.mjs +5 -3
  23. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
  24. package/esm2022/libs/ui/elements/src/index.mjs +3 -1
  25. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
  26. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
  27. package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
  28. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
  29. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -7
  30. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
  31. package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
  32. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -3
  33. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  34. package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
  35. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
  36. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +2 -2
  37. package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
  38. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
  39. package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
  40. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
  41. package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
  42. package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +3 -3
  43. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
  44. package/esm2022/translations/de.json +102 -94
  45. package/esm2022/translations/en.json +27 -19
  46. package/esm2022/translations/es.json +8 -0
  47. package/esm2022/translations/fr.json +11 -3
  48. package/esm2022/translations/it.json +11 -3
  49. package/esm2022/translations/nl.json +8 -0
  50. package/esm2022/translations/pt.json +8 -0
  51. package/fesm2022/geonetwork-ui.mjs +744 -272
  52. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  53. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
  54. package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
  55. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  56. package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
  57. package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
  58. package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
  59. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +10 -5
  60. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  61. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
  62. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  63. package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
  64. package/libs/feature/map/src/index.d.ts +1 -0
  65. package/libs/feature/map/src/index.d.ts.map +1 -1
  66. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts +22 -0
  67. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -0
  68. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
  69. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
  70. package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
  71. package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
  72. package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
  73. package/libs/feature/map/src/lib/feature-map.module.d.ts +15 -12
  74. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  75. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
  76. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
  77. package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
  78. package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
  79. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
  80. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  81. package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
  82. package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
  83. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
  84. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  85. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
  86. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  87. package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
  88. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
  89. package/libs/ui/elements/src/index.d.ts +2 -0
  90. package/libs/ui/elements/src/index.d.ts.map +1 -1
  91. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
  92. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
  93. package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
  94. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
  95. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  96. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
  97. package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
  98. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +12 -11
  99. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  100. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts +13 -0
  101. package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
  102. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
  103. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
  104. package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
  105. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  106. package/package.json +4 -1
  107. package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
  108. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
  109. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
  110. package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
  111. package/src/libs/common/domain/src/lib/index.ts +2 -0
  112. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
  113. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
  114. package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
  115. package/src/libs/feature/map/src/index.ts +1 -0
  116. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.css +0 -0
  117. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +21 -0
  118. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +107 -0
  119. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
  120. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
  121. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
  122. package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
  123. package/src/libs/feature/map/src/lib/feature-map.module.ts +12 -0
  124. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
  125. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
  126. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
  127. package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
  128. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +6 -2
  129. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
  130. package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
  131. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
  132. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
  133. package/src/libs/feature/search/src/lib/state/effects.ts +4 -3
  134. package/src/libs/ui/elements/src/index.ts +2 -0
  135. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
  136. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
  137. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +30 -0
  138. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
  139. package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +52 -52
  140. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +2 -2
  141. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
  142. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +56 -27
  143. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
  144. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
  145. package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
  146. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +4 -0
  147. package/src/libs/ui/inputs/src/lib/button/button.component.css +1 -1
  148. package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
  149. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
  150. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +1 -1
  151. package/src/libs/ui/search/src/lib/record-table/record-table.component.html +2 -2
  152. package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
  153. package/translations/de.json +102 -94
  154. package/translations/en.json +27 -19
  155. package/translations/es.json +8 -0
  156. package/translations/fr.json +11 -3
  157. package/translations/it.json +11 -3
  158. package/translations/nl.json +8 -0
  159. package/translations/pt.json +8 -0
  160. package/translations/sk.json +8 -0
  161. package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
  162. package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
  163. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
  164. package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
  165. package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
  166. package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
  167. /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
  168. /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  /** Body **/
2
- :host /deep/ .markdown-body {
2
+ :host ::ng-deep .markdown-body {
3
3
  -ms-text-size-adjust: 100%;
4
4
  -webkit-text-size-adjust: 100%;
5
5
  margin: 0px 0px 1.5rem 0px;
@@ -9,68 +9,68 @@
9
9
 
10
10
  /** Emphasis **/
11
11
 
12
- :host /deep/ .markdown-body strong {
12
+ :host ::ng-deep .markdown-body strong {
13
13
  @apply font-bold;
14
14
  color: var(--color-secondary-darker);
15
15
  }
16
16
 
17
17
  /** Headings **/
18
18
 
19
- :host /deep/ .markdown-body h1,
20
- :host /deep/ .markdown-body h2,
21
- :host /deep/ .markdown-body h3,
22
- :host /deep/ .markdown-body h4,
23
- :host /deep/ .markdown-body h5,
24
- :host /deep/ .markdown-body h6 {
19
+ :host ::ng-deep .markdown-body h1,
20
+ :host ::ng-deep .markdown-body h2,
21
+ :host ::ng-deep .markdown-body h3,
22
+ :host ::ng-deep .markdown-body h4,
23
+ :host ::ng-deep .markdown-body h5,
24
+ :host ::ng-deep .markdown-body h6 {
25
25
  margin-top: 24px;
26
26
  margin-bottom: 16px;
27
27
  line-height: 1.25;
28
28
  @apply text-title font-title font-bold;
29
29
  }
30
30
 
31
- :host /deep/ .markdown-body h1 {
31
+ :host ::ng-deep .markdown-body h1 {
32
32
  margin: 0.67em 0;
33
33
  padding-bottom: 0.3em;
34
34
  font-size: 2em;
35
35
  color: var(--color-primary);
36
36
  }
37
37
 
38
- :host /deep/ .markdown-body h2 {
38
+ :host ::ng-deep .markdown-body h2 {
39
39
  padding-bottom: 0.3em;
40
40
  font-size: 1.5em;
41
41
  color: var(--color-secondary);
42
42
  }
43
43
 
44
- :host /deep/ .markdown-body h3 {
44
+ :host ::ng-deep .markdown-body h3 {
45
45
  font-size: 1.25em;
46
46
  color: var(--color-secondary);
47
47
  }
48
48
 
49
- :host /deep/ .markdown-body h4 {
49
+ :host ::ng-deep .markdown-body h4 {
50
50
  font-size: 1em;
51
51
  color: var(--color-secondary);
52
52
  }
53
53
 
54
- :host /deep/ .markdown-body h5 {
54
+ :host ::ng-deep .markdown-body h5 {
55
55
  font-size: 0.875em;
56
56
  color: var(--color-secondary);
57
57
  }
58
58
 
59
- :host /deep/ .markdown-body h6 {
59
+ :host ::ng-deep .markdown-body h6 {
60
60
  font-size: 0.85em;
61
61
  color: var(--color-secondary-lighter);
62
62
  }
63
63
 
64
64
  /** Paragraphs **/
65
65
 
66
- :host /deep/ .markdown-body p {
66
+ :host ::ng-deep .markdown-body p {
67
67
  margin-top: 0;
68
68
  margin-bottom: 10px;
69
69
  }
70
70
 
71
71
  /** Links **/
72
72
 
73
- :host /deep/ .markdown-body p > a {
73
+ :host ::ng-deep .markdown-body p > a {
74
74
  margin-top: 0;
75
75
  margin-bottom: 10px;
76
76
  color: var(--color-primary) !important;
@@ -78,13 +78,13 @@
78
78
  @apply font-bold;
79
79
  }
80
80
 
81
- :host /deep/ .markdown-body p > a:hover {
81
+ :host ::ng-deep .markdown-body p > a:hover {
82
82
  color: var(--color-primary-darker) !important;
83
83
  }
84
84
 
85
85
  /** Blockquotes **/
86
86
 
87
- :host /deep/ .markdown-body blockquote {
87
+ :host ::ng-deep .markdown-body blockquote {
88
88
  margin: 0;
89
89
  padding: 0 1em;
90
90
  color: var(--color-secondary-lighter);
@@ -93,7 +93,7 @@
93
93
 
94
94
  /** Code **/
95
95
 
96
- :host /deep/ .markdown-body pre {
96
+ :host ::ng-deep .markdown-body pre {
97
97
  margin-top: 0;
98
98
  margin-bottom: 0;
99
99
  font-size: 12px;
@@ -101,7 +101,7 @@
101
101
  word-wrap: normal;
102
102
  }
103
103
 
104
- :host /deep/ .markdown-body pre {
104
+ :host ::ng-deep .markdown-body pre {
105
105
  padding: 16px;
106
106
  overflow: auto;
107
107
  font-size: 85%;
@@ -110,7 +110,7 @@
110
110
  border-radius: 6px;
111
111
  }
112
112
 
113
- :host /deep/ .markdown-body code {
113
+ :host ::ng-deep .markdown-body code {
114
114
  padding: 0.2em 0.4em;
115
115
  margin: 0;
116
116
  font-size: 85%;
@@ -118,7 +118,7 @@
118
118
  border-radius: 6px;
119
119
  }
120
120
 
121
- :host /deep/ .markdown-body pre code {
121
+ :host ::ng-deep .markdown-body pre code {
122
122
  display: inline;
123
123
  max-width: auto;
124
124
  padding: 0;
@@ -131,7 +131,7 @@
131
131
 
132
132
  /** Horizontal rules **/
133
133
 
134
- :host /deep/ .markdown-body hr {
134
+ :host ::ng-deep .markdown-body hr {
135
135
  box-sizing: content-box;
136
136
  overflow: hidden;
137
137
  background: transparent;
@@ -143,12 +143,12 @@
143
143
  border: 0;
144
144
  }
145
145
 
146
- :host /deep/ .markdown-body hr::before {
146
+ :host ::ng-deep .markdown-body hr::before {
147
147
  display: table;
148
148
  content: '';
149
149
  }
150
150
 
151
- :host /deep/ .markdown-body hr::after {
151
+ :host ::ng-deep .markdown-body hr::after {
152
152
  display: table;
153
153
  clear: both;
154
154
  content: '';
@@ -156,55 +156,55 @@
156
156
 
157
157
  /** Lists **/
158
158
 
159
- :host /deep/ .markdown-body ul,
160
- :host /deep/ .markdown-body ol {
159
+ :host ::ng-deep .markdown-body ul,
160
+ :host ::ng-deep .markdown-body ol {
161
161
  margin-top: 0;
162
162
  margin-bottom: 0;
163
163
  padding-left: 2em;
164
164
  list-style: revert;
165
165
  }
166
166
 
167
- :host /deep/ .markdown-body ol ol,
168
- :host /deep/ .markdown-body ul ol {
167
+ :host ::ng-deep .markdown-body ol ol,
168
+ :host ::ng-deep .markdown-body ul ol {
169
169
  list-style-type: lower-roman;
170
170
  }
171
171
 
172
- :host /deep/ .markdown-body ul ul ol,
173
- :host /deep/ .markdown-body ul ol ol,
174
- :host /deep/ .markdown-body ol ul ol,
175
- :host /deep/ .markdown-body ol ol ol {
172
+ :host ::ng-deep .markdown-body ul ul ol,
173
+ :host ::ng-deep .markdown-body ul ol ol,
174
+ :host ::ng-deep .markdown-body ol ul ol,
175
+ :host ::ng-deep .markdown-body ol ol ol {
176
176
  list-style-type: lower-alpha;
177
177
  }
178
178
 
179
- :host /deep/ .markdown-body ol[type='a s'] {
179
+ :host ::ng-deep .markdown-body ol[type='a s'] {
180
180
  list-style-type: lower-alpha;
181
181
  }
182
182
 
183
- :host /deep/ .markdown-body ol[type='A s'] {
183
+ :host ::ng-deep .markdown-body ol[type='A s'] {
184
184
  list-style-type: upper-alpha;
185
185
  }
186
186
 
187
- :host /deep/ .markdown-body ol[type='i s'] {
187
+ :host ::ng-deep .markdown-body ol[type='i s'] {
188
188
  list-style-type: lower-roman;
189
189
  }
190
190
 
191
- :host /deep/ .markdown-body ol[type='I s'] {
191
+ :host ::ng-deep .markdown-body ol[type='I s'] {
192
192
  list-style-type: upper-roman;
193
193
  }
194
194
 
195
- :host /deep/ .markdown-body ol[type='1'] {
195
+ :host ::ng-deep .markdown-body ol[type='1'] {
196
196
  list-style: unset;
197
197
  list-style-type: decimal;
198
198
  }
199
199
 
200
- :host /deep/ .markdown-body div > ol:not([type]) {
200
+ :host ::ng-deep .markdown-body div > ol:not([type]) {
201
201
  list-style: unset;
202
202
  list-style-type: decimal;
203
203
  }
204
204
 
205
205
  /** Table **/
206
206
 
207
- :host /deep/ .markdown-body table {
207
+ :host ::ng-deep .markdown-body table {
208
208
  border-spacing: 0;
209
209
  border-collapse: collapse;
210
210
  display: block;
@@ -214,51 +214,51 @@
214
214
  padding-bottom: 15px;
215
215
  }
216
216
 
217
- :host /deep/ .markdown-body td,
218
- :host /deep/ .markdown-body th {
217
+ :host ::ng-deep .markdown-body td,
218
+ :host ::ng-deep .markdown-body th {
219
219
  padding: 0;
220
220
  }
221
221
 
222
- :host /deep/ .markdown-body th {
222
+ :host ::ng-deep .markdown-body th {
223
223
  color: var(--color-secondary);
224
224
  }
225
225
 
226
- :host /deep/ .markdown-body table th,
227
- :host /deep/ .markdown-body table td {
226
+ :host ::ng-deep .markdown-body table th,
227
+ :host ::ng-deep .markdown-body table td {
228
228
  padding: 6px 13px;
229
229
  border: 1px solid var(--color-gray-500);
230
230
  }
231
231
 
232
- :host /deep/ .markdown-body table td > :last-child {
232
+ :host ::ng-deep .markdown-body table td > :last-child {
233
233
  margin-bottom: 0;
234
234
  }
235
235
 
236
- :host /deep/ .markdown-body table tr {
236
+ :host ::ng-deep .markdown-body table tr {
237
237
  background-color: #ffffff;
238
238
  border-top: 1px solid var(--color-secondary-lighter);
239
239
  }
240
240
 
241
- :host /deep/ .markdown-body table tr:nth-child(2n) {
241
+ :host ::ng-deep .markdown-body table tr:nth-child(2n) {
242
242
  background-color: var(--color-gray-100);
243
243
  }
244
244
 
245
- :host /deep/ .markdown-body table img {
245
+ :host ::ng-deep .markdown-body table img {
246
246
  background-color: transparent;
247
247
  }
248
248
 
249
249
  /** Images **/
250
250
 
251
- :host /deep/ .markdown-body img {
251
+ :host ::ng-deep .markdown-body img {
252
252
  border-style: none;
253
253
  max-width: 100%;
254
254
  box-sizing: content-box;
255
255
  background-color: transparent;
256
256
  }
257
257
 
258
- :host /deep/ .markdown-body img[align='right'] {
258
+ :host ::ng-deep .markdown-body img[align='right'] {
259
259
  padding-left: 20px;
260
260
  }
261
261
 
262
- :host /deep/ .markdown-body img[align='left'] {
262
+ :host ::ng-deep .markdown-body img[align='left'] {
263
263
  padding-right: 20px;
264
264
  }
@@ -1,4 +1,4 @@
1
- <div class="py-5 px-5 rounded bg-gray-100 text-black mb-6 sm:mb-12">
1
+ <div class="py-5 px-5 rounded bg-gray-100 text-black mb-6">
2
2
  <div class="grid gap-3">
3
3
  <div>
4
4
  <p class="text-sm font-medium" translate>record.metadata.contact</p>
@@ -20,7 +20,7 @@
20
20
  (click)="onOrganizationClick()"
21
21
  data-cy="organization-name"
22
22
  >
23
- {{ shownOrganization.name }}
23
+ {{ shownOrganization?.name }}
24
24
  </div>
25
25
  </div>
26
26
  <div *ngIf="shownOrganization?.website">
@@ -7,3 +7,7 @@
7
7
  padding-bottom: 10px;
8
8
  @apply border-b border-gray-300;
9
9
  }
10
+
11
+ :host ::ng-deep gn-ui-copy-text-button button mat-icon {
12
+ transform: scale(0.8);
13
+ }
@@ -1,9 +1,3 @@
1
- <p
2
- class="text-[28px] text-title text-center mb-6 font-title sm:text-left"
3
- translate
4
- >
5
- record.metadata.about
6
- </p>
7
1
  <div class="mb-6 md-description sm:mb-4 sm:pr-16">
8
2
  <gn-ui-content-ghost ghostClass="h-32" [showContent]="fieldReady('abstract')">
9
3
  <gn-ui-max-lines [maxLines]="6" *ngIf="metadata.abstract">
@@ -11,20 +5,6 @@
11
5
  <gn-ui-markdown-parser
12
6
  [textContent]="metadata.abstract"
13
7
  ></gn-ui-markdown-parser>
14
- <ng-container *ngIf="metadata.keywords?.length">
15
- <p class="mb-3 font-medium text-primary text-sm" translate>
16
- record.metadata.keywords
17
- </p>
18
- <div class="sm:pb-4 sm:pr-16">
19
- <gn-ui-badge
20
- class="inline-block mr-2 mb-2 lowercase"
21
- (click)="onKeywordClick(keyword)"
22
- [clickable]="true"
23
- *ngFor="let keyword of metadata.keywords"
24
- >{{ keyword }}</gn-ui-badge
25
- >
26
- </div>
27
- </ng-container>
28
8
  </div>
29
9
  </gn-ui-max-lines>
30
10
  </gn-ui-content-ghost>
@@ -95,12 +75,61 @@
95
75
  *ngIf="metadata.landingPage"
96
76
  [title]="'record.metadata.details' | translate"
97
77
  >
98
- <div class="py-5 px-5 rounded bg-gray-100 text-gray-700">
99
- <p class="text-sm" translate>record.metadata.sheet</p>
100
- <p class="text-primary font-medium mt-1" translate>
101
- <a [href]="metadata.landingPage" target="_blank">
102
- <span class="break-all" gnUiLinkify>{{ metadata.landingPage }}</span>
103
- </a>
104
- </p>
78
+ <div class="flex flex-col gap-4 mr-4 py-5 rounded text-gray-700">
79
+ <div *ngIf="metadata.recordUpdated">
80
+ <p class="text-sm" translate>record.metadata.updatedOn</p>
81
+ <p class="text-primary font-medium">
82
+ {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}
83
+ </p>
84
+ </div>
85
+ <div *ngIf="metadata.landingPage">
86
+ <p class="text-sm" translate>record.metadata.sheet</p>
87
+ <p class="text-primary font-medium" translate>
88
+ <a [href]="metadata.landingPage" target="_blank">
89
+ <span class="break-all" gnUiLinkify>{{ metadata.landingPage }}</span>
90
+ </a>
91
+ </p>
92
+ </div>
93
+ <div *ngIf="metadata.ownerOrganization">
94
+ <p class="text-sm" translate>record.metadata.owner</p>
95
+ <p class="text-primary font-medium">
96
+ {{ metadata.ownerOrganization.name }}
97
+ </p>
98
+ </div>
99
+ <div *ngIf="metadata.uniqueIdentifier">
100
+ <p class="text-sm" translate>record.metadata.uniqueId</p>
101
+ <div class="flex flex-row content-align items-end gap-1">
102
+ <gn-ui-copy-text-button
103
+ [text]="metadata.uniqueIdentifier"
104
+ [tooltipText]="'tooltip.id.copy' | translate"
105
+ [displayText]="false"
106
+ ></gn-ui-copy-text-button>
107
+ <p class="text-primary font-medium">
108
+ {{ metadata.uniqueIdentifier }}
109
+ </p>
110
+ </div>
111
+ </div>
112
+ <div *ngIf="metadata.themes?.length">
113
+ <p class="text-sm mb-1" translate>record.metadata.themes</p>
114
+ <div class="sm:pb-4 sm:pr-16">
115
+ <gn-ui-badge
116
+ class="inline-block mr-2 lowercase"
117
+ *ngFor="let theme of metadata.themes"
118
+ >{{ theme }}</gn-ui-badge
119
+ >
120
+ </div>
121
+ </div>
122
+ <div *ngIf="metadata.keywords?.length">
123
+ <p class="text-sm mb-1" translate>record.metadata.keywords</p>
124
+ <div class="sm:pb-4 sm:pr-16">
125
+ <gn-ui-badge
126
+ class="inline-block mr-2 mb-2 lowercase"
127
+ (click)="onKeywordClick(keyword)"
128
+ [clickable]="true"
129
+ *ngFor="let keyword of metadata.keywords"
130
+ >{{ keyword }}</gn-ui-badge
131
+ >
132
+ </div>
133
+ </div>
105
134
  </div>
106
135
  </gn-ui-expandable-panel>
@@ -56,4 +56,9 @@ export class MetadataInfoComponent {
56
56
  onKeywordClick(keyword: string) {
57
57
  this.keyword.emit(keyword)
58
58
  }
59
+
60
+ copyText() {
61
+ navigator.clipboard.writeText(this.metadata.uniqueIdentifier)
62
+ ;(event.target as HTMLElement).blur()
63
+ }
59
64
  }
@@ -6,7 +6,7 @@
6
6
  <div class="h-52 bg-gray-100">
7
7
  <gn-ui-thumbnail
8
8
  class="h-52 w-full object-cover"
9
- [thumbnailUrl]="record.overviews?.[0].url.toString()"
9
+ [thumbnailUrl]="record.overviews?.[0]?.url.toString()"
10
10
  ></gn-ui-thumbnail>
11
11
  </div>
12
12
  <div class="flex flex-col justify-between h-44 px-5 pt-4 pb-6">
@@ -10,6 +10,8 @@ import {
10
10
  Optional,
11
11
  SimpleChanges,
12
12
  ViewChild,
13
+ Output,
14
+ EventEmitter,
13
15
  } from '@angular/core'
14
16
 
15
17
  export const THUMBNAIL_PLACEHOLDER = new InjectionToken<string>(
@@ -36,6 +38,7 @@ export class ThumbnailComponent implements OnInit, OnChanges {
36
38
  @Input() fit: FitOptions | FitOptions[] = 'cover'
37
39
  @ViewChild('imageElement') imgElement: ElementRef<HTMLImageElement>
38
40
  @ViewChild('containerElement') containerElement: ElementRef<HTMLDivElement>
41
+ @Output() placeholderShown = new EventEmitter<boolean>()
39
42
  imgUrl: string
40
43
  imgFit: FitOptions
41
44
  placeholderUrl = this.optionalPlaceholderUrl || DEFAULT_PLACEHOLDER
@@ -85,6 +88,7 @@ export class ThumbnailComponent implements OnInit, OnChanges {
85
88
  private setNewSrcImage(image: ThumbnailImageObject) {
86
89
  this.imgFit = image.fit
87
90
  this.imgUrl = image.url
91
+ this.placeholderShown.emit(this.isPlaceholder)
88
92
  }
89
93
 
90
94
  private setPlaceholder(): void {
@@ -30,6 +30,7 @@ import { PaginationButtonsComponent } from './pagination-buttons/pagination-butt
30
30
  import { MaxLinesComponent } from './max-lines/max-lines.component'
31
31
  import { RecordApiFormComponent } from './record-api-form/record-api-form.component'
32
32
  import { MarkdownParserComponent } from './markdown-parser/markdown-parser.component'
33
+ import { ImageOverlayPreviewComponent } from './image-overlay-preview/image-overlay-preview.component'
33
34
 
34
35
  @NgModule({
35
36
  imports: [
@@ -67,6 +68,7 @@ import { MarkdownParserComponent } from './markdown-parser/markdown-parser.compo
67
68
  MaxLinesComponent,
68
69
  RecordApiFormComponent,
69
70
  MarkdownParserComponent,
71
+ ImageOverlayPreviewComponent,
70
72
  ],
71
73
  exports: [
72
74
  MetadataInfoComponent,
@@ -86,8 +88,10 @@ import { MarkdownParserComponent } from './markdown-parser/markdown-parser.compo
86
88
  AvatarComponent,
87
89
  UserPreviewComponent,
88
90
  PaginationButtonsComponent,
91
+ MaxLinesComponent,
89
92
  RecordApiFormComponent,
90
93
  MarkdownParserComponent,
94
+ ImageOverlayPreviewComponent,
91
95
  ],
92
96
  })
93
97
  export class UiElementsModule {}
@@ -1,5 +1,5 @@
1
1
  /* makes sure icons will not make the buttons grow vertically */
2
- :host /deep/ mat-icon.mat-icon {
2
+ :host ::ng-deep mat-icon.mat-icon {
3
3
  margin-top: -0.325em;
4
4
  margin-bottom: -0.325em;
5
5
  }
@@ -0,0 +1,48 @@
1
+ import {
2
+ Directive,
3
+ ElementRef,
4
+ Renderer2,
5
+ AfterViewInit,
6
+ EventEmitter,
7
+ Output,
8
+ Input,
9
+ } from '@angular/core'
10
+
11
+ @Directive({
12
+ selector: '[gnUiEditableLabel]',
13
+ standalone: true,
14
+ })
15
+ export class EditableLabelDirective implements AfterViewInit {
16
+ @Output() editableLabelChanged = new EventEmitter<string>()
17
+ @Input() gnUiEditableLabel?: boolean
18
+
19
+ constructor(private el: ElementRef, private renderer: Renderer2) {}
20
+
21
+ ngAfterViewInit() {
22
+ if (this.gnUiEditableLabel !== false) {
23
+ const appendedInput = this.renderer.createElement('input')
24
+
25
+ this.renderer.setStyle(appendedInput, 'background', 'inherit')
26
+ this.renderer.setStyle(appendedInput, 'color', 'inherit')
27
+ this.renderer.setStyle(appendedInput, 'font', 'inherit')
28
+ this.renderer.setStyle(appendedInput, 'border', 'inherit')
29
+ this.renderer.setStyle(appendedInput, 'width', '100%')
30
+ this.renderer.setStyle(appendedInput, 'padding', 'inherit')
31
+ this.renderer.setStyle(appendedInput, 'margin', '0')
32
+ this.renderer.setStyle(appendedInput, 'height', 'inherit')
33
+ this.renderer.setStyle(appendedInput, 'line-height', 'inherit')
34
+ this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit')
35
+
36
+ const hostContent = this.el.nativeElement.textContent || ''
37
+ const formattedContent = hostContent.replace(/\s+/g, ' ').trim()
38
+ this.renderer.setProperty(appendedInput, 'value', formattedContent)
39
+ this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '')
40
+
41
+ this.renderer.listen(appendedInput, 'input', (event) => {
42
+ this.editableLabelChanged.emit(event.target.value)
43
+ })
44
+
45
+ this.renderer.appendChild(this.el.nativeElement, appendedInput)
46
+ }
47
+ }
48
+ }
@@ -41,6 +41,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'
41
41
  import { MatInputModule } from '@angular/material/input'
42
42
  import { MatDatepickerModule } from '@angular/material/datepicker'
43
43
  import { MatNativeDateModule } from '@angular/material/core'
44
+ import { EditableLabelDirective } from './editable-label/editable-label.directive'
44
45
 
45
46
  @NgModule({
46
47
  declarations: [
@@ -87,6 +88,7 @@ import { MatNativeDateModule } from '@angular/material/core'
87
88
  MatInputModule,
88
89
  MatDatepickerModule,
89
90
  MatNativeDateModule,
91
+ EditableLabelDirective,
90
92
  ],
91
93
  exports: [
92
94
  DropdownSelectorComponent,
@@ -106,6 +108,7 @@ import { MatNativeDateModule } from '@angular/material/core'
106
108
  CheckboxComponent,
107
109
  SearchInputComponent,
108
110
  DateRangePickerComponent,
111
+ EditableLabelDirective,
109
112
  ],
110
113
  })
111
114
  export class UiInputsModule {}
@@ -1,4 +1,4 @@
1
- :host .carousel-container /deep/ > * {
1
+ :host .carousel-container ::ng-deep > * {
2
2
  flex-shrink: 0;
3
3
  }
4
4
  :host {
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  <div
40
40
  class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
41
- (click)="recordSelect.emit(record)"
41
+ (click)="recordsSelect.emit([record])"
42
42
  *ngFor="let record of records"
43
43
  >
44
44
  <div class="record-table-col text-16">
@@ -157,7 +157,7 @@
157
157
  </div>
158
158
  <div
159
159
  class="contents hover:text-gray-900 text-gray-800 cursor-pointer"
160
- (click)="recordSelect.emit(record)"
160
+ (click)="recordsSelect.emit([record])"
161
161
  *ngFor="let record of records"
162
162
  >
163
163
  <div class="record-table-col">