From 0d2f83c9f88438de6d5177e4bed7e7c144e4453f Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Fri, 25 Sep 2026 23:59:07 +0000 Subject: [PATCH] =?UTF-8?q?Country=20posters:=20"Export=20poster=E2=80=A6"?= =?UTF-8?q?=20opens=20the=20dialog=20again?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit countries-map mounted with :poster and :active-tab, props the dialog does not declare, and without v-model or getMap. PosterDialog shows only while its modelValue is true, so the button opened nothing, on both engines. It now passes v-model and a getMap accessor, and unwraps the legend-rows ref. loadPoster() also called useMapPoster with an options object; useMapPoster(getSourceMap) takes the map accessor. Headless: the bundle builds. needs eyes: country-posters map > menu > Export poster… shows the dialog, and Render downloads. --- .../country-posters/countries-map.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugin-designs/country-posters/countries-map.vue b/plugin-designs/country-posters/countries-map.vue index d8447bdb8..3383fde38 100644 --- a/plugin-designs/country-posters/countries-map.vue +++ b/plugin-designs/country-posters/countries-map.vue @@ -101,11 +101,8 @@ function _syncHitboxFilter(m, filter) { function loadPoster() { if (!_posterPromise) { _posterPromise = import('@map/composables/poster/useMapPoster.js') - .then(m => m.useMapPoster({ - sourceMap: () => map.value, - mapboxToken: mapboxToken.value, - styleUrl: () => map.value?.getStyle()?.sprite?.replace(/\/sprite.*$/, '') || profileConfig?.value?.style - })) + // useMapPoster(getSourceMap) takes the map ACCESSOR, not an options object + .then(m => m.useMapPoster(() => map.value)) } return _posterPromise } @@ -2229,12 +2226,15 @@ onBeforeUnmount(() => { /> +