MOBILE-3607 Site plugins: CSS should be included in reliable order

main
sam marshall 2020-11-26 10:45:40 +00:00
parent 97511e3463
commit 098c7a1152
1 changed files with 15 additions and 1 deletions

View File

@ -439,7 +439,21 @@ export class CoreSitePluginsHelperProvider {
styleEl.setAttribute('id', 'siteplugin-' + uniqueName); styleEl.setAttribute('id', 'siteplugin-' + uniqueName);
styleEl.innerHTML = cssCode; styleEl.innerHTML = cssCode;
document.head.appendChild(styleEl); // To ensure consistency, insert in alphabetical order among other site plugin styles.
let lowestGreater = null;
Array.from(document.head.querySelectorAll('style')).forEach((other) => {
if (/^siteplugin-/.test(other.id) && other.id > styleEl.id) {
if (lowestGreater === null || other.id < lowestGreater.id) {
lowestGreater = other;
}
}
});
if (lowestGreater) {
document.head.insertBefore(styleEl, lowestGreater);
} else {
document.head.appendChild(styleEl);
}
// Styles have been loaded, now treat the CSS. // Styles have been loaded, now treat the CSS.
this.filepoolProvider.treatCSSCode(siteId, fileUrl, cssCode, CoreSitePluginsProvider.COMPONENT, uniqueName, version) this.filepoolProvider.treatCSSCode(siteId, fileUrl, cssCode, CoreSitePluginsProvider.COMPONENT, uniqueName, version)