diff --git a/src/components/vue/EmbedDynamique.vue b/src/components/vue/EmbedDynamique.vue index f4b289a..949c0d6 100644 --- a/src/components/vue/EmbedDynamique.vue +++ b/src/components/vue/EmbedDynamique.vue @@ -14,8 +14,27 @@ interface JournalItem { const selectedItem = ref(null) const iframeRef = ref(null) +const wrapperRef = ref(null) const skeletonHidden = ref(false) +// Force rendu desktop de l'iframe AEP : viewport simulée 1440px + scale dynamique +const VIEWPORT_W = 1440 +const iframeScale = ref(0.42) +let resizeObs: ResizeObserver | null = null + +const updateScale = () => { + if (!wrapperRef.value) return + const w = wrapperRef.value.clientWidth + if (w > 0) iframeScale.value = w / VIEWPORT_W +} + +const iframeStyle = computed(() => ({ + width: VIEWPORT_W + 'px', + height: (100 / iframeScale.value) + '%', + transform: `scale(${iframeScale.value})`, + transformOrigin: '0 0', +})) + const onJournalItemClick = (e: Event) => { const ce = e as CustomEvent if (ce.detail?.item) selectedItem.value = ce.detail.item @@ -23,9 +42,16 @@ const onJournalItemClick = (e: Event) => { onMounted(() => { window.addEventListener('journal-item-click', onJournalItemClick as EventListener) + if (wrapperRef.value && typeof ResizeObserver !== 'undefined') { + updateScale() + resizeObs = new ResizeObserver(updateScale) + resizeObs.observe(wrapperRef.value) + } }) onUnmounted(() => { window.removeEventListener('journal-item-click', onJournalItemClick as EventListener) + resizeObs?.disconnect() + resizeObs = null }) const reset = () => { @@ -89,18 +115,19 @@ const formatDate = (iso: string) => {
-
+
Chargement de la carte AEP...