Skip to content

Commit

Permalink
fix(customElementDependencyStyles): Recursively add styles from impor…
Browse files Browse the repository at this point in the history
…ted components. Missing feature, store available styles to avoid dupes. close vuejs#4662
  • Loading branch information
raffobaffo committed Sep 28, 2021
1 parent 2de24dd commit dd13620
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
3 changes: 3 additions & 0 deletions packages/runtime-dom/__tests__/customElement.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -354,8 +354,11 @@ describe('defineCustomElement', () => {
container.innerHTML = `<my-el-with-nested-styles></my-el-with-nested-styles>`
const el = container.childNodes[0] as VueElement
const style = el.shadowRoot?.querySelectorAll('style')!

expect(style.length).toBe(3)
expect(style[0].textContent).toBe(`.green-color { color: green; }`)
expect(style[1].textContent).toBe(`.blue-back { color: blue; }`)
expect(style[2].textContent).toBe(`div { color: red; }`)
})
})

Expand Down
3 changes: 2 additions & 1 deletion packages/runtime-dom/src/apiCustomElement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,7 @@ export class VueElement extends BaseClass {
...this._getChildrenComponentsStyles(nestedComponent)
]
}
// Should have a method that adds styles only if not existing
return nestedComponent.styles
? [...aggregatedStyles, ...nestedComponent.styles]
: aggregatedStyles
Expand All @@ -404,6 +405,6 @@ export class VueElement extends BaseClass {
componentStyles.push(...component.styles)
}

return componentStyles
return [...new Set(componentStyles)]
}
}

0 comments on commit dd13620

Please sign in to comment.