Skip to content

Commit 5c889f0

Browse files
Merge pull request #75 from stevenle/shadowroot-closed
2 parents 8f5264a + 595903f commit 5c889f0

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export default function register(Component, tagName, propNames, options) {
55
const inst = Reflect.construct(HTMLElement, [], PreactElement);
66
inst._vdomComponent = Component;
77
inst._root =
8-
options && options.shadow ? inst.attachShadow({ mode: 'open' }) : inst;
8+
options && options.shadow ? inst.attachShadow({ mode: options.mode || 'open' }) : inst;
99
return inst;
1010
}
1111
PreactElement.prototype = Object.create(HTMLElement.prototype);

src/index.test.jsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,38 @@ describe('web components', () => {
245245
});
246246
assert.equal(getShadowHTML(), '<p>Active theme: sunny</p>');
247247
});
248+
249+
it('renders element in shadow dom open mode', async () => {
250+
function ShadowDomOpen() {
251+
return <div className="shadow-child">Shadow DOM Open</div>;
252+
}
253+
254+
registerElement(ShadowDomOpen, 'x-shadowdom-open', [], {
255+
shadow: true,
256+
mode: 'open',
257+
});
258+
259+
const el = document.createElement('x-shadowdom-open');
260+
root.appendChild(el);
261+
const shadowRoot = el.shadowRoot;
262+
assert.isTrue(!!shadowRoot);
263+
const child = shadowRoot.querySelector('.shadow-child');
264+
assert.isTrue(!!child);
265+
assert.equal(child.textContent, 'Shadow DOM Open');
266+
});
267+
268+
it('renders element in shadow dom closed mode', async () => {
269+
function ShadowDomClosed() {
270+
return <div className="shadow-child">Shadow DOM Closed</div>;
271+
}
272+
273+
registerElement(ShadowDomClosed, 'x-shadowdom-closed', [], {
274+
shadow: true,
275+
mode: 'closed',
276+
});
277+
278+
const el = document.createElement('x-shadowdom-closed');
279+
root.appendChild(el);
280+
assert.isTrue(el.shadowRoot === null);
281+
});
248282
});

0 commit comments

Comments
 (0)