await nextTick()
assertStyles(el, [`div { color: blue; }`, `div { color: red; }`])
})
+
+ test('with nonce', () => {
+ const Foo = defineCustomElement(
+ {
+ styles: [`div { color: red; }`],
+ render() {
+ return h('div', 'hello')
+ },
+ },
+ { nonce: 'xxx' },
+ )
+ customElements.define('my-el-with-nonce', Foo)
+ container.innerHTML = `<my-el-with-nonce></my-el-with-nonce>`
+ const el = container.childNodes[0] as VueElement
+ const style = el.shadowRoot?.querySelector('style')!
+ expect(style.getAttribute('nonce')).toBe('xxx')
+ })
})
describe('async', () => {
export interface CustomElementOptions {
styles?: string[]
shadowRoot?: boolean
+ nonce?: string
}
// defineCustomElement provides the same type inference as defineComponent
}
this._styleChildren.add(owner)
}
+ const nonce = this._def.nonce
for (let i = styles.length - 1; i >= 0; i--) {
const s = document.createElement('style')
+ if (nonce) s.setAttribute('nonce', nonce)
s.textContent = styles[i]
this.shadowRoot!.prepend(s)
// record for HMR