From c80bca7c83857e1230acbdaccde8352abd311f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20L=C3=B3pez-Barranco?= Date: Mon, 11 Dec 2023 12:44:01 +0100 Subject: [PATCH] fix(overlay-controller): do not scroll to invoker if it is visible (#2155) * fix(overlay-controller): do not scroll to invoker if it is visible on screen When closing an overlay, srollIntoView forced the invoker element to be placed in the middle of the screen. This fix prevents the scroll if the invoker is already visible, but still scrolls it into view if needed. * chore: changeset --- .changeset/hot-otters-push.md | 5 +++++ packages/ui/components/overlays/src/OverlayController.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/hot-otters-push.md diff --git a/.changeset/hot-otters-push.md b/.changeset/hot-otters-push.md new file mode 100644 index 000000000..44b8f362e --- /dev/null +++ b/.changeset/hot-otters-push.md @@ -0,0 +1,5 @@ +--- +'@lion/ui': patch +--- + +Fix scroll behavior when closing an overlay diff --git a/packages/ui/components/overlays/src/OverlayController.js b/packages/ui/components/overlays/src/OverlayController.js index db4210476..d88f6f5aa 100644 --- a/packages/ui/components/overlays/src/OverlayController.js +++ b/packages/ui/components/overlays/src/OverlayController.js @@ -933,7 +933,7 @@ export class OverlayController extends EventTarget { if (this.elementToFocusAfterHide) { this.elementToFocusAfterHide.focus(); - this.elementToFocusAfterHide.scrollIntoView({ block: 'center' }); + this.elementToFocusAfterHide.scrollIntoView({ block: 'nearest' }); } else { /** @type {HTMLElement} */ (this.__activeElementRightBeforeHide).blur(); }