Skip to content

Commit 863eff9

Browse files
authored
Merge pull request #2199 from sveltejs/examples
Examples
2 parents 0e4be42 + 71da0be commit 863eff9

File tree

416 files changed

+4408
-1591
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

416 files changed

+4408
-1591
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
let name = 'world';
3+
</script>
4+
5+
<h1>Hello {name}!</h1>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Adding data"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script>
2+
let src = 'tutorial/image.gif';
3+
let name = 'Rick Astley';
4+
</script>
5+
6+
<!-- {src} is short for src={src} -->
7+
<img {src} alt="{name} dancing">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Dynamic attributes"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<style>
2+
p {
3+
color: purple;
4+
font-family: 'Comic Sans MS';
5+
font-size: 2em;
6+
}
7+
</style>
8+
9+
<p>Styled!</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Styling"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script>
2+
import Nested from './Nested.svelte';
3+
</script>
4+
5+
<style>
6+
p {
7+
color: purple;
8+
font-family: 'Comic Sans MS';
9+
font-size: 2em;
10+
}
11+
</style>
12+
13+
<p>These styles...</p>
14+
<Nested/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p>...don't affect this element</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Nested components"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
let string = `here's some <strong>HTML!!!</strong>`;
3+
</script>
4+
5+
<p>{@html string}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "HTML tags"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Introduction"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script>
2+
let count = 0;
3+
4+
function handleClick() {
5+
count += 1;
6+
}
7+
</script>
8+
9+
<button on:click={handleClick}>
10+
Clicked {count} {count === 1 ? 'time' : 'times'}
11+
</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Reactive assignments"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<script>
2+
let count = 1;
3+
4+
// the `$:` means 're-run whenever these values change'
5+
$: doubled = count * 2;
6+
$: quadrupled = doubled * 2;
7+
8+
function handleClick() {
9+
count += 1;
10+
}
11+
</script>
12+
13+
<button on:click={handleClick}>
14+
Count: {count}
15+
</button>
16+
17+
<p>{count} * 2 = {doubled}</p>
18+
<p>{doubled} * 2 = {quadrupled}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Reactive declarations"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<script>
2+
let count = 0;
3+
4+
$: if (count >= 10) {
5+
alert(`count is dangerously high!`);
6+
count = 9;
7+
}
8+
9+
function handleClick() {
10+
count += 1;
11+
}
12+
</script>
13+
14+
<button on:click={handleClick}>
15+
Clicked {count} {count === 1 ? 'time' : 'times'}
16+
</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Reactive statements"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Reactivity"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
import Nested from './Nested.svelte';
3+
</script>
4+
5+
<Nested answer={42}/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
export let answer;
3+
</script>
4+
5+
<p>The answer is {answer}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Declaring props"
3+
}

site/content/examples/nested-components/App.svelte renamed to site/content/examples/02-props/01-default-values/App.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
import Nested from './Nested.svelte';
33
</script>
44

5-
<p>This is a top-level element.</p>
5+
<Nested answer={42}/>
66
<Nested/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
export let answer = 'a mystery';
3+
</script>
4+
5+
<p>The answer is {answer}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Default values"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<script>
2+
import Info from './Info.svelte';
3+
4+
const pkg = {
5+
name: 'svelte',
6+
version: 3,
7+
speed: 'blazing',
8+
website: 'https://svelte.technology'
9+
};
10+
</script>
11+
12+
<Info {...pkg}/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<script>
2+
export let name;
3+
export let version;
4+
export let speed;
5+
export let website;
6+
</script>
7+
8+
<p>
9+
The <code>{name}</code> package is {speed} fast.
10+
Download version {version} from <a href="https://www.npmjs.com/package/{name}">npm</a>
11+
and <a href={website}>learn more here</a>
12+
</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Spread props"
3+
}
+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Props"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<script>
2+
let user = { loggedIn: false };
3+
4+
function toggle() {
5+
user.loggedIn = !user.loggedIn;
6+
}
7+
</script>
8+
9+
{#if user.loggedIn}
10+
<button on:click={toggle}>
11+
Log out
12+
</button>
13+
{/if}
14+
15+
{#if !user.loggedIn}
16+
<button on:click={toggle}>
17+
Log in
18+
</button>
19+
{/if}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "If blocks"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<script>
2+
let user = { loggedIn: false };
3+
4+
function toggle() {
5+
user.loggedIn = !user.loggedIn;
6+
}
7+
</script>
8+
9+
{#if user.loggedIn}
10+
<button on:click={toggle}>
11+
Log out
12+
</button>
13+
{:else}
14+
<button on:click={toggle}>
15+
Log in
16+
</button>
17+
{/if}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Else blocks"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script>
2+
let x = 7;
3+
</script>
4+
5+
{#if x > 10}
6+
<p>{x} is greater than 10</p>
7+
{:else if 5 > x}
8+
<p>{x} is less than 5</p>
9+
{:else}
10+
<p>{x} is between 5 and 10</p>
11+
{/if}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Else-if blocks"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<script>
2+
let cats = [
3+
{ id: 'J---aiyznGQ', name: 'Keyboard Cat' },
4+
{ id: 'z_AbfPXTKms', name: 'Maru' },
5+
{ id: 'OUtn3pvWmpg', name: 'Henri The Existential Cat' }
6+
];
7+
</script>
8+
9+
<h1>The Famous Cats of YouTube</h1>
10+
11+
<ul>
12+
{#each cats as { id, name }, i}
13+
<li><a target="_blank" href="https://www.youtube.com/watch?v={id}">
14+
{i + 1}: {name}
15+
</a></li>
16+
{/each}
17+
</ul>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Each blocks"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<script>
2+
import Thing from './Thing.svelte';
3+
4+
let things = [
5+
{ id: 1, value: 'a' },
6+
{ id: 2, value: 'b' },
7+
{ id: 3, value: 'c' },
8+
{ id: 4, value: 'd' },
9+
{ id: 5, value: 'e' }
10+
];
11+
12+
function handleClick() {
13+
things = things.slice(1);
14+
}
15+
</script>
16+
17+
<button on:click={handleClick}>
18+
Remove first thing
19+
</button>
20+
21+
{#each things as thing (thing.id)}
22+
<Thing value={thing.value}/>
23+
{/each}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script>
2+
// `value` is updated whenever the prop value changes...
3+
export let value;
4+
5+
// ...but `valueAtStart` is fixed upon initialisation
6+
const valueAtStart = value;
7+
</script>
8+
9+
<p>{valueAtStart} / {value}</p>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"title": "Keyed each blocks"
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<script>
2+
let promise = getRandomNumber();
3+
4+
async function getRandomNumber() {
5+
const res = await fetch(`tutorial/random-number`);
6+
const text = await res.text();
7+
8+
if (res.ok) {
9+
return text;
10+
} else {
11+
throw new Error(text);
12+
}
13+
}
14+
15+
function handleClick() {
16+
promise = getRandomNumber();
17+
}
18+
</script>
19+
20+
<button on:click={handleClick}>
21+
generate random number
22+
</button>
23+
24+
{#await promise}
25+
<p>...waiting</p>
26+
{:then number}
27+
<p>The number is {number}</p>
28+
{:catch error}
29+
<p style="color: red">{error.message}</p>
30+
{/await}

0 commit comments

Comments
 (0)