From f9031461d6ac68ae8b06fd1ccbfb7a160519d9fb Mon Sep 17 00:00:00 2001 From: Stefan Scheu Date: Wed, 7 Feb 2024 15:06:09 +0100 Subject: [PATCH] fix: added workaround to prevent jumping viewport in bricks --- .../Resources/public/js/pimcore/overrides.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/bundles/AdminBundle/Resources/public/js/pimcore/overrides.js b/bundles/AdminBundle/Resources/public/js/pimcore/overrides.js index f30ce1058d4..665901b31e0 100644 --- a/bundles/AdminBundle/Resources/public/js/pimcore/overrides.js +++ b/bundles/AdminBundle/Resources/public/js/pimcore/overrides.js @@ -934,6 +934,18 @@ Ext.override(Ext.picker.Date, { } }); +function isElementInTheViewport(domElement) { + if (domElement && typeof domElement.getBoundingClientRect === "function") { + const rect = domElement.getBoundingClientRect(); + if (rect) { + return ( + rect["top"] < window.innerHeight && + rect["bottom"] > 0 + ); + } + } + return false; +} /** workaround for [DataObject] Advanced Image Dropzone only works once #9115 * Issue: on node drop the component gets destroyed. On mouse up it then tries to focus an already destroyed element. @@ -950,7 +962,9 @@ Ext.override(Ext.dom.Element, { } else { Ext.fireEvent('beforefocus', dom); if (dom) { - dom.focus(); + dom.focus({ + preventScroll: isElementInTheViewport(dom) + }); } }