geonetwork-ui 2.8.2-dev.fa42c5152 → 2.9.0-dev.083d7682e
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/fesm2022/geonetwork-ui.mjs +505 -506
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +236 -156
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/common/domain/src/index.ts +1 -0
- package/src/libs/feature/editor/src/index.ts +8 -7
- package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +6 -1
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +5 -1
- package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +2 -2
- package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.html +4 -4
- package/src/libs/feature/router/src/lib/default/router.module.ts +3 -3
- package/src/libs/feature/router/src/lib/default/router.service.ts +2 -2
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +2 -2
- package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -3
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +10 -7
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +1 -1
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +1 -1
- package/src/libs/util/app-config/src/lib/app-config.ts +8 -2
- package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
- package/src/libs/util/app-config/src/lib/model.ts +1 -0
- package/src/libs/util/shared/src/lib/gn-ui-version.ts +5 -4
- package/src/libs/util/shared/src/lib/services/theme.service.ts +9 -23
- package/tailwind.base.config.js +3 -2
- package/translations/de.json +2 -2
- package/translations/en.json +5 -5
- package/translations/fr.json +5 -5
- package/translations/it.json +5 -5
- package/translations/sk.json +1 -1
|
@@ -45,13 +45,12 @@ export class ApplicationBannerComponent {
|
|
|
45
45
|
this.icon = 'matWarning'
|
|
46
46
|
break
|
|
47
47
|
case 'light':
|
|
48
|
-
this.msgClass =
|
|
49
|
-
'bg-primary-opacity-10 border-primary-lightest text-black'
|
|
48
|
+
this.msgClass = 'bg-primary/10 border-primary-lightest text-black'
|
|
50
49
|
this.icon = 'matInfoOutline'
|
|
51
50
|
break
|
|
52
51
|
case 'secondary':
|
|
53
52
|
default:
|
|
54
|
-
this.msgClass = 'bg-primary
|
|
53
|
+
this.msgClass = 'bg-primary/50 border-primary-darker text-black'
|
|
55
54
|
this.icon = 'matWarningAmberOutline'
|
|
56
55
|
break
|
|
57
56
|
}
|
|
@@ -29,16 +29,19 @@
|
|
|
29
29
|
</div>
|
|
30
30
|
@if (shownOrganization?.website) {
|
|
31
31
|
<div>
|
|
32
|
-
<
|
|
33
|
-
[href]="shownOrganization.website"
|
|
34
|
-
target="_blank"
|
|
35
|
-
class="contact-website text-sm cursor-pointer hover:underline transition-all"
|
|
36
|
-
>{{ shownOrganization.website }}
|
|
32
|
+
<div class="flex items-center mt-1">
|
|
37
33
|
<ng-icon
|
|
38
|
-
class="!w-
|
|
34
|
+
class="!w-5 !h-5 !text-[20px] opacity-75 shrink-0"
|
|
39
35
|
name="matOpenInNew"
|
|
40
36
|
></ng-icon>
|
|
41
|
-
|
|
37
|
+
<a
|
|
38
|
+
[href]="shownOrganization.website"
|
|
39
|
+
target="_blank"
|
|
40
|
+
class="contact-website text-sm cursor-pointer hover:underline transition-all ml-2"
|
|
41
|
+
>
|
|
42
|
+
{{ shownOrganization.website }}
|
|
43
|
+
</a>
|
|
44
|
+
</div>
|
|
42
45
|
</div>
|
|
43
46
|
}
|
|
44
47
|
</div>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</div>
|
|
7
7
|
<button
|
|
8
8
|
(click)="resetUrl()"
|
|
9
|
-
class="bg-primary
|
|
9
|
+
class="bg-primary/50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors"
|
|
10
10
|
>
|
|
11
11
|
<p class="text-[13px] uppercase" translate>
|
|
12
12
|
record.metadata.api.form.reset
|
package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@if (apiLinks.length > 0) {
|
|
2
2
|
<div style="height: 652px" id="preview">
|
|
3
|
-
<div class="bg-primary
|
|
3
|
+
<div class="bg-primary/10 overflow-visible" style="height: 420px">
|
|
4
4
|
<div class="container-lg px-4 lg:mx-auto">
|
|
5
5
|
<div>
|
|
6
6
|
<div class="gn-ui-section-title mb-6" translate>
|
|
@@ -70,8 +70,11 @@ export function getCustomTranslations(langCode: string): CustomTranslations {
|
|
|
70
70
|
|
|
71
71
|
let appConfigLoaded = false
|
|
72
72
|
|
|
73
|
-
export function loadAppConfig() {
|
|
74
|
-
|
|
73
|
+
export function loadAppConfig(configUrl = 'assets/configuration/default.toml') {
|
|
74
|
+
console.log(
|
|
75
|
+
`[geonetwork-ui] Loading application configuration from ${configUrl}`
|
|
76
|
+
)
|
|
77
|
+
return fetch(configUrl)
|
|
75
78
|
.then((resp) => {
|
|
76
79
|
if (!resp.ok) throw new Error('Configuration file could not be loaded')
|
|
77
80
|
return resp.text()
|
|
@@ -229,6 +232,7 @@ export function loadAppConfig() {
|
|
|
229
232
|
'record_kind_quick_filter',
|
|
230
233
|
'filter_geometry_data',
|
|
231
234
|
'filter_geometry_url',
|
|
235
|
+
'do_not_use_default_search_preset',
|
|
232
236
|
'search_preset',
|
|
233
237
|
'advanced_filters',
|
|
234
238
|
'limit',
|
|
@@ -252,6 +256,8 @@ export function loadAppConfig() {
|
|
|
252
256
|
parsedSearchSection.record_kind_quick_filter,
|
|
253
257
|
FILTER_GEOMETRY_DATA: parsedSearchSection.filter_geometry_data,
|
|
254
258
|
FILTER_GEOMETRY_URL: parsedSearchSection.filter_geometry_url,
|
|
259
|
+
DO_NOT_USE_DEFAULT_SEARCH_PRESET:
|
|
260
|
+
!!parsedSearchSection.do_not_use_default_search_preset,
|
|
255
261
|
SEARCH_PRESET: parsedSearchParams.map((param) => ({
|
|
256
262
|
sort: param.sort,
|
|
257
263
|
name: param.name,
|
|
@@ -40,6 +40,7 @@ fonts_stylesheet_url = "https://fonts.googleapis.com/css2?family=Open+Sans"
|
|
|
40
40
|
[search]
|
|
41
41
|
record_kind_quick_filter = false
|
|
42
42
|
filter_geometry_url = 'https://my.domain.org/geom.json'
|
|
43
|
+
do_not_use_default_search_preset = false
|
|
43
44
|
advanced_filters = ['publicationYear', 'documentStandard', 'inspireKeyword', 'topic', 'license']
|
|
44
45
|
|
|
45
46
|
[[search_preset]]
|
|
@@ -2,7 +2,8 @@ import packageJson from '../../../../../package.json'
|
|
|
2
2
|
|
|
3
3
|
export const GEONETWORK_UI_VERSION = packageJson.version
|
|
4
4
|
|
|
5
|
-
export const GEONETWORK_UI_TAG_NAME =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export const GEONETWORK_UI_TAG_NAME = GEONETWORK_UI_VERSION.split(
|
|
6
|
+
'-'
|
|
7
|
+
)[1]?.startsWith('dev')
|
|
8
|
+
? 'main'
|
|
9
|
+
: `v${packageJson.version}`
|
|
@@ -10,26 +10,6 @@ export class ThemeService {
|
|
|
10
10
|
return document.documentElement.style.getPropertyValue(`--color-${name}`)
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
static generateBgOpacityClasses(
|
|
14
|
-
colorName,
|
|
15
|
-
colorValue,
|
|
16
|
-
opacities = [0, 10, 25, 50, 75]
|
|
17
|
-
) {
|
|
18
|
-
const color = chroma(colorValue)
|
|
19
|
-
const styleElement = document.createElement('style')
|
|
20
|
-
styleElement.innerHTML = opacities.reduce((cssRules, opacity) => {
|
|
21
|
-
cssRules += `.bg-${colorName}-opacity-${opacity}{background-color:${color
|
|
22
|
-
.alpha(opacity / 100)
|
|
23
|
-
.css()};}`
|
|
24
|
-
|
|
25
|
-
cssRules += `.hover-bg-${colorName}-opacity-${opacity}:hover {background-color:${color
|
|
26
|
-
.alpha(opacity / 100)
|
|
27
|
-
.css()};}`
|
|
28
|
-
return cssRules
|
|
29
|
-
}, '')
|
|
30
|
-
document.getElementsByTagName('head')[0].appendChild(styleElement)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
13
|
static applyCssVariables(
|
|
34
14
|
primaryColor: string,
|
|
35
15
|
secondaryColor: string,
|
|
@@ -39,13 +19,19 @@ export class ThemeService {
|
|
|
39
19
|
titleFont?: string,
|
|
40
20
|
fontsStylesheetUrl?: string
|
|
41
21
|
) {
|
|
42
|
-
const applyColor = (name: string, color) => {
|
|
22
|
+
const applyColor = (name: string, color, includeRawValues?: boolean) => {
|
|
43
23
|
document.documentElement.style.setProperty(`--color-${name}`, color.css())
|
|
24
|
+
if (includeRawValues) {
|
|
25
|
+
document.documentElement.style.setProperty(
|
|
26
|
+
`--color-raw-${name}`,
|
|
27
|
+
color.css().replace(/^rgba?\((.*)\)/, '$1')
|
|
28
|
+
)
|
|
29
|
+
}
|
|
44
30
|
}
|
|
45
31
|
|
|
46
32
|
const black = chroma('black')
|
|
47
33
|
const white = chroma('white')
|
|
48
|
-
applyColor('primary', chroma(primaryColor))
|
|
34
|
+
applyColor('primary', chroma(primaryColor), true)
|
|
49
35
|
applyColor(
|
|
50
36
|
'primary-lighter',
|
|
51
37
|
chroma.scale([primaryColor, white]).mode('lab')(0.3)
|
|
@@ -70,7 +56,7 @@ export class ThemeService {
|
|
|
70
56
|
'primary-black',
|
|
71
57
|
chroma.scale([primaryColor, black]).mode('lab')(0.85)
|
|
72
58
|
)
|
|
73
|
-
applyColor('secondary', chroma(secondaryColor))
|
|
59
|
+
applyColor('secondary', chroma(secondaryColor), true)
|
|
74
60
|
applyColor(
|
|
75
61
|
'secondary-lighter',
|
|
76
62
|
chroma.scale([secondaryColor, white]).mode('lab')(0.3)
|
package/tailwind.base.config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @type {import('tailwindcss').Config} */
|
|
1
2
|
module.exports = {
|
|
2
3
|
theme: {
|
|
3
4
|
extend: {
|
|
@@ -8,14 +9,14 @@ module.exports = {
|
|
|
8
9
|
'primary-white': 'var(--color-primary-white)',
|
|
9
10
|
'primary-lightest': 'var(--color-primary-lightest)',
|
|
10
11
|
'primary-lighter': 'var(--color-primary-lighter)',
|
|
11
|
-
primary: 'var(--color-primary)',
|
|
12
|
+
primary: 'rgb(var(--color-raw-primary) / <alpha-value>)', // supports opacity
|
|
12
13
|
'primary-darker': 'var(--color-primary-darker)',
|
|
13
14
|
'primary-darkest': 'var(--color-primary-darkest)',
|
|
14
15
|
'primary-black': 'var(--color-primary-black)',
|
|
15
16
|
'secondary-white': 'var(--color-secondary-white)',
|
|
16
17
|
'secondary-lightest': 'var(--color-secondary-lightest)',
|
|
17
18
|
'secondary-lighter': 'var(--color-secondary-lighter)',
|
|
18
|
-
secondary: 'var(--color-secondary)',
|
|
19
|
+
secondary: 'rgb(var(--color-raw-secondary) / <alpha-value>)', // supports opacity
|
|
19
20
|
'secondary-darker': 'var(--color-secondary-darker)',
|
|
20
21
|
'secondary-darkest': 'var(--color-secondary-darkest)',
|
|
21
22
|
'secondary-black': 'var(--color-secondary-black)',
|
package/translations/de.json
CHANGED
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"record.metadata.download": "Herunterladen",
|
|
474
474
|
"record.metadata.feature.catalog": "Attributkatalog",
|
|
475
475
|
"record.metadata.formats": "Formate",
|
|
476
|
-
"record.metadata.isGeographical": "
|
|
476
|
+
"record.metadata.isGeographical": "geographischer Datensatz",
|
|
477
477
|
"record.metadata.keywords": "Stichworte",
|
|
478
478
|
"record.metadata.languages": "Sprachen",
|
|
479
479
|
"record.metadata.link.postgis.table": "Tabelle:",
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
664
664
|
"wfs.featuretype.notfound": "Kein passender Feature-Typ wurde im Dienst gefunden",
|
|
665
665
|
"wfs.geojsongml.notsupported": "Dieser Dienst unterstützt das GeoJSON- oder GML-Format nicht",
|
|
666
|
-
"wfs.unreachable.cors": "Der Dienst
|
|
666
|
+
"wfs.unreachable.cors": "Der Remote-Dienst ist nicht für den Datenempfang (CORS) konfiguriert",
|
|
667
667
|
"wfs.unreachable.http": "Der Dienst hat einen HTTP-Fehler zurückgegeben",
|
|
668
668
|
"wfs.unreachable.unknown": "Der Dienst konnte nicht erreicht werden"
|
|
669
669
|
}
|
package/translations/en.json
CHANGED
|
@@ -415,9 +415,9 @@
|
|
|
415
415
|
"record.feature.catalog.number.total.attribute": "Total amount of objects",
|
|
416
416
|
"record.feature.catalog.number.total.object": "Total amount of attributes",
|
|
417
417
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
418
|
-
"record.kind.dataset": "
|
|
419
|
-
"record.kind.reuse": "
|
|
420
|
-
"record.kind.service": "
|
|
418
|
+
"record.kind.dataset": "dataset",
|
|
419
|
+
"record.kind.reuse": "reuse",
|
|
420
|
+
"record.kind.service": "service",
|
|
421
421
|
"record.metadata.about": "Description",
|
|
422
422
|
"record.metadata.api": "API",
|
|
423
423
|
"record.metadata.api.accessServiceProtocol.GPFDL": "GPFDL",
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"record.metadata.download": "Downloads",
|
|
474
474
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
475
475
|
"record.metadata.formats": "Formats",
|
|
476
|
-
"record.metadata.isGeographical": "
|
|
476
|
+
"record.metadata.isGeographical": "geographic dataset",
|
|
477
477
|
"record.metadata.keywords": "Keywords",
|
|
478
478
|
"record.metadata.languages": "Languages",
|
|
479
479
|
"record.metadata.link.postgis.table": "table :",
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
664
664
|
"wfs.featuretype.notfound": "No matching feature type was found in the service",
|
|
665
665
|
"wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
|
|
666
|
-
"wfs.unreachable.cors": "The service
|
|
666
|
+
"wfs.unreachable.cors": "The remote service is not configured to allow data retrieval (CORS)",
|
|
667
667
|
"wfs.unreachable.http": "The service returned an HTTP error",
|
|
668
668
|
"wfs.unreachable.unknown": "The service could not be reached"
|
|
669
669
|
}
|
package/translations/fr.json
CHANGED
|
@@ -415,9 +415,9 @@
|
|
|
415
415
|
"record.feature.catalog.number.total.attribute": "Nombre total d'attributs",
|
|
416
416
|
"record.feature.catalog.number.total.object": "Nombre total d'objets",
|
|
417
417
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
418
|
-
"record.kind.dataset": "
|
|
419
|
-
"record.kind.reuse": "
|
|
420
|
-
"record.kind.service": "
|
|
418
|
+
"record.kind.dataset": "donnée",
|
|
419
|
+
"record.kind.reuse": "réutilisation",
|
|
420
|
+
"record.kind.service": "service",
|
|
421
421
|
"record.metadata.about": "A propos",
|
|
422
422
|
"record.metadata.api": "API",
|
|
423
423
|
"record.metadata.api.accessServiceProtocol.GPFDL": "",
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"record.metadata.download": "Téléchargements",
|
|
474
474
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
475
475
|
"record.metadata.formats": "Formats",
|
|
476
|
-
"record.metadata.isGeographical": "
|
|
476
|
+
"record.metadata.isGeographical": "donnée géographique",
|
|
477
477
|
"record.metadata.keywords": "Mots-clés",
|
|
478
478
|
"record.metadata.languages": "Langues",
|
|
479
479
|
"record.metadata.link.postgis.table": "table :",
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
664
664
|
"wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
|
|
665
665
|
"wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
|
|
666
|
-
"wfs.unreachable.cors": "Le service n'est pas
|
|
666
|
+
"wfs.unreachable.cors": "Le service distant n'est pas configuré pour autoriser la consommation des données (CORS)",
|
|
667
667
|
"wfs.unreachable.http": "Le service a retourné une erreur HTTP",
|
|
668
668
|
"wfs.unreachable.unknown": "Le service n'est pas accessible"
|
|
669
669
|
}
|
package/translations/it.json
CHANGED
|
@@ -415,9 +415,9 @@
|
|
|
415
415
|
"record.feature.catalog.number.total.attribute": "Quantità totale di oggetti",
|
|
416
416
|
"record.feature.catalog.number.total.object": "Quantità totale di attributi",
|
|
417
417
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
418
|
-
"record.kind.dataset": "
|
|
419
|
-
"record.kind.reuse": "
|
|
420
|
-
"record.kind.service": "
|
|
418
|
+
"record.kind.dataset": "dataset",
|
|
419
|
+
"record.kind.reuse": "riutilizzato",
|
|
420
|
+
"record.kind.service": "servizio",
|
|
421
421
|
"record.metadata.about": "Descrizione",
|
|
422
422
|
"record.metadata.api": "API",
|
|
423
423
|
"record.metadata.api.accessServiceProtocol.GPFDL": "",
|
|
@@ -473,7 +473,7 @@
|
|
|
473
473
|
"record.metadata.download": "Download",
|
|
474
474
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
475
475
|
"record.metadata.formats": "Formati",
|
|
476
|
-
"record.metadata.isGeographical": "
|
|
476
|
+
"record.metadata.isGeographical": "dati geografici",
|
|
477
477
|
"record.metadata.keywords": "Parole chiave",
|
|
478
478
|
"record.metadata.languages": "Lingue",
|
|
479
479
|
"record.metadata.link.postgis.table": "",
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
664
664
|
"wfs.featuretype.notfound": "La classe di oggetto non è stata trovata nel servizio",
|
|
665
665
|
"wfs.geojsongml.notsupported": "Il servizio non supporta il formato GeoJSON o GML",
|
|
666
|
-
"wfs.unreachable.cors": "Il servizio non è
|
|
666
|
+
"wfs.unreachable.cors": "Il servizio remoto non è configurato per consentire il consumo di dati (CORS)",
|
|
667
667
|
"wfs.unreachable.http": "Il servizio ha restituito un errore HTTP",
|
|
668
668
|
"wfs.unreachable.unknown": "Il servizio non è accessibile"
|
|
669
669
|
}
|
package/translations/sk.json
CHANGED
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"wfs.feature.limit": "",
|
|
664
664
|
"wfs.featuretype.notfound": "V službe nebol nájdený žiadny zodpovedajúci typ funkcie",
|
|
665
665
|
"wfs.geojsongml.notsupported": "Táto služba nepodporuje formát GeoJSON alebo GML",
|
|
666
|
-
"wfs.unreachable.cors": "
|
|
666
|
+
"wfs.unreachable.cors": "Vzdialená služba nie je nakonfigurovaná tak, aby povoľovala spotrebu dát (CORS)",
|
|
667
667
|
"wfs.unreachable.http": "Služba vrátila chybu HTTP",
|
|
668
668
|
"wfs.unreachable.unknown": "So službou sa nedalo spojiť"
|
|
669
669
|
}
|