mirror of https://github.com/sveltejs/svelte
use props when passing data to custom elements (#875)
parent
53d43b7d10
commit
cce3a30ef2
@ -0,0 +1,15 @@
|
|||||||
|
<my-widget class="foo" {items}/>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import './my-widget.html';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
tag: 'custom-element',
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
items: ['a', 'b', 'c']
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,9 @@
|
|||||||
|
<p>{(items || []).length} items</p>
|
||||||
|
<p>{(items || []).join(', ')}</p>
|
||||||
|
<p>{JSON.stringify(items)}</p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
tag: 'my-widget'
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,23 @@
|
|||||||
|
import * as assert from 'assert';
|
||||||
|
import CustomElement from './main.html';
|
||||||
|
|
||||||
|
export default function (target) {
|
||||||
|
new CustomElement({
|
||||||
|
target
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(target.innerHTML, '<custom-element></custom-element>');
|
||||||
|
|
||||||
|
const el = target.querySelector('custom-element');
|
||||||
|
const widget = el.shadowRoot.querySelector('my-widget');
|
||||||
|
|
||||||
|
const [p1, p2] = widget.shadowRoot.querySelectorAll('p');
|
||||||
|
|
||||||
|
assert.equal(p1.textContent, '3 items');
|
||||||
|
assert.equal(p2.textContent, 'a, b, c');
|
||||||
|
|
||||||
|
el.items = ['d', 'e', 'f', 'g', 'h'];
|
||||||
|
|
||||||
|
assert.equal(p1.textContent, '5 items');
|
||||||
|
assert.equal(p2.textContent, 'd, e, f, g, h');
|
||||||
|
}
|
Loading…
Reference in new issue