diff --git a/lib/mixins/element-mixin.html b/lib/mixins/element-mixin.html index 419209b624..2b51ac2bfe 100644 --- a/lib/mixins/element-mixin.html +++ b/lib/mixins/element-mixin.html @@ -417,18 +417,18 @@ function processElementStyles(klass, template, is, baseURI) { const styles = Polymer.StyleGather.stylesFromModuleImports(is).concat( Polymer.StyleGather.stylesFromTemplate(template)); - const templateStyles = Array.from(template.content.querySelectorAll('style')); + const templateStyles = template.content.querySelectorAll('style'); // keep track of the last "concrete" style in the template we have encountered let templateStyleIndex = 0; // ensure all gathered styles are actually in this template. for (let i=0; i < styles.length; i++) { let s = styles[i]; + let templateStyle = templateStyles[templateStyleIndex]; // if the style is not in this template, it's been "included" and // we put a clone of it in the template before the style that included it - if (templateStyles.indexOf(s) === -1) { + if (templateStyle !== s) { s = s.cloneNode(true); - let importingTemplateStyle = templateStyles[templateStyleIndex]; - importingTemplateStyle.parentNode.insertBefore(s, importingTemplateStyle); + templateStyle.parentNode.insertBefore(s, templateStyle); } else { templateStyleIndex++; } diff --git a/test/unit/styling-scoped.html b/test/unit/styling-scoped.html index 7859aa5444..3eb3bf0996 100644 --- a/test/unit/styling-scoped.html +++ b/test/unit/styling-scoped.html @@ -660,10 +660,20 @@ + + + +