@@ -58,7 +58,7 @@ export const createApp = ((...args) => {
58
58
}
59
59
60
60
const { mount } = app
61
- app . mount = ( containerOrSelector : Element | string ) : any => {
61
+ app . mount = ( containerOrSelector : Element | ShadowRoot | string ) : any => {
62
62
const container = normalizeContainer ( containerOrSelector )
63
63
if ( ! container ) return
64
64
const component = app . _component
@@ -68,8 +68,10 @@ export const createApp = ((...args) => {
68
68
// clear content before mounting
69
69
container . innerHTML = ''
70
70
const proxy = mount ( container )
71
- container . removeAttribute ( 'v-cloak' )
72
- container . setAttribute ( 'data-v-app' , '' )
71
+ if ( container instanceof Element ) {
72
+ container . removeAttribute ( 'v-cloak' )
73
+ container . setAttribute ( 'data-v-app' , '' )
74
+ }
73
75
return proxy
74
76
}
75
77
@@ -84,7 +86,7 @@ export const createSSRApp = ((...args) => {
84
86
}
85
87
86
88
const { mount } = app
87
- app . mount = ( containerOrSelector : Element | string ) : any => {
89
+ app . mount = ( containerOrSelector : Element | ShadowRoot | string ) : any => {
88
90
const container = normalizeContainer ( containerOrSelector )
89
91
if ( container ) {
90
92
return mount ( container , true )
@@ -103,15 +105,26 @@ function injectNativeTagCheck(app: App) {
103
105
} )
104
106
}
105
107
106
- function normalizeContainer ( container : Element | string ) : Element | null {
108
+ function normalizeContainer (
109
+ container : Element | ShadowRoot | string
110
+ ) : Element | null {
107
111
if ( isString ( container ) ) {
108
112
const res = document . querySelector ( container )
109
113
if ( __DEV__ && ! res ) {
110
114
warn ( `Failed to mount app: mount target selector returned null.` )
111
115
}
112
116
return res
113
117
}
114
- return container
118
+ if (
119
+ __DEV__ &&
120
+ container instanceof ShadowRoot &&
121
+ container . mode === 'closed'
122
+ ) {
123
+ warn (
124
+ `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`
125
+ )
126
+ }
127
+ return container as any
115
128
}
116
129
117
130
// SFC CSS utilities
0 commit comments