From 0de5509ad0a3bb32b04a74b5b12adb94a8a056b0 Mon Sep 17 00:00:00 2001 From: Jesper Kold-Hansen Date: Wed, 14 Dec 2022 20:18:48 +0100 Subject: [PATCH 1/3] Preserve scroll should be true on initial page visit. Preserve scroll should be true on initial page visit to mimic normal browser behavior. If a user has scrolled down the page, and then reloads, the page should stay where it is, so we cannot scroll to top, ergo we must preserve scroll. --- packages/core/src/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/router.ts b/packages/core/src/router.ts index 15b3d2cde..9766b92be 100644 --- a/packages/core/src/router.ts +++ b/packages/core/src/router.ts @@ -84,7 +84,7 @@ export class Router { protected handleInitialPageVisit(page: Page): void { this.page.url += window.location.hash - this.setPage(page, { preserveState: true }).then(() => fireNavigateEvent(page)) + this.setPage(page, { preserveScroll: true ,preserveState: true }).then(() => fireNavigateEvent(page)) } protected setupEventListeners(): void { From 4e4913eb818a3e07b821732dbf0b5d41ed53b2e3 Mon Sep 17 00:00:00 2001 From: Jesper Kold-Hansen Date: Wed, 14 Dec 2022 20:42:33 +0100 Subject: [PATCH 2/3] Restore scroll on initial page load If a preserve scroll is set to true in setPage restore the scroll position. --- packages/core/src/router.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/core/src/router.ts b/packages/core/src/router.ts index 9766b92be..9ccc28209 100644 --- a/packages/core/src/router.ts +++ b/packages/core/src/router.ts @@ -449,9 +449,8 @@ export class Router { replace = replace || hrefToUrl(page.url).href === window.location.href replace ? this.replaceState(page) : this.pushState(page) this.swapComponent({ component, page, preserveState }).then(() => { - if (!preserveScroll) { - this.resetScrollPositions() - } + preserveScroll ? this.restoreScrollPositions() ? this.resetScrollPositions() + if (!replace) { fireNavigateEvent(page) } From 7d86498200c68ebaf15d533837885f73b0605cd5 Mon Sep 17 00:00:00 2001 From: Jesper Kold-Hansen Date: Wed, 14 Dec 2022 20:45:01 +0100 Subject: [PATCH 3/3] Fixed a coding typo Just fixing a typing coding. --- packages/core/src/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/router.ts b/packages/core/src/router.ts index 9ccc28209..9322a135a 100644 --- a/packages/core/src/router.ts +++ b/packages/core/src/router.ts @@ -449,7 +449,7 @@ export class Router { replace = replace || hrefToUrl(page.url).href === window.location.href replace ? this.replaceState(page) : this.pushState(page) this.swapComponent({ component, page, preserveState }).then(() => { - preserveScroll ? this.restoreScrollPositions() ? this.resetScrollPositions() + preserveScroll ? this.restoreScrollPositions() : this.resetScrollPositions() if (!replace) { fireNavigateEvent(page)