Merge pull request #6 from tonn/patch-1

Fix injection in case if there is no style-element
This commit is contained in:
Adam LaCombe 2020-06-11 23:10:26 +08:00 committed by GitHub
commit a4cf9d9c33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,19 +1,13 @@
export function injectStyles(
shadowRootElement: HTMLElement,
insertBeforeSelector: string,
styles: string
) {
export function injectStyles(shadowRootElement: HTMLElement, insertBeforeSelector: string, styles: string) {
const root = shadowRootElement.shadowRoot;
let styleAlreadyAdded = false;
const currentStyleTags = Array.from(root.querySelectorAll('style'));
currentStyleTags.forEach((element: HTMLStyleElement, index) => {
if (element.innerHTML === styles) {
styleAlreadyAdded = true;
}
if (currentStyleTags.length - 1 === index && styleAlreadyAdded === false) {
if (root !== null) {
const styleElements = root.querySelectorAll('style');
if (!Array.from(styleElements).some(el => el.innerHTML === styles)) {
const newStyleTag = document.createElement('style');
newStyleTag.innerHTML = styles;
root.insertBefore(newStyleTag, root.querySelector(insertBeforeSelector));
}
});
}
}