diff --git a/src/components/PageTransition.svelte b/src/components/PageTransition.svelte index 312164a..9fbe958 100644 --- a/src/components/PageTransition.svelte +++ b/src/components/PageTransition.svelte @@ -2,25 +2,32 @@ import { page } from '$app/stores' import { afterUpdate } from 'svelte' import { fade } from 'svelte/transition' - import { pageLoading } from '$utils/stores' import { scrollToTop } from '$utils/functions' - import { DURATION } from '$utils/contants' + import { pageLoading } from '$utils/stores' + import { DELAY, DURATION } from '$utils/constants' let loadingTimeout: ReturnType | number = null $: doNotScroll = !$page.url.searchParams.get('country') && !$page.url.pathname.includes('/shop/') + // Hide page loading indicator on page update afterUpdate(() => { - // Turn page loading on page mount clearTimeout(loadingTimeout) loadingTimeout = setTimeout(() => $pageLoading = false, DURATION.PAGE_IN) })
doNotScroll && scrollToTop()} + on:outrostart={() => { + // Show page loading indicator + $pageLoading = true + }} + on:outroend={() => { + // Scroll back to top + doNotScroll && requestAnimationFrame(() => scrollToTop()) + }} >
\ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index efbabe1..c486fe0 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -2,13 +2,13 @@ import '../style/global.scss' import { browser } from '$app/environment' - import { navigating, page } from '$app/stores' + import { page } from '$app/stores' import { beforeNavigate } from '$app/navigation' + import { PUBLIC_ANALYTICS_KEY, PUBLIC_ANALYTICS_URL } from '$env/static/public' import type { PageData } from './$types' import { onMount, setContext } from 'svelte' import { pageLoading, previousPage } from '$utils/stores' import '$utils/polyfills' - import { PUBLIC_ANALYTICS_KEY, PUBLIC_ANALYTICS_URL } from '$env/static/public' // Components import SVGSprite from '$components/SVGSprite.svelte' import SmoothScroll from '$components/SmoothScroll.svelte' @@ -43,10 +43,6 @@ $previousPage = from.url.pathname }) - // Define page loading from navigating store - navigating.subscribe((store: any) => { - store && ($pageLoading = true) - }) onMount(() => { // Avoid FOUC diff --git a/src/utils/functions/index.ts b/src/utils/functions/index.ts index 6b34322..2757f87 100644 --- a/src/utils/functions/index.ts +++ b/src/utils/functions/index.ts @@ -131,7 +131,7 @@ export const scrollToTop = (delay?: number) => { if (delay && delay > 0) { setTimeout(scroll, delay) } else { - scroll() + return scroll() } }