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