Skip to content

Commit ecfe51b

Browse files
committed
test
1 parent 46950e8 commit ecfe51b

File tree

2 files changed

+56
-0
lines changed
  • packages/svelte/tests/runtime-browser/custom-elements-samples/element-effect-context

2 files changed

+56
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
});
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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>

0 commit comments

Comments
 (0)