geonetwork-ui 2.2.0-dev.162f13e3 → 2.2.0-dev.177cac3b
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.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +64 -0
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +63 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +8 -2
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +3 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +7 -4
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +1 -1
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +4 -4
- package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +17 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +12 -6
- package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/thumbnail/thumbnail.component.mjs +7 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +13 -3
- package/esm2022/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/record-preview-card/record-preview-card.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-list/record-preview-list.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +1 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-title/record-preview-title.component.mjs +1 -1
- package/esm2022/libs/util/i18n/src/index.mjs +2 -1
- package/esm2022/translations/de.json +13 -1
- package/esm2022/translations/en.json +16 -4
- package/esm2022/translations/es.json +12 -0
- package/esm2022/translations/fr.json +16 -4
- package/esm2022/translations/it.json +24 -12
- package/esm2022/translations/nl.json +12 -0
- package/esm2022/translations/pt.json +12 -0
- package/fesm2022/geonetwork-ui.mjs +326 -78
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +22 -0
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +14 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +2 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts +10 -0
- package/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/thumbnail/thumbnail.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +13 -11
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/util/i18n/src/index.d.ts +1 -0
- package/libs/util/i18n/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.metadata.mapper.ts +1 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.html +37 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +64 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.css +0 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.html +55 -0
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +63 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +4 -0
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +6 -2
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +6 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html +12 -4
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.html +1 -0
- package/src/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.ts +1 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css +0 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +29 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +264 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.html +1 -0
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.ts +16 -0
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +4 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +59 -32
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +5 -0
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +1 -1
- package/src/libs/ui/elements/src/lib/thumbnail/thumbnail.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +6 -0
- package/src/libs/ui/inputs/src/lib/navigation-button/navigation-button.component.html +8 -3
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.css +1 -0
- package/src/libs/util/i18n/src/index.ts +1 -0
- package/translations/de.json +13 -1
- package/translations/en.json +16 -4
- package/translations/es.json +12 -0
- package/translations/fr.json +16 -4
- package/translations/it.json +24 -12
- package/translations/nl.json +12 -0
- package/translations/pt.json +12 -0
- package/translations/sk.json +12 -0
package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.html
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
<div>
|
|
2
|
-
<span
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<div class="flex flex-row content-center">
|
|
2
|
+
<span
|
|
3
|
+
class="align-text-top mr-1.5 mt-1.5 favorite-count"
|
|
4
|
+
*ngIf="hasFavoriteCount && displayCount"
|
|
5
|
+
>{{ favoriteCount }}</span
|
|
6
|
+
>
|
|
5
7
|
<gn-ui-star-toggle
|
|
6
8
|
[toggled]="isFavorite$ | async"
|
|
7
9
|
(newValue)="toggleFavorite($event)"
|
|
8
10
|
[disabled]="loading || (isAnonymous$ | async)"
|
|
11
|
+
class="mt-1"
|
|
9
12
|
></gn-ui-star-toggle>
|
|
13
|
+
<span
|
|
14
|
+
class="align-text-top ml-1.5 favorite-count mt-1.5"
|
|
15
|
+
*ngIf="!displayCount"
|
|
16
|
+
translate="datahub.record.addToFavorites"
|
|
17
|
+
></span>
|
|
10
18
|
</div>
|
|
@@ -24,6 +24,7 @@ import { PlatformServiceInterface } from '../../../../../../../libs/common/domai
|
|
|
24
24
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25
25
|
})
|
|
26
26
|
export class FavoriteStarComponent implements AfterViewInit, OnDestroy {
|
|
27
|
+
@Input() displayCount? = true
|
|
27
28
|
@Input() set record(value) {
|
|
28
29
|
this.record_ = value
|
|
29
30
|
this.favoriteCount =
|
|
@@ -34,7 +34,7 @@ export class LanguageSwitcherComponent implements OnInit {
|
|
|
34
34
|
ngOnInit(): void {
|
|
35
35
|
const languages = this.languagePlaceholder || DEFAULT_LANGUAGES
|
|
36
36
|
this.languageList = languages.map((language) => ({
|
|
37
|
-
label:
|
|
37
|
+
label: `${language}`.toUpperCase(),
|
|
38
38
|
value: language,
|
|
39
39
|
}))
|
|
40
40
|
}
|
|
@@ -19,3 +19,5 @@ export * from './lib/related-record-card/related-record-card.component'
|
|
|
19
19
|
export * from './lib/search-results-error/search-results-error.component'
|
|
20
20
|
export * from './lib/user-preview/user-preview.component'
|
|
21
21
|
export * from './lib/record-api-form/record-api-form.component'
|
|
22
|
+
export * from './lib/markdown-parser/markdown-parser.component'
|
|
23
|
+
export * from './lib/image-overlay-preview/image-overlay-preview.component'
|
package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.css
ADDED
|
File without changes
|
package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<gn-ui-content-ghost
|
|
2
|
+
[showContent]="imageUrl !== undefined"
|
|
3
|
+
ghostClass="h-36 mb-3"
|
|
4
|
+
>
|
|
5
|
+
<div
|
|
6
|
+
*ngIf="imageUrl"
|
|
7
|
+
data-cy="record-thumbnail"
|
|
8
|
+
class="flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36 group-hover:shadow-xl group-hover:border-0 mb-3"
|
|
9
|
+
>
|
|
10
|
+
<gn-ui-thumbnail
|
|
11
|
+
class="relative h-full w-full"
|
|
12
|
+
[thumbnailUrl]="imageUrl"
|
|
13
|
+
fit="cover"
|
|
14
|
+
(placeholderShown)="isPlaceholderShown.emit($event)"
|
|
15
|
+
></gn-ui-thumbnail>
|
|
16
|
+
<div class="relative">
|
|
17
|
+
<gn-ui-button
|
|
18
|
+
class="absolute bottom-0 right-0 z-10 mr-2 mb-2"
|
|
19
|
+
[type]="'outline'"
|
|
20
|
+
[extraClass]="'!py-2 !px-0'"
|
|
21
|
+
(buttonClick)="openLightbox(imageUrl)"
|
|
22
|
+
>
|
|
23
|
+
<mat-icon class="material-symbols-outlined font-extralight"
|
|
24
|
+
>zoom_out_map</mat-icon
|
|
25
|
+
>
|
|
26
|
+
</gn-ui-button>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</gn-ui-content-ghost>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core'
|
|
2
|
+
import * as basicLightbox from 'basiclightbox'
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'gn-ui-image-overlay-preview',
|
|
6
|
+
templateUrl: './image-overlay-preview.component.html',
|
|
7
|
+
styleUrls: ['./image-overlay-preview.component.css'],
|
|
8
|
+
})
|
|
9
|
+
export class ImageOverlayPreviewComponent {
|
|
10
|
+
@Input() imageUrl: string
|
|
11
|
+
@Output() isPlaceholderShown = new EventEmitter<boolean>()
|
|
12
|
+
openLightbox(src: string) {
|
|
13
|
+
basicLightbox.create(`<img src="${src}"/>`).show()
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/** Body **/
|
|
2
|
+
:host /deep/ .markdown-body {
|
|
3
|
+
-ms-text-size-adjust: 100%;
|
|
4
|
+
-webkit-text-size-adjust: 100%;
|
|
5
|
+
margin: 0px 0px 1.5rem 0px;
|
|
6
|
+
line-height: 1.5;
|
|
7
|
+
word-wrap: break-word;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Emphasis **/
|
|
11
|
+
|
|
12
|
+
:host /deep/ .markdown-body strong {
|
|
13
|
+
@apply font-bold;
|
|
14
|
+
color: var(--color-secondary-darker);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Headings **/
|
|
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 {
|
|
25
|
+
margin-top: 24px;
|
|
26
|
+
margin-bottom: 16px;
|
|
27
|
+
line-height: 1.25;
|
|
28
|
+
@apply text-title font-title font-bold;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host /deep/ .markdown-body h1 {
|
|
32
|
+
margin: 0.67em 0;
|
|
33
|
+
padding-bottom: 0.3em;
|
|
34
|
+
font-size: 2em;
|
|
35
|
+
color: var(--color-primary);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:host /deep/ .markdown-body h2 {
|
|
39
|
+
padding-bottom: 0.3em;
|
|
40
|
+
font-size: 1.5em;
|
|
41
|
+
color: var(--color-secondary);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:host /deep/ .markdown-body h3 {
|
|
45
|
+
font-size: 1.25em;
|
|
46
|
+
color: var(--color-secondary);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:host /deep/ .markdown-body h4 {
|
|
50
|
+
font-size: 1em;
|
|
51
|
+
color: var(--color-secondary);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:host /deep/ .markdown-body h5 {
|
|
55
|
+
font-size: 0.875em;
|
|
56
|
+
color: var(--color-secondary);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:host /deep/ .markdown-body h6 {
|
|
60
|
+
font-size: 0.85em;
|
|
61
|
+
color: var(--color-secondary-lighter);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Paragraphs **/
|
|
65
|
+
|
|
66
|
+
:host /deep/ .markdown-body p {
|
|
67
|
+
margin-top: 0;
|
|
68
|
+
margin-bottom: 10px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Links **/
|
|
72
|
+
|
|
73
|
+
:host /deep/ .markdown-body p > a {
|
|
74
|
+
margin-top: 0;
|
|
75
|
+
margin-bottom: 10px;
|
|
76
|
+
color: var(--color-primary) !important;
|
|
77
|
+
text-decoration: none !important;
|
|
78
|
+
@apply font-bold;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
:host /deep/ .markdown-body p > a:hover {
|
|
82
|
+
color: var(--color-primary-darker) !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Blockquotes **/
|
|
86
|
+
|
|
87
|
+
:host /deep/ .markdown-body blockquote {
|
|
88
|
+
margin: 0;
|
|
89
|
+
padding: 0 1em;
|
|
90
|
+
color: var(--color-secondary-lighter);
|
|
91
|
+
border-left: 0.25em solid var(--color-primary-lighter);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Code **/
|
|
95
|
+
|
|
96
|
+
:host /deep/ .markdown-body pre {
|
|
97
|
+
margin-top: 0;
|
|
98
|
+
margin-bottom: 0;
|
|
99
|
+
font-size: 12px;
|
|
100
|
+
background-color: var(--color-gray-100);
|
|
101
|
+
word-wrap: normal;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
:host /deep/ .markdown-body pre {
|
|
105
|
+
padding: 16px;
|
|
106
|
+
overflow: auto;
|
|
107
|
+
font-size: 85%;
|
|
108
|
+
line-height: 1.45;
|
|
109
|
+
color: var(--color-secondary);
|
|
110
|
+
border-radius: 6px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
:host /deep/ .markdown-body code {
|
|
114
|
+
padding: 0.2em 0.4em;
|
|
115
|
+
margin: 0;
|
|
116
|
+
font-size: 85%;
|
|
117
|
+
white-space: break-spaces;
|
|
118
|
+
border-radius: 6px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:host /deep/ .markdown-body pre code {
|
|
122
|
+
display: inline;
|
|
123
|
+
max-width: auto;
|
|
124
|
+
padding: 0;
|
|
125
|
+
margin: 0;
|
|
126
|
+
overflow: visible;
|
|
127
|
+
line-height: inherit;
|
|
128
|
+
word-wrap: normal;
|
|
129
|
+
border: 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Horizontal rules **/
|
|
133
|
+
|
|
134
|
+
:host /deep/ .markdown-body hr {
|
|
135
|
+
box-sizing: content-box;
|
|
136
|
+
overflow: hidden;
|
|
137
|
+
background: transparent;
|
|
138
|
+
border-bottom: 1px solid var(--color-secondary);
|
|
139
|
+
height: 0.15em;
|
|
140
|
+
padding: 0;
|
|
141
|
+
margin: 24px 0;
|
|
142
|
+
background-color: var(--color-secondary);
|
|
143
|
+
border: 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
:host /deep/ .markdown-body hr::before {
|
|
147
|
+
display: table;
|
|
148
|
+
content: '';
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
:host /deep/ .markdown-body hr::after {
|
|
152
|
+
display: table;
|
|
153
|
+
clear: both;
|
|
154
|
+
content: '';
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** Lists **/
|
|
158
|
+
|
|
159
|
+
:host /deep/ .markdown-body ul,
|
|
160
|
+
:host /deep/ .markdown-body ol {
|
|
161
|
+
margin-top: 0;
|
|
162
|
+
margin-bottom: 0;
|
|
163
|
+
padding-left: 2em;
|
|
164
|
+
list-style: revert;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
:host /deep/ .markdown-body ol ol,
|
|
168
|
+
:host /deep/ .markdown-body ul ol {
|
|
169
|
+
list-style-type: lower-roman;
|
|
170
|
+
}
|
|
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 {
|
|
176
|
+
list-style-type: lower-alpha;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:host /deep/ .markdown-body ol[type='a s'] {
|
|
180
|
+
list-style-type: lower-alpha;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
:host /deep/ .markdown-body ol[type='A s'] {
|
|
184
|
+
list-style-type: upper-alpha;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
:host /deep/ .markdown-body ol[type='i s'] {
|
|
188
|
+
list-style-type: lower-roman;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
:host /deep/ .markdown-body ol[type='I s'] {
|
|
192
|
+
list-style-type: upper-roman;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
:host /deep/ .markdown-body ol[type='1'] {
|
|
196
|
+
list-style: unset;
|
|
197
|
+
list-style-type: decimal;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
:host /deep/ .markdown-body div > ol:not([type]) {
|
|
201
|
+
list-style: unset;
|
|
202
|
+
list-style-type: decimal;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** Table **/
|
|
206
|
+
|
|
207
|
+
:host /deep/ .markdown-body table {
|
|
208
|
+
border-spacing: 0;
|
|
209
|
+
border-collapse: collapse;
|
|
210
|
+
display: block;
|
|
211
|
+
width: max-content;
|
|
212
|
+
max-width: 100%;
|
|
213
|
+
overflow: auto;
|
|
214
|
+
padding-bottom: 15px;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
:host /deep/ .markdown-body td,
|
|
218
|
+
:host /deep/ .markdown-body th {
|
|
219
|
+
padding: 0;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
:host /deep/ .markdown-body th {
|
|
223
|
+
color: var(--color-secondary);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
:host /deep/ .markdown-body table th,
|
|
227
|
+
:host /deep/ .markdown-body table td {
|
|
228
|
+
padding: 6px 13px;
|
|
229
|
+
border: 1px solid var(--color-gray-500);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
:host /deep/ .markdown-body table td > :last-child {
|
|
233
|
+
margin-bottom: 0;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
:host /deep/ .markdown-body table tr {
|
|
237
|
+
background-color: #ffffff;
|
|
238
|
+
border-top: 1px solid var(--color-secondary-lighter);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
:host /deep/ .markdown-body table tr:nth-child(2n) {
|
|
242
|
+
background-color: var(--color-gray-100);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
:host /deep/ .markdown-body table img {
|
|
246
|
+
background-color: transparent;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** Images **/
|
|
250
|
+
|
|
251
|
+
:host /deep/ .markdown-body img {
|
|
252
|
+
border-style: none;
|
|
253
|
+
max-width: 100%;
|
|
254
|
+
box-sizing: content-box;
|
|
255
|
+
background-color: transparent;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
:host /deep/ .markdown-body img[align='right'] {
|
|
259
|
+
padding-left: 20px;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
:host /deep/ .markdown-body img[align='left'] {
|
|
263
|
+
padding-right: 20px;
|
|
264
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div class="markdown-body" [innerHTML]="parsedMarkdown"></div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy } from '@angular/core'
|
|
2
|
+
import { marked } from 'marked'
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'gn-ui-markdown-parser',
|
|
6
|
+
templateUrl: './markdown-parser.component.html',
|
|
7
|
+
styleUrls: ['./markdown-parser.component.css'],
|
|
8
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9
|
+
})
|
|
10
|
+
export class MarkdownParserComponent {
|
|
11
|
+
@Input() textContent: string
|
|
12
|
+
|
|
13
|
+
get parsedMarkdown() {
|
|
14
|
+
return marked.parse(this.textContent)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,32 +1,10 @@
|
|
|
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">
|
|
10
4
|
<div>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
gnUiLinkify
|
|
15
|
-
></p>
|
|
16
|
-
<ng-container *ngIf="metadata.keywords?.length">
|
|
17
|
-
<p class="mb-3 font-medium text-primary text-sm" translate>
|
|
18
|
-
record.metadata.keywords
|
|
19
|
-
</p>
|
|
20
|
-
<div class="sm:pb-4 sm:pr-16">
|
|
21
|
-
<gn-ui-badge
|
|
22
|
-
class="inline-block mr-2 mb-2 lowercase"
|
|
23
|
-
(click)="onKeywordClick(keyword)"
|
|
24
|
-
[clickable]="true"
|
|
25
|
-
*ngFor="let keyword of metadata.keywords"
|
|
26
|
-
>{{ keyword }}</gn-ui-badge
|
|
27
|
-
>
|
|
28
|
-
</div>
|
|
29
|
-
</ng-container>
|
|
5
|
+
<gn-ui-markdown-parser
|
|
6
|
+
[textContent]="metadata.abstract"
|
|
7
|
+
></gn-ui-markdown-parser>
|
|
30
8
|
</div>
|
|
31
9
|
</gn-ui-max-lines>
|
|
32
10
|
</gn-ui-content-ghost>
|
|
@@ -97,12 +75,61 @@
|
|
|
97
75
|
*ngIf="metadata.landingPage"
|
|
98
76
|
[title]="'record.metadata.details' | translate"
|
|
99
77
|
>
|
|
100
|
-
<div class="
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
</
|
|
106
|
-
</
|
|
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>
|
|
107
134
|
</div>
|
|
108
135
|
</gn-ui-expandable-panel>
|
|
@@ -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]
|
|
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 {
|
|
@@ -29,6 +29,8 @@ import { GnUiLinkifyDirective } from './metadata-info/linkify.directive'
|
|
|
29
29
|
import { PaginationButtonsComponent } from './pagination-buttons/pagination-buttons.component'
|
|
30
30
|
import { MaxLinesComponent } from './max-lines/max-lines.component'
|
|
31
31
|
import { RecordApiFormComponent } from './record-api-form/record-api-form.component'
|
|
32
|
+
import { MarkdownParserComponent } from './markdown-parser/markdown-parser.component'
|
|
33
|
+
import { ImageOverlayPreviewComponent } from './image-overlay-preview/image-overlay-preview.component'
|
|
32
34
|
|
|
33
35
|
@NgModule({
|
|
34
36
|
imports: [
|
|
@@ -65,6 +67,8 @@ import { RecordApiFormComponent } from './record-api-form/record-api-form.compon
|
|
|
65
67
|
PaginationButtonsComponent,
|
|
66
68
|
MaxLinesComponent,
|
|
67
69
|
RecordApiFormComponent,
|
|
70
|
+
MarkdownParserComponent,
|
|
71
|
+
ImageOverlayPreviewComponent,
|
|
68
72
|
],
|
|
69
73
|
exports: [
|
|
70
74
|
MetadataInfoComponent,
|
|
@@ -85,6 +89,8 @@ import { RecordApiFormComponent } from './record-api-form/record-api-form.compon
|
|
|
85
89
|
UserPreviewComponent,
|
|
86
90
|
PaginationButtonsComponent,
|
|
87
91
|
RecordApiFormComponent,
|
|
92
|
+
MarkdownParserComponent,
|
|
93
|
+
ImageOverlayPreviewComponent,
|
|
88
94
|
],
|
|
89
95
|
})
|
|
90
96
|
export class UiElementsModule {}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
<button
|
|
2
|
-
class="group flex items-center justify-center backdrop-blur p-1 bg-primary-opacity-
|
|
2
|
+
class="group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 text-white rounded content-center"
|
|
3
3
|
>
|
|
4
|
-
<mat-icon class="material-symbols-outlined align-middle">{{
|
|
5
|
-
|
|
4
|
+
<mat-icon class="material-symbols-outlined align-middle w-[18px]">{{
|
|
5
|
+
icon
|
|
6
|
+
}}</mat-icon>
|
|
7
|
+
<span
|
|
8
|
+
class="mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75"
|
|
9
|
+
>{{ label.toUpperCase() }}</span
|
|
10
|
+
>
|
|
6
11
|
</button>
|
package/translations/de.json
CHANGED
|
@@ -115,6 +115,7 @@
|
|
|
115
115
|
"datahub.news.contact.title": "",
|
|
116
116
|
"datahub.news.feed": "Nachrichtenfeed",
|
|
117
117
|
"datahub.news.figures": "Indikatoren",
|
|
118
|
+
"datahub.record.addToFavorites": "",
|
|
118
119
|
"datahub.search.back": "Zurück zu den Ergebnissen",
|
|
119
120
|
"datahub.search.filter.all": "Alle",
|
|
120
121
|
"datahub.search.filter.generatedByWfs": "Generiert durch API",
|
|
@@ -175,10 +176,15 @@
|
|
|
175
176
|
"map.add.layer.file": "Aus einer Datei",
|
|
176
177
|
"map.add.layer.wfs": "Aus WFS",
|
|
177
178
|
"map.add.layer.wms": "Aus WMS",
|
|
179
|
+
"map.layer.add": "",
|
|
180
|
+
"map.layers.available": "",
|
|
178
181
|
"map.layers.list": "Ebenen",
|
|
179
182
|
"map.loading.data": "Kartendaten werden geladen...",
|
|
183
|
+
"map.loading.service": "",
|
|
180
184
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
181
185
|
"map.select.layer": "Datenquelle",
|
|
186
|
+
"map.wfs.urlInput.hint": "",
|
|
187
|
+
"map.wms.urlInput.hint": "",
|
|
182
188
|
"multiselect.filter.placeholder": "Suche",
|
|
183
189
|
"nav.back": "Zurück",
|
|
184
190
|
"next": "weiter",
|
|
@@ -213,14 +219,16 @@
|
|
|
213
219
|
"record.metadata.catalog": "Katalog",
|
|
214
220
|
"record.metadata.contact": "Kontakt",
|
|
215
221
|
"record.metadata.createdOn": "Erstellt am",
|
|
216
|
-
"record.metadata.details": "
|
|
222
|
+
"record.metadata.details": "Technische Informationen",
|
|
217
223
|
"record.metadata.download": "Downloads",
|
|
218
224
|
"record.metadata.formats": "",
|
|
219
225
|
"record.metadata.isOpenData": "Open Data",
|
|
220
226
|
"record.metadata.keywords": "Stichworte",
|
|
227
|
+
"record.metadata.lastUpdate": "",
|
|
221
228
|
"record.metadata.links": "Links",
|
|
222
229
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Verwendungsbedingungen angegeben.",
|
|
223
230
|
"record.metadata.origin": "Über die Daten",
|
|
231
|
+
"record.metadata.owner": "",
|
|
224
232
|
"record.metadata.preview": "Vorschau",
|
|
225
233
|
"record.metadata.publications": "Veröffentlichungen",
|
|
226
234
|
"record.metadata.quality": "",
|
|
@@ -243,7 +251,10 @@
|
|
|
243
251
|
"record.metadata.quality.updateFrequency.success": "",
|
|
244
252
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
245
253
|
"record.metadata.sheet": "Weitere Informationen erhalten Sie unter :",
|
|
254
|
+
"record.metadata.themes": "",
|
|
246
255
|
"record.metadata.title": "Titel",
|
|
256
|
+
"record.metadata.type": "",
|
|
257
|
+
"record.metadata.uniqueId": "",
|
|
247
258
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
248
259
|
"record.metadata.updateStatus": "Aktualisierungsstatus der Daten",
|
|
249
260
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
@@ -307,6 +318,7 @@
|
|
|
307
318
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
308
319
|
"table.select.data": "Datenquelle",
|
|
309
320
|
"tooltip.html.copy": "HTML kopieren",
|
|
321
|
+
"tooltip.id.copy": "",
|
|
310
322
|
"tooltip.url.copy": "URL kopieren",
|
|
311
323
|
"tooltip.url.open": "URL öffnen",
|
|
312
324
|
"ui.readLess": "Weniger lesen",
|