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

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));
}
});
}
}