diff --git a/library/components/poster/PosterSectionView.vue b/library/components/poster/PosterSectionView.vue index c7cf74aa9..19c8548f7 100644 --- a/library/components/poster/PosterSectionView.vue +++ b/library/components/poster/PosterSectionView.vue @@ -1,7 +1,7 @@ @@ -55,11 +71,14 @@ const noneLine = computed(() => t('poster.sectionNone', { scope: String(cfg.valu 's attributes → its profile-config. Pure (no Vue), so it is testable on its own. -export const ATTRS = ['type', 'scope', 'collapsible', 'collapsed', 'locale', 'assets-base', 'api-base-url', 'is-dark', 'columns', 'min-card-px', 'show-header'] +export const ATTRS = ['type', 'scope', 'collapsible', 'collapsed', 'locale', 'assets-base', 'api-base-url', 'is-dark', 'columns', 'min-card-px', 'show-header', 'card-action'] export const TAG = 'dxm-poster-section' export function posterSectionConfig(el) { @@ -19,6 +19,9 @@ export function posterSectionConfig(el) { // show-header="false": no section head, so the HOST's own layout is the header (a key only then: every other host's // config is unchanged). The head is also the collapse toggle, so a headless section never collapses (PosterSectionView). if (flag('show-header', true) === false) cfg.showHeader = false + // card-action="dashboard": each card's sticker reads "Show dashboard" and asks the HOST to open its own page + // (PosterSectionView dispatches dxm-poster-dashboard). Only a known value sets a key; absent = "Show on map". + if (a('card-action') === 'dashboard') cfg.cardAction = 'dashboard' return cfg } diff --git a/library/elements/posterSectionElement.js b/library/elements/posterSectionElement.js index 799d9df41..7eb1fc7b4 100644 --- a/library/elements/posterSectionElement.js +++ b/library/elements/posterSectionElement.js @@ -6,7 +6,9 @@ * Attributes: type (default "country"), scope (a region / continent / list key), collapsible (default on; * collapsible="false" turns it off), collapsed (start shut), locale, assets-base, api-base-url, is-dark, columns * (posters per row, 1-5), min-card-px (the narrowest a card gets before a row holds one fewer), show-header (default - * on; show-header="false" hides the section's head so the host's layout is its header). + * on; show-header="false" hides the section's head so the host's layout is its header), card-action ("dashboard": each + * card reads "Show dashboard" and dispatches a bubbling, composed dxm-poster-dashboard { type, id, iso3, name, scope } for + * the host to open its own page; absent = "Show on map"). * They are mapped into the standard element's profile-config, so the element keeps defineMapElement's per-instance * i18n and store, and the profile (PosterSectionView.vue) reads them like every other profile reads its config. * Any bundle can call registerPosterSectionElement(); a second call is a no-op. diff --git a/library/i18n/locales/ar/posterCard.json b/library/i18n/locales/ar/posterCard.json new file mode 100644 index 000000000..a8cb18d1c --- /dev/null +++ b/library/i18n/locales/ar/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "عرض لوحة المعلومات", + "showDashboardAria": "عرض لوحة معلومات {label}" +} diff --git a/library/i18n/locales/de/posterCard.json b/library/i18n/locales/de/posterCard.json new file mode 100644 index 000000000..30bee41fb --- /dev/null +++ b/library/i18n/locales/de/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Dashboard anzeigen", + "showDashboardAria": "Dashboard anzeigen: {label}" +} diff --git a/library/i18n/locales/en/posterCard.json b/library/i18n/locales/en/posterCard.json new file mode 100644 index 000000000..3fc0c30ad --- /dev/null +++ b/library/i18n/locales/en/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Show dashboard", + "showDashboardAria": "Show the {label} dashboard" +} diff --git a/library/i18n/locales/es/posterCard.json b/library/i18n/locales/es/posterCard.json new file mode 100644 index 000000000..4c5842bb7 --- /dev/null +++ b/library/i18n/locales/es/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Ver el panel", + "showDashboardAria": "Ver el panel de {label}" +} diff --git a/library/i18n/locales/fr/posterCard.json b/library/i18n/locales/fr/posterCard.json new file mode 100644 index 000000000..baad954bf --- /dev/null +++ b/library/i18n/locales/fr/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Voir le tableau de bord", + "showDashboardAria": "Voir le tableau de bord : {label}" +} diff --git a/library/i18n/locales/hi/posterCard.json b/library/i18n/locales/hi/posterCard.json new file mode 100644 index 000000000..576bade51 --- /dev/null +++ b/library/i18n/locales/hi/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "डैशबोर्ड देखें", + "showDashboardAria": "{label} डैशबोर्ड देखें" +} diff --git a/library/i18n/locales/it/posterCard.json b/library/i18n/locales/it/posterCard.json new file mode 100644 index 000000000..4924aeb41 --- /dev/null +++ b/library/i18n/locales/it/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Vedi il cruscotto", + "showDashboardAria": "Vedi il cruscotto di {label}" +} diff --git a/library/i18n/locales/pt/posterCard.json b/library/i18n/locales/pt/posterCard.json new file mode 100644 index 000000000..3bfedd85f --- /dev/null +++ b/library/i18n/locales/pt/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Ver o painel", + "showDashboardAria": "Ver o painel: {label}" +} diff --git a/library/i18n/locales/ro/posterCard.json b/library/i18n/locales/ro/posterCard.json new file mode 100644 index 000000000..c23322a40 --- /dev/null +++ b/library/i18n/locales/ro/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Vezi panoul", + "showDashboardAria": "Vezi panoul {label}" +} diff --git a/library/i18n/locales/ru/posterCard.json b/library/i18n/locales/ru/posterCard.json new file mode 100644 index 000000000..cdd091303 --- /dev/null +++ b/library/i18n/locales/ru/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "Открыть панель", + "showDashboardAria": "Открыть панель: {label}" +} diff --git a/library/i18n/locales/zh/posterCard.json b/library/i18n/locales/zh/posterCard.json new file mode 100644 index 000000000..dab3b8a31 --- /dev/null +++ b/library/i18n/locales/zh/posterCard.json @@ -0,0 +1,4 @@ +{ + "showDashboard": "查看仪表板", + "showDashboardAria": "查看 {label} 仪表板" +}