From e8a1c9b104da8094f490463a3a660b4c59d90c94 Mon Sep 17 00:00:00 2001 From: Chris Stade Date: Sat, 23 Dec 2023 16:21:32 +0100 Subject: [PATCH 1/6] Create carousel draft --- package.json | 58 ++++++++++++++++++++++------------------- src/app.d.ts | 2 ++ src/lib/Carousel.svelte | 31 ++++++++++++++++++++++ src/lib/index.ts | 1 + src/routes/+page.svelte | 9 +++++-- 5 files changed, 72 insertions(+), 29 deletions(-) create mode 100644 src/lib/Carousel.svelte diff --git a/package.json b/package.json index 75066ee2..4946d15c 100644 --- a/package.json +++ b/package.json @@ -17,34 +17,38 @@ "check": "svelte-check" }, "devDependencies": { - "@iconify/svelte": "^3.1.4", + "@iconify/svelte": "^3.1.3", "@mapbox/mapbox-gl-geocoder": "^5.0.1", - "@playwright/test": "^1.38.1", - "@rollup/plugin-yaml": "^4.1.1", - "@sveltejs/adapter-static": "^2.0.3", - "@sveltejs/kit": "^1.25.1", - "@sveltejs/vite-plugin-svelte": "^2.4.6", - "@types/events": "^3.0.1", - "@types/mapbox-gl": "^2.7.15", - "@types/mapbox__mapbox-gl-geocoder": "^4.7.5", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", - "eslint": "^8.50.0", - "eslint-plugin-svelte": "^2.33.2", + "@playwright/test": "^1.33.0", + "@rollup/plugin-yaml": "^4.0.1", + "@sveltejs/adapter-static": "^2.0.2", + "@sveltejs/kit": "^1.16.2", + "@sveltejs/vite-plugin-svelte": "^2.2.0", + "@types/events": "^3.0.0", + "@types/mapbox-gl": "^2.7.11", + "@types/mapbox__mapbox-gl-geocoder": "^4.7.3", + "@typescript-eslint/eslint-plugin": "^5.59.2", + "@typescript-eslint/parser": "^5.59.2", + "eslint": "^8.40.0", + "eslint-plugin-svelte3": "^4.0.0", "js-yaml": "^4.1.0", - "mapbox-gl": "^2.15.0", - "marked": "^9.0.3", - "prettier": "^3.0.3", - "prettier-plugin-svelte": "^3.0.3", - "svelte": "^4.2.1", - "svelte-check": "^3.5.2", - "svelte-multiselect": "^10.2.0", - "svelte-preprocess": "^5.0.4", - "svelte-range-slider-pips": "^2.2.3", - "svelte-toc": "^0.5.6", - "svelte-zoo": "^0.4.9", - "svelte2tsx": "^0.6.22", - "typescript": "^5.2.2", - "vite": "^4.4.9" + "mapbox-gl": "^2.14.1", + "marked": "^4.3.0", + "prettier": "^2.8.8", + "prettier-plugin-svelte": "^2.10.0", + "svelte": "3.57.0", + "svelte-carousel": "^1.0.25", + "svelte-check": "^3.3.1", + "svelte-multiselect": "^8.6.1", + "svelte-preprocess": "^5.0.3", + "svelte-range-slider-pips": "^2.1.1", + "svelte-toc": "^0.5.5", + "svelte-zoo": "^0.4.5", + "svelte2tsx": "^0.6.13", + "typescript": "^5.0.4", + "vite": "^4.3.5" + }, + "dependencies": { + "suncalc": "^1.9.0" } } diff --git a/src/app.d.ts b/src/app.d.ts index 71714b12..9e70e9d3 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -29,3 +29,5 @@ declare module '*messages.yml' { } declare module '*package.json' + +declare module 'svelte-carousel' diff --git a/src/lib/Carousel.svelte b/src/lib/Carousel.svelte new file mode 100644 index 00000000..057ed305 --- /dev/null +++ b/src/lib/Carousel.svelte @@ -0,0 +1,31 @@ + + +{#await get_posts() then _ } + + {#each posts as post} +
+ +
+ {/each} +
+{/await} diff --git a/src/lib/index.ts b/src/lib/index.ts index 5c1038aa..c2562b9c 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1,6 +1,7 @@ export { default as BasePage } from './BasePage.svelte' export { default as ChapterList } from './ChapterList.svelte' export { default as ChapterMap } from './ChapterMap.svelte' +export { default as Carousel } from './Carousel.svelte' export { default as CircleSpinner } from './CircleSpinner.svelte' export { default as Collapsible } from './Collapsible.svelte' export { default as Footer } from './Footer.svelte' diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 71565517..ac081664 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,11 +1,14 @@ @@ -86,6 +89,8 @@ {@html data.page.body} + + + \ No newline at end of file From 3db18353f7658bed186cab7fdc1c7e142e39c6d5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Aug 2025 12:52:32 +0200 Subject: [PATCH 5/6] Add error handling and removed comments --- src/lib/Carousel.svelte | 63 +++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/src/lib/Carousel.svelte b/src/lib/Carousel.svelte index 0c881715..74a8b91e 100644 --- a/src/lib/Carousel.svelte +++ b/src/lib/Carousel.svelte @@ -14,50 +14,33 @@ // TODO:CS: Style-Frage Dots ja/nein? Wenn ja nur ausgewaehlte Beitraege, da zu viele sonst? export let dots = false + let error: Error | undefined = undefined + async function get_posts() { - posts = await fetch_posts() + try { + posts = await fetch_posts() + } catch (err) { + error = err as Error + console.error('Failed to fetch posts:', err) + } } - - // Alternative carousel with beautiful animations: https://splidejs.com/integration/svelte-splide/ - // import { Splide, SplideSlide } from '@splidejs/svelte-splide'; - // import '@splidejs/svelte-splide/css'; -{#await get_posts() then _ } - - {#each posts as post} -
- -
- {/each} -
- - - - - +{#await get_posts() then _} + {#if !error && posts && posts.length > 0} + + {#each posts as post} +
+ +
+ {/each} +
+ {/if} {/await} - \ No newline at end of file + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index c4367b31..7e7a30fb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,11 +1,11 @@