File tree Expand file tree Collapse file tree 14 files changed +271
-0
lines changed
packages/svelte/tests/runtime-runes/samples Expand file tree Collapse file tree 14 files changed +271
-0
lines changed Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync , tick } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+ await tick ( ) ;
11+
12+ const text = target . textContent ?. trim ( ) ?? '' ;
13+ if ( ! text . endsWith ( 'trigger' ) ) {
14+ throw new Error ( `unexpected text: ${ text } ` ) ;
15+ }
16+ }
17+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let value = $state ({ nested: { depth: 2 } });
3+ let trigger = $state (false );
4+
5+ $effect (() => {
6+ if (trigger) value = null ;
7+ });
8+
9+ function load () {
10+ return Promise .resolve (value);
11+ }
12+ </script >
13+
14+ {#await load () then result }
15+ {#if result ?.nested ?.depth > 1 }
16+ ok
17+ {:else }
18+ low
19+ {/if }
20+ {:catch }
21+ error
22+ {/await }
23+
24+ <button onclick ={() => (trigger = true )}>trigger</button >
Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+
11+ const text = target . textContent ?. trim ( ) ?? '' ;
12+ if ( ! text . endsWith ( 'toggle' ) ) {
13+ throw new Error ( `unexpected text: ${ text } ` ) ;
14+ }
15+ }
16+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let items = $state ([
3+ { nested: { value: 1 } },
4+ { nested: { value: 2 } }
5+ ]);
6+ let show = $state (true );
7+
8+ let first = $derived (items[0 ]);
9+
10+ $effect (() => {
11+ if (! show) {
12+ items = [];
13+ }
14+ });
15+ </script >
16+
17+ {#if first ?.nested ?.value > 1 }
18+ big
19+ {:else }
20+ small
21+ {/if }
22+
23+ <button onclick ={() => (show = false )}>toggle</button >
Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+
11+ const text = target . textContent ?. trim ( ) ?? '' ;
12+ if ( ! text . endsWith ( 'advance' ) ) {
13+ throw new Error ( `unexpected text: ${ text } ` ) ;
14+ }
15+ }
16+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let rows = $state ([
3+ { nested: { depth: 1 } },
4+ { nested: { depth: 3 } }
5+ ]);
6+ let ptr = $state (0 );
7+
8+ let current = $derived (rows[ptr]);
9+ let nested = $derived (current? .nested );
10+
11+ $effect (() => {
12+ if (ptr === 1 ) {
13+ rows = [];
14+ }
15+ });
16+ < / script>
17+
18+ {#if nested? .depth > 2 }
19+ deep
20+ {: else }
21+ shallow
22+ {/ if }
23+
24+ < button onclick= {() => (ptr = 1 )}> advance< / button>
Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+
11+ const text = target . textContent ?. trim ( ) ?? '' ;
12+ if ( ! text . endsWith ( 'clear' ) ) {
13+ throw new Error ( `unexpected text: ${ text } ` ) ;
14+ }
15+ }
16+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let items = $state ([
3+ { nested: { ok: true } },
4+ { nested: { ok: false } }
5+ ]);
6+ let clear = $state (false );
7+
8+ $effect (() => {
9+ if (clear) items = [];
10+ });
11+ </script >
12+
13+ {#each items as item (item .nested )}
14+ {#if item ?.nested ?.ok }
15+ ok
16+ {:else }
17+ fail
18+ {/if }
19+ {/each }
20+
21+ <button onclick ={() => (clear = true )}>clear</button >
Original file line number Diff line number Diff line change 1+ import { test } from '../../test' ;
2+ import { flushSync } from 'svelte' ;
3+
4+ export default test ( {
5+ mode : [ 'client' ] ,
6+ async test ( { target } ) {
7+ const button = target . querySelector ( 'button' ) ;
8+
9+ flushSync ( ( ) => button ?. click ( ) ) ;
10+
11+ const text = target . textContent ?. trim ( ) ?? '' ;
12+ if ( ! text . endsWith ( 'switch' ) ) {
13+ throw new Error ( `unexpected text: ${ text } ` ) ;
14+ }
15+ }
16+ } ) ;
Original file line number Diff line number Diff line change 1+ <script >
2+ let centerRows = $state ([
3+ { depth: 0 , nested: { optional: 1 } },
4+ { depth: 2 , nested: { optional: 3 } }
5+ ]);
6+ let index = $state (0 );
7+
8+ let centerRow = $derived (centerRows[index]);
9+
10+ $effect (() => {
11+ if (index) {
12+ centerRows = [];
13+ }
14+ });
15+ </script >
16+
17+ {#if centerRow ?.nested ?.optional > 2 }
18+ A
19+ {:else if centerRow ?.nested ?.optional > 1 }
20+ B
21+ {:else }
22+ C
23+ {/if }
24+
25+ <button onclick ={() => (index = 1 )}>switch</button >
You can’t perform that action at this time.
0 commit comments