File tree Expand file tree Collapse file tree 2 files changed +56
-0
lines changed
packages/svelte/tests/runtime-browser/custom-elements-samples/element-effect-context Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { test } from '../../assert' ;
2
+ const tick = ( ) => Promise . resolve ( ) ;
3
+
4
+ export default test ( {
5
+ async test ( { assert, target } ) {
6
+ target . innerHTML = '<my-app/>' ;
7
+ await tick ( ) ;
8
+ await tick ( ) ;
9
+
10
+ /** @type {any } */
11
+ const el = target . querySelector ( 'my-app' ) ;
12
+ const button = el . shadowRoot . querySelector ( 'button' ) ;
13
+ const p = el . shadowRoot . querySelector ( 'my-tracking' ) . shadowRoot . querySelector ( 'p' ) ;
14
+
15
+ assert . equal ( button . innerHTML , '0' ) ;
16
+ assert . equal ( p . innerHTML , 'false' ) ;
17
+
18
+ button . click ( ) ;
19
+ await tick ( ) ;
20
+
21
+ assert . equal ( button . innerHTML , '1' ) ;
22
+ assert . equal ( p . innerHTML , 'false' ) ;
23
+ }
24
+ } ) ;
Original file line number Diff line number Diff line change
1
+ <svelte:options customElement =" my-app" />
2
+
3
+ <script module >
4
+ class Tracking extends HTMLElement {
5
+ static observedAttributes = [" count" ];
6
+ tracking = false ;
7
+
8
+ set count (_ ) {
9
+ this .tracking = $effect .tracking ();
10
+ this .render ();
11
+ }
12
+
13
+ constructor () {
14
+ super ();
15
+ this .attachShadow ({ mode: ' open' });tracking
16
+ }
17
+
18
+ render () {
19
+ this .shadowRoot .innerHTML = ` <p >${ this .tracking } </p >` ;
20
+ }
21
+ }
22
+
23
+ customElements .define (" my-tracking" , Tracking);
24
+ </script >
25
+
26
+ <script >
27
+ import " ./Counter.svelte" ;
28
+ let count = $state (0 );
29
+ </script >
30
+
31
+ <button onclick ={() => (count += 1 )}>{count }</button >
32
+ <my-tracking {count }></my-tracking >
You can’t perform that action at this time.
0 commit comments