Suspense,
Teleport,
createStaticVNode,
+ defineCustomElement,
h,
nextTick,
reactive,
expect((c as HTMLElement).style.getPropertyValue(`--color`)).toBe('red')
}
})
+
+ // #8826
+ test('with custom element', async () => {
+ const state = reactive({ color: 'red' })
+ const container = document.createElement('div')
+ const App = defineCustomElement({
+ styles: [`div { color: red; }`],
+ setup() {
+ useCssVars(() => state)
+ return () => {
+ return h('div', 'hello')
+ }
+ },
+ })
+ customElements.define('css-vars-ce', App)
+ container.innerHTML = `<css-vars-ce></css-vars-ce>`
+ document.body.appendChild(container)
+ await nextTick()
+ expect(container.innerHTML).toBe(
+ `<css-vars-ce style="--color: red;"></css-vars-ce>`,
+ )
+ })
})
const setVars = () => {
const vars = getter(instance.proxy)
- setVarsOnVNode(instance.subTree, vars)
+ if (instance.ce) {
+ setVarsOnNode(instance.ce as any, vars)
+ } else {
+ setVarsOnVNode(instance.subTree, vars)
+ }
updateTeleports(vars)
}