Skip to content

Commit 9c3e66e

Browse files
committed
Fix for #12 (take 2): Ensure original named slot tags are retained when not using shadow root. Take 2 required to account for new unit testing framework (Vitest) from PR #13.
1 parent fede9bc commit 9c3e66e

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

index.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ function createSlots(slots) {
1616
return {
1717
c: noop,
1818
m: function mount(target, anchor) {
19-
insert(target, element.cloneNode(true), anchor);
19+
insert(target, element.cloneNode(true), anchor);
2020
},
21-
d: function destroy(detaching) {
22-
if (detaching && element.innerHTML){
21+
d: function destroy(detaching) {
22+
if (detaching && element.innerHTML){
2323
detach(element);
24-
}
24+
}
2525
},
2626
l: noop,
2727
};
@@ -42,7 +42,7 @@ export default function(opts){
4242
let link = document.createElement('link');
4343
link.setAttribute("href",opts.href)
4444
link.setAttribute("rel","stylesheet")
45-
root.appendChild(link);
45+
root.appendChild(link);
4646
}
4747
if(opts.shadow){
4848
this._root = document.createElement('div')
@@ -82,7 +82,7 @@ export default function(opts){
8282
}
8383
try{ this.elem.$destroy()}catch(err){} // detroy svelte element when removed from dom
8484
}
85-
85+
8686
unwrap(from){
8787
let node = document.createDocumentFragment();
8888
while (from.firstChild) {
@@ -95,7 +95,7 @@ export default function(opts){
9595
const namedSlots = this.querySelectorAll('[slot]')
9696
let slots = {}
9797
namedSlots.forEach(n=>{
98-
slots[n.slot] = this.unwrap(n)
98+
slots[n.slot] = n
9999
this.removeChild(n)
100100
})
101101
if(this.innerHTML.length){
@@ -144,6 +144,6 @@ export default function(opts){
144144
this.elem.$set({[name]:newValue})
145145
}
146146
}
147-
}
147+
}
148148
window.customElements.define(opts.tagname, Wrapper);
149149
}

tests/TestTag.test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,21 @@ describe('Component Wrapper shadow false', () => {
3535
el = document.createElement('div')
3636
el.innerHTML = `<test-tag><div slot="inner">HERE</div></test-tag>`
3737
document.body.appendChild(el)
38-
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content">Main Default <div>HERE</div></div><!--<TestTag>--></test-tag>')
38+
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content">Main Default <div><div slot="inner">HERE</div></div></div><!--<TestTag>--></test-tag>')
3939
})
4040

4141
it('both slots', () => {
4242
el = document.createElement('div')
4343
el.innerHTML = `<test-tag>BOOM!<div slot="inner">HERE</div></test-tag>`
4444
document.body.appendChild(el)
45-
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content">BOOM! <div>HERE</div></div><!--<TestTag>--></test-tag>')
45+
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content">BOOM! <div><div slot="inner">HERE</div></div></div><!--<TestTag>--></test-tag>')
4646
})
4747

4848
it('nested tags', () => {
4949
el = document.createElement('div')
5050
el.innerHTML = `<test-tag><h2>Nested</h2><div slot="inner">HERE</div></test-tag>`
5151
document.body.appendChild(el)
52-
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content"><h2>Nested</h2> <div>HERE</div></div><!--<TestTag>--></test-tag>')
52+
expect(el.innerHTML).toBe('<test-tag><h1>Main H1</h1> <div class="content"><h2>Nested</h2> <div><div slot="inner">HERE</div></div></div><!--<TestTag>--></test-tag>')
5353
})
5454

5555
it('Unknown slot gets ignored', () => {

0 commit comments

Comments
 (0)