diff --git a/src/lib/components/Spinner.svelte b/src/lib/components/Spinner.svelte new file mode 100644 index 0000000..b161dde --- /dev/null +++ b/src/lib/components/Spinner.svelte @@ -0,0 +1,57 @@ + + diff --git a/src/lib/stores.ts b/src/lib/stores.ts new file mode 100644 index 0000000..701527f --- /dev/null +++ b/src/lib/stores.ts @@ -0,0 +1,21 @@ +import { writable } from 'svelte/store'; +import type { Writable } from 'svelte/store'; +import type { InstagramPost } from '../types/instagram'; + +import { derived } from "svelte/store"; +import { navigating } from "$app/stores"; + + +export const instagramFeed: Writable = writable([]); + + +let timer = null; +/** When navigating from to, time 500ms to be true, else false */ +export const navigationIsDelayed = derived(navigating, (newValue, set) => { + if (timer) { clearTimeout(timer); } + if (newValue) { + timer = setTimeout(() => set(true), 500); + } + set(false); +}); + diff --git a/src/routes/(home)/+layout.svelte b/src/routes/+layout.svelte similarity index 84% rename from src/routes/(home)/+layout.svelte rename to src/routes/+layout.svelte index 81a312c..227cdc6 100644 --- a/src/routes/(home)/+layout.svelte +++ b/src/routes/+layout.svelte @@ -57,8 +57,11 @@ deepLinkedElement.scrollIntoView(); } } - } - + }; + import { fade } from 'svelte/transition'; + import Spinner from '$lib/components/Spinner.svelte'; + import { navigationIsDelayed } from '$lib/stores'; + @@ -91,19 +94,26 @@ +{#if $navigationIsDelayed} +
+
+ +
+
+{:else} + + + + + + + - - - - - - - - - - - - + + + + +{/if}