From 49dca5b3aa2f25ef38c0e5319ba4e58775fba042 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 20 Sep 2023 21:12:43 -0700 Subject: [PATCH] feat: add Svelte 5 runes (#188) --- .../{svelte => svelte4}/Name.svelte | 0 .../1-declare-state/svelte5/Name.svelte | 5 ++++ .../{svelte => svelte4}/Name.svelte | 0 .../2-update-state/svelte5/Name.svelte | 6 ++++ .../{svelte => svelte4}/DoubleCount.svelte | 0 .../svelte5/DoubleCount.svelte | 6 ++++ .../{svelte => svelte4}/HelloWorld.svelte | 0 .../svelte5/HelloWorld.svelte} | 0 .../{svelte => svelte4}/CssStyle.svelte | 0 .../2-styling/svelte5/CssStyle.svelte | 8 +++++ .../3-loop/{svelte => svelte4}/Colors.svelte | 0 .../2-templating/3-loop/svelte5/Colors.svelte | 9 ++++++ .../{svelte => svelte4}/Counter.svelte | 0 .../4-event-click/svelte5/Counter.svelte | 10 +++++++ .../{svelte => svelte4}/InputFocused.svelte | 0 .../5-dom-ref/svelte5/InputFocused.svelte | 9 ++++++ .../{svelte => svelte4}/TrafficLight.svelte | 0 .../6-conditional/svelte5/TrafficLight.svelte | 23 +++++++++++++++ .../{svelte => svelte4}/PageTitle.svelte | 0 .../1-on-mount/svelte5/PageTitle.svelte | 8 +++++ .../{svelte => svelte4}/Time.svelte | 0 .../2-on-unmount/svelte5/Time.svelte | 13 +++++++++ .../1-props/{svelte => svelte4}/App.svelte | 0 .../{svelte => svelte4}/UserProfile.svelte | 0 .../1-props/svelte5/App.svelte | 10 +++++++ .../1-props/svelte5/UserProfile.svelte | 13 +++++++++ .../{svelte => svelte4}/AnswerButton.svelte | 0 .../{svelte => svelte4}/App.svelte | 0 .../svelte5/AnswerButton.svelte | 17 +++++++++++ .../2-emit-to-parent/svelte5/App.svelte | 17 +++++++++++ .../3-slot/{svelte => svelte4}/App.svelte | 0 .../{svelte => svelte4}/FunnyButton.svelte | 0 .../3-slot/svelte5/App.svelte | 5 ++++ .../3-slot/svelte5/FunnyButton.svelte | 5 ++++ .../{svelte => svelte4}/App.svelte | 0 .../{svelte => svelte4}/FunnyButton.svelte | 0 .../4-slot-fallback/svelte5/App.svelte | 6 ++++ .../svelte5/FunnyButton.svelte | 7 +++++ .../5-context/{svelte => svelte4}/App.svelte | 0 .../{svelte => svelte4}/UserProfile.svelte | 0 .../{svelte => svelte4}/createUserStore.js | 0 .../5-context/svelte5/App.svelte | 17 +++++++++++ .../5-context/svelte5/UserProfile.svelte | 14 +++++++++ .../5-context/svelte5/createUserState.js | 14 +++++++++ .../{svelte => svelte4}/InputHello.svelte | 0 .../1-input-text/svelte5/InputHello.svelte | 6 ++++ .../{svelte => svelte4}/IsAvailable.svelte | 0 .../2-checkbox/svelte5/IsAvailable.svelte | 6 ++++ .../{svelte => svelte4}/PickPill.svelte | 0 .../3-radio/svelte5/PickPill.svelte | 11 +++++++ .../{svelte => svelte4}/ColorSelect.svelte | 0 .../4-select/svelte5/ColorSelect.svelte | 18 ++++++++++++ .../1-render-app/svelte4/App.svelte | 1 + .../1-render-app/{svelte => svelte4}/app.js | 0 .../{svelte => svelte4}/index.html | 0 .../1-render-app/svelte5/App.svelte | 1 + .../1-render-app/svelte5/app.js | 7 +++++ .../1-render-app/svelte5/index.html | 7 +++++ .../{svelte => svelte4}/App.svelte | 0 .../{svelte => svelte4}/useFetchUsers.js | 0 .../2-fetch-data/svelte5/App.svelte | 23 +++++++++++++++ .../2-fetch-data/svelte5/useFetchUsers.js | 29 +++++++++++++++++++ .../{svelte => svelte4}/sveltekit.md | 0 .../3-router-link/svelte5/sveltekit.md | 12 ++++++++ .../{svelte => svelte4}/sveltekit.md | 0 .../4-routing/svelte5/sveltekit.md | 10 +++++++ frameworks.mjs | 22 ++++++++++++-- package.json | 3 +- src/App.svelte | 10 +++++-- 69 files changed, 381 insertions(+), 7 deletions(-) rename content/1-reactivity/1-declare-state/{svelte => svelte4}/Name.svelte (100%) create mode 100644 content/1-reactivity/1-declare-state/svelte5/Name.svelte rename content/1-reactivity/2-update-state/{svelte => svelte4}/Name.svelte (100%) create mode 100644 content/1-reactivity/2-update-state/svelte5/Name.svelte rename content/1-reactivity/3-computed-state/{svelte => svelte4}/DoubleCount.svelte (100%) create mode 100644 content/1-reactivity/3-computed-state/svelte5/DoubleCount.svelte rename content/2-templating/1-minimal-template/{svelte => svelte4}/HelloWorld.svelte (100%) rename content/{7-webapp-features/1-render-app/svelte/App.svelte => 2-templating/1-minimal-template/svelte5/HelloWorld.svelte} (100%) rename content/2-templating/2-styling/{svelte => svelte4}/CssStyle.svelte (100%) create mode 100644 content/2-templating/2-styling/svelte5/CssStyle.svelte rename content/2-templating/3-loop/{svelte => svelte4}/Colors.svelte (100%) create mode 100644 content/2-templating/3-loop/svelte5/Colors.svelte rename content/2-templating/4-event-click/{svelte => svelte4}/Counter.svelte (100%) create mode 100644 content/2-templating/4-event-click/svelte5/Counter.svelte rename content/2-templating/5-dom-ref/{svelte => svelte4}/InputFocused.svelte (100%) create mode 100644 content/2-templating/5-dom-ref/svelte5/InputFocused.svelte rename content/2-templating/6-conditional/{svelte => svelte4}/TrafficLight.svelte (100%) create mode 100644 content/2-templating/6-conditional/svelte5/TrafficLight.svelte rename content/3-lifecycle/1-on-mount/{svelte => svelte4}/PageTitle.svelte (100%) create mode 100644 content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte rename content/3-lifecycle/2-on-unmount/{svelte => svelte4}/Time.svelte (100%) create mode 100644 content/3-lifecycle/2-on-unmount/svelte5/Time.svelte rename content/4-component-composition/1-props/{svelte => svelte4}/App.svelte (100%) rename content/4-component-composition/1-props/{svelte => svelte4}/UserProfile.svelte (100%) create mode 100644 content/4-component-composition/1-props/svelte5/App.svelte create mode 100644 content/4-component-composition/1-props/svelte5/UserProfile.svelte rename content/4-component-composition/2-emit-to-parent/{svelte => svelte4}/AnswerButton.svelte (100%) rename content/4-component-composition/2-emit-to-parent/{svelte => svelte4}/App.svelte (100%) create mode 100644 content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte create mode 100644 content/4-component-composition/2-emit-to-parent/svelte5/App.svelte rename content/4-component-composition/3-slot/{svelte => svelte4}/App.svelte (100%) rename content/4-component-composition/3-slot/{svelte => svelte4}/FunnyButton.svelte (100%) create mode 100644 content/4-component-composition/3-slot/svelte5/App.svelte create mode 100644 content/4-component-composition/3-slot/svelte5/FunnyButton.svelte rename content/4-component-composition/4-slot-fallback/{svelte => svelte4}/App.svelte (100%) rename content/4-component-composition/4-slot-fallback/{svelte => svelte4}/FunnyButton.svelte (100%) create mode 100644 content/4-component-composition/4-slot-fallback/svelte5/App.svelte create mode 100644 content/4-component-composition/4-slot-fallback/svelte5/FunnyButton.svelte rename content/4-component-composition/5-context/{svelte => svelte4}/App.svelte (100%) rename content/4-component-composition/5-context/{svelte => svelte4}/UserProfile.svelte (100%) rename content/4-component-composition/5-context/{svelte => svelte4}/createUserStore.js (100%) create mode 100644 content/4-component-composition/5-context/svelte5/App.svelte create mode 100644 content/4-component-composition/5-context/svelte5/UserProfile.svelte create mode 100644 content/4-component-composition/5-context/svelte5/createUserState.js rename content/6-form-input/1-input-text/{svelte => svelte4}/InputHello.svelte (100%) create mode 100644 content/6-form-input/1-input-text/svelte5/InputHello.svelte rename content/6-form-input/2-checkbox/{svelte => svelte4}/IsAvailable.svelte (100%) create mode 100644 content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte rename content/6-form-input/3-radio/{svelte => svelte4}/PickPill.svelte (100%) create mode 100644 content/6-form-input/3-radio/svelte5/PickPill.svelte rename content/6-form-input/4-select/{svelte => svelte4}/ColorSelect.svelte (100%) create mode 100644 content/6-form-input/4-select/svelte5/ColorSelect.svelte create mode 100644 content/7-webapp-features/1-render-app/svelte4/App.svelte rename content/7-webapp-features/1-render-app/{svelte => svelte4}/app.js (100%) rename content/7-webapp-features/1-render-app/{svelte => svelte4}/index.html (100%) create mode 100644 content/7-webapp-features/1-render-app/svelte5/App.svelte create mode 100644 content/7-webapp-features/1-render-app/svelte5/app.js create mode 100644 content/7-webapp-features/1-render-app/svelte5/index.html rename content/7-webapp-features/2-fetch-data/{svelte => svelte4}/App.svelte (100%) rename content/7-webapp-features/2-fetch-data/{svelte => svelte4}/useFetchUsers.js (100%) create mode 100644 content/7-webapp-features/2-fetch-data/svelte5/App.svelte create mode 100644 content/7-webapp-features/2-fetch-data/svelte5/useFetchUsers.js rename content/7-webapp-features/3-router-link/{svelte => svelte4}/sveltekit.md (100%) create mode 100644 content/7-webapp-features/3-router-link/svelte5/sveltekit.md rename content/7-webapp-features/4-routing/{svelte => svelte4}/sveltekit.md (100%) create mode 100644 content/7-webapp-features/4-routing/svelte5/sveltekit.md diff --git a/content/1-reactivity/1-declare-state/svelte/Name.svelte b/content/1-reactivity/1-declare-state/svelte4/Name.svelte similarity index 100% rename from content/1-reactivity/1-declare-state/svelte/Name.svelte rename to content/1-reactivity/1-declare-state/svelte4/Name.svelte diff --git a/content/1-reactivity/1-declare-state/svelte5/Name.svelte b/content/1-reactivity/1-declare-state/svelte5/Name.svelte new file mode 100644 index 0000000..7f65226 --- /dev/null +++ b/content/1-reactivity/1-declare-state/svelte5/Name.svelte @@ -0,0 +1,5 @@ + + +
Counter: {count}
+ diff --git a/content/2-templating/5-dom-ref/svelte/InputFocused.svelte b/content/2-templating/5-dom-ref/svelte4/InputFocused.svelte similarity index 100% rename from content/2-templating/5-dom-ref/svelte/InputFocused.svelte rename to content/2-templating/5-dom-ref/svelte4/InputFocused.svelte diff --git a/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte b/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte new file mode 100644 index 0000000..f0ae463 --- /dev/null +++ b/content/2-templating/5-dom-ref/svelte5/InputFocused.svelte @@ -0,0 +1,9 @@ + + + diff --git a/content/2-templating/6-conditional/svelte/TrafficLight.svelte b/content/2-templating/6-conditional/svelte4/TrafficLight.svelte similarity index 100% rename from content/2-templating/6-conditional/svelte/TrafficLight.svelte rename to content/2-templating/6-conditional/svelte4/TrafficLight.svelte diff --git a/content/2-templating/6-conditional/svelte5/TrafficLight.svelte b/content/2-templating/6-conditional/svelte5/TrafficLight.svelte new file mode 100644 index 0000000..634d7d4 --- /dev/null +++ b/content/2-templating/6-conditional/svelte5/TrafficLight.svelte @@ -0,0 +1,23 @@ + + + +Light is: {light}
++ You must + {#if light === "red"} + STOP + {:else if light === "orange"} + SLOW DOWN + {:else if light === "green"} + GO + {/if} +
diff --git a/content/3-lifecycle/1-on-mount/svelte/PageTitle.svelte b/content/3-lifecycle/1-on-mount/svelte4/PageTitle.svelte similarity index 100% rename from content/3-lifecycle/1-on-mount/svelte/PageTitle.svelte rename to content/3-lifecycle/1-on-mount/svelte4/PageTitle.svelte diff --git a/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte b/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte new file mode 100644 index 0000000..7bf9eab --- /dev/null +++ b/content/3-lifecycle/1-on-mount/svelte5/PageTitle.svelte @@ -0,0 +1,8 @@ + + +Page title is: {pageTitle}
diff --git a/content/3-lifecycle/2-on-unmount/svelte/Time.svelte b/content/3-lifecycle/2-on-unmount/svelte4/Time.svelte similarity index 100% rename from content/3-lifecycle/2-on-unmount/svelte/Time.svelte rename to content/3-lifecycle/2-on-unmount/svelte4/Time.svelte diff --git a/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte b/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte new file mode 100644 index 0000000..15d303a --- /dev/null +++ b/content/3-lifecycle/2-on-unmount/svelte5/Time.svelte @@ -0,0 +1,13 @@ + + +Current time: {time}
diff --git a/content/4-component-composition/1-props/svelte/App.svelte b/content/4-component-composition/1-props/svelte4/App.svelte similarity index 100% rename from content/4-component-composition/1-props/svelte/App.svelte rename to content/4-component-composition/1-props/svelte4/App.svelte diff --git a/content/4-component-composition/1-props/svelte/UserProfile.svelte b/content/4-component-composition/1-props/svelte4/UserProfile.svelte similarity index 100% rename from content/4-component-composition/1-props/svelte/UserProfile.svelte rename to content/4-component-composition/1-props/svelte4/UserProfile.svelte diff --git a/content/4-component-composition/1-props/svelte5/App.svelte b/content/4-component-composition/1-props/svelte5/App.svelte new file mode 100644 index 0000000..4d39c2e --- /dev/null +++ b/content/4-component-composition/1-props/svelte5/App.svelte @@ -0,0 +1,10 @@ + + +My name is {name}!
+My age is {age}!
+My favourite colors are {favouriteColors.join(", ")}!
+I am {isAvailable ? "available" : "not available"}
diff --git a/content/4-component-composition/2-emit-to-parent/svelte/AnswerButton.svelte b/content/4-component-composition/2-emit-to-parent/svelte4/AnswerButton.svelte similarity index 100% rename from content/4-component-composition/2-emit-to-parent/svelte/AnswerButton.svelte rename to content/4-component-composition/2-emit-to-parent/svelte4/AnswerButton.svelte diff --git a/content/4-component-composition/2-emit-to-parent/svelte/App.svelte b/content/4-component-composition/2-emit-to-parent/svelte4/App.svelte similarity index 100% rename from content/4-component-composition/2-emit-to-parent/svelte/App.svelte rename to content/4-component-composition/2-emit-to-parent/svelte4/App.svelte diff --git a/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte b/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte new file mode 100644 index 0000000..97630c6 --- /dev/null +++ b/content/4-component-composition/2-emit-to-parent/svelte5/AnswerButton.svelte @@ -0,0 +1,17 @@ + + + + + diff --git a/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte b/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte new file mode 100644 index 0000000..a535059 --- /dev/null +++ b/content/4-component-composition/2-emit-to-parent/svelte5/App.svelte @@ -0,0 +1,17 @@ + + +Are you happy?
+{isHappy ? "😀" : "😥"}
diff --git a/content/4-component-composition/3-slot/svelte/App.svelte b/content/4-component-composition/3-slot/svelte4/App.svelte similarity index 100% rename from content/4-component-composition/3-slot/svelte/App.svelte rename to content/4-component-composition/3-slot/svelte4/App.svelte diff --git a/content/4-component-composition/3-slot/svelte/FunnyButton.svelte b/content/4-component-composition/3-slot/svelte4/FunnyButton.svelte similarity index 100% rename from content/4-component-composition/3-slot/svelte/FunnyButton.svelte rename to content/4-component-composition/3-slot/svelte4/FunnyButton.svelte diff --git a/content/4-component-composition/3-slot/svelte5/App.svelte b/content/4-component-composition/3-slot/svelte5/App.svelte new file mode 100644 index 0000000..483f27f --- /dev/null +++ b/content/4-component-composition/3-slot/svelte5/App.svelte @@ -0,0 +1,5 @@ + + +Username: {user.value.username}
+Email: {user.value.email}
+ +{text}
+ diff --git a/content/6-form-input/2-checkbox/svelte/IsAvailable.svelte b/content/6-form-input/2-checkbox/svelte4/IsAvailable.svelte similarity index 100% rename from content/6-form-input/2-checkbox/svelte/IsAvailable.svelte rename to content/6-form-input/2-checkbox/svelte4/IsAvailable.svelte diff --git a/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte b/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte new file mode 100644 index 0000000..82678ea --- /dev/null +++ b/content/6-form-input/2-checkbox/svelte5/IsAvailable.svelte @@ -0,0 +1,6 @@ + + + + diff --git a/content/6-form-input/3-radio/svelte/PickPill.svelte b/content/6-form-input/3-radio/svelte4/PickPill.svelte similarity index 100% rename from content/6-form-input/3-radio/svelte/PickPill.svelte rename to content/6-form-input/3-radio/svelte4/PickPill.svelte diff --git a/content/6-form-input/3-radio/svelte5/PickPill.svelte b/content/6-form-input/3-radio/svelte5/PickPill.svelte new file mode 100644 index 0000000..c206a98 --- /dev/null +++ b/content/6-form-input/3-radio/svelte5/PickPill.svelte @@ -0,0 +1,11 @@ + + +Fetching users...
+{:else if response.error} +An error occured while fetching users
+{:else if response.users} ++ {user.name.first} + {user.name.last} +
+