diff --git a/src/components/index.tsx b/src/components/index.tsx index 3e1e7ac6..5092313f 100644 --- a/src/components/index.tsx +++ b/src/components/index.tsx @@ -310,7 +310,13 @@ class Joyride extends React.Component { /* istanbul ignore else */ if (status === STATUS.RUNNING) { - scrollTo(scrollY, { element: scrollParent as Element, duration: scrollDuration }); + scrollTo(scrollY, { element: scrollParent as Element, duration: scrollDuration }).then( + () => { + setTimeout(() => { + this.store.getPopper('tooltip')?.instance.update(); + }, 10); + }, + ); } } } diff --git a/src/modules/dom.ts b/src/modules/dom.ts index 486825d8..169504a3 100644 --- a/src/modules/dom.ts +++ b/src/modules/dom.ts @@ -104,7 +104,7 @@ export function hasCustomScrollParent(element: HTMLElement | null, skipFix: bool const parent = getScrollParent(element, skipFix); - return !parent.isSameNode(scrollDocument()); + return parent ? !parent.isSameNode(scrollDocument()) : false; } /** @@ -188,7 +188,11 @@ export function getElementPosition( parentTop = parent.scrollTop; } - const top = (elementRect?.top ?? 0) + (!hasScrollParent && !hasPosition(element) ? parentTop : 0); + let top = (elementRect?.top ?? 0) + (!hasScrollParent && !hasPosition(element) ? parentTop : 0); + + if (!parent.isSameNode(scrollDocument())) { + top += scrollDocument().scrollTop; + } return Math.floor(top - offset); }