Fix injection in case if there is no style-element

This commit is contained in:
Anton Novikov 2020-06-05 01:13:03 +04:00 committed by GitHub
parent ab751443b4
commit 04bacdf39a
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));
}
});
}
}