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