}
const { mount } = app
- app.mount = (containerOrSelector: Element | string): any => {
+ app.mount = (containerOrSelector: Element | ShadowRoot | string): any => {
const container = normalizeContainer(containerOrSelector)
if (!container) return
const component = app._component
// clear content before mounting
container.innerHTML = ''
const proxy = mount(container)
- container.removeAttribute('v-cloak')
- container.setAttribute('data-v-app', '')
+ if (container instanceof Element) {
+ container.removeAttribute('v-cloak')
+ container.setAttribute('data-v-app', '')
+ }
return proxy
}
}
const { mount } = app
- app.mount = (containerOrSelector: Element | string): any => {
+ app.mount = (containerOrSelector: Element | ShadowRoot | string): any => {
const container = normalizeContainer(containerOrSelector)
if (container) {
return mount(container, true)
})
}
-function normalizeContainer(container: Element | string): Element | null {
+function normalizeContainer(
+ container: Element | ShadowRoot | string
+): Element | null {
if (isString(container)) {
const res = document.querySelector(container)
if (__DEV__ && !res) {
}
return res
}
- return container
+ if (
+ __DEV__ &&
+ container instanceof ShadowRoot &&
+ container.mode === 'closed'
+ ) {
+ warn(
+ `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`
+ )
+ }
+ return container as any
}
// SFC CSS utilities