From b2ebc442a37719bc57e967fd27c55f2dfd67333a Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Thu, 23 Apr 2026 09:54:11 +0100 Subject: [PATCH] fix live preview scrolling --- .../js/components/ui/LivePreview/LivePreview.vue | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/resources/js/components/ui/LivePreview/LivePreview.vue b/resources/js/components/ui/LivePreview/LivePreview.vue index 52de68f3ef6..bdf0d95505b 100644 --- a/resources/js/components/ui/LivePreview/LivePreview.vue +++ b/resources/js/components/ui/LivePreview/LivePreview.vue @@ -271,6 +271,18 @@ function setEditorWidth(width) { localStorage.setItem(widthLocalStorageKey, width); } +function onResizeEnd() { + editorResizing.value = false; + + // Chromium doesn't recalculate iframe scroll state after the parent + // container is resized. Toggling a transform forces a reflow. #14540 + const iframe = iframeContentContainer.value?.querySelector('iframe'); + if (iframe) { + iframe.style.transform = 'translateZ(0)'; + requestAnimationFrame(() => iframe.style.transform = ''); + } +} + function close() { if (poppedOut.value) closePopout(); @@ -343,7 +355,7 @@ Statamic.$events.$on(`live-preview.${name.value}.refresh`, () => { v-show="!poppedOut" @resized="setEditorWidth" @resize-start="editorResizing = true" - @resize-end="editorResizing = false" + @resize-end="onResizeEnd" @collapsed="collapseEditor" />