From bc367cf7d259d9342619baa3df3339a2a14220b9 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 13 Aug 2025 12:22:02 -0700 Subject: [PATCH] Updating loading of articles to use a skeleton article while loading. --- package.json | 2 +- pnpm-lock.yaml | 16 +-- src/lib/components/Articles.svelte | 89 +++++++++-------- src/lib/components/ArticlesSkeleton.svelte | 111 ++++++++++++++------- src/lib/util/page_loading_indicator.svelte | 29 ++++++ src/routes/articles/[page]/+page.server.ts | 101 ++++++++++--------- src/routes/articles/[page]/+page.svelte | 17 ++-- 7 files changed, 220 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index f2bdae2..12a7d52 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@internationalized/date": "^3.8.2", "@playwright/test": "^1.54.2", "@sveltejs/enhanced-img": "^0.5.1", - "@sveltejs/kit": "^2.28.0", + "@sveltejs/kit": "^2.29.0", "@sveltejs/vite-plugin-svelte": "^5.1.1", "@unpic/svelte": "^1.0.0", "@zerodevx/svelte-img": "^2.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 39ea6fc..dff238c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 2.6.2 '@sveltejs/adapter-node': specifier: ^5.2.14 - version: 5.2.14(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))) + version: 5.2.14(@sveltejs/kit@2.29.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))) '@vercel/og': specifier: ^0.6.8 version: 0.6.8 @@ -52,8 +52,8 @@ importers: specifier: ^0.5.1 version: 0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) '@sveltejs/kit': - specifier: ^2.28.0 - version: 2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) + specifier: ^2.29.0 + version: 2.29.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': specifier: ^5.1.1 version: 5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) @@ -1210,8 +1210,8 @@ packages: svelte: ^5.0.0 vite: '>= 5.0.0' - '@sveltejs/kit@2.28.0': - resolution: {integrity: sha512-qrhygwHV5r6JrvCw4gwNqqxYGDi5YbajocxfKgFXmSFpFo8wQobUvsM0OfakN4h+0LEmXtqHRrC6BcyAkOwyoQ==} + '@sveltejs/kit@2.29.0': + resolution: {integrity: sha512-gOynQRBThrtF/RjljB8Oybs9VHVmLbk9q7E7ALJT6ImppJtc/yx3sTGiBV64y+lwmagnBCmEMmJ40CVChGy8lA==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -3303,12 +3303,12 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-node@5.2.14(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))': + '@sveltejs/adapter-node@5.2.14(@sveltejs/kit@2.29.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))': dependencies: '@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8) '@rollup/plugin-json': 6.1.0(rollup@4.34.8) '@rollup/plugin-node-resolve': 16.0.0(rollup@4.34.8) - '@sveltejs/kit': 2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) + '@sveltejs/kit': 2.29.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)) rollup: 4.34.8 '@sveltejs/enhanced-img@0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))': @@ -3324,7 +3324,7 @@ snapshots: transitivePeerDependencies: - rollup - '@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))': + '@sveltejs/kit@2.29.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) diff --git a/src/lib/components/Articles.svelte b/src/lib/components/Articles.svelte index 729c221..22f5c20 100644 --- a/src/lib/components/Articles.svelte +++ b/src/lib/components/Articles.svelte @@ -1,7 +1,10 @@

Favorite Articles

-
- +
+ {#if loadingArticles} + + {:else} {#each articlesData as article (article.hashed_url)}

{article.domain_name}

@@ -70,22 +78,23 @@
{/each} - + {/if}
- {`${totalArticles} more articles`} + {#if page.url.pathname === "/"} + {`${totalArticles} more articles`} + {/if}
- \ No newline at end of file + diff --git a/src/lib/components/ArticlesSkeleton.svelte b/src/lib/components/ArticlesSkeleton.svelte index 2064417..5f0829a 100644 --- a/src/lib/components/ArticlesSkeleton.svelte +++ b/src/lib/components/ArticlesSkeleton.svelte @@ -4,42 +4,45 @@ classes?: string[]; } - let { count = 6, classes = ['columns'] }: Props = $props(); + let { count = 6, classes = [""] }: Props = $props(); const placeholders = Array.from({ length: count }); -
- {#each placeholders as _, i (i)} -
-
-

- -
-
- - -
-
- {/each} -
+{#each placeholders as _, i (i)} +
+
+

+ +

+

+ +

+
+
+

+ +

+

+ +

+
+
+{/each} diff --git a/src/lib/util/page_loading_indicator.svelte b/src/lib/util/page_loading_indicator.svelte index da2b46b..7b07d77 100644 --- a/src/lib/util/page_loading_indicator.svelte +++ b/src/lib/util/page_loading_indicator.svelte @@ -1,5 +1,6 @@
@@ -28,8 +29,10 @@ base="/articles" /> - - + + \ No newline at end of file +