Skip to content

Commit a5550ee

Browse files
committed
chore: minor tweaks
1 parent 45c3f04 commit a5550ee

File tree

4 files changed

+23
-21
lines changed

4 files changed

+23
-21
lines changed

packages/runtime-core/src/component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1265,7 +1265,7 @@ export interface ComponentCustomElementInterface {
12651265
shouldUpdate?: boolean,
12661266
): void
12671267
/**
1268-
* Only effective when shadowRoot is false.
1268+
* @internal attached by the nested Teleport when shadowRoot is false.
12691269
*/
12701270
_teleportTarget?: RendererElement
12711271
}

packages/runtime-dom/__tests__/customElement.spec.ts

+16-14
Original file line numberDiff line numberDiff line change
@@ -976,16 +976,18 @@ describe('defineCustomElement', () => {
976976
`<span>default</span>text` + `<!---->` + `<div>fallback</div>`,
977977
)
978978
})
979-
test('should render slots with nested customElement', async () => {
980-
const Son = defineCustomElement(
979+
980+
test('render nested customElement w/ shadowRoot false', async () => {
981+
const Child = defineCustomElement(
981982
{
982983
render() {
983984
return renderSlot(this.$slots, 'default')
984985
},
985986
},
986987
{ shadowRoot: false },
987988
)
988-
customElements.define('my-son', Son)
989+
customElements.define('my-child', Child)
990+
989991
const Parent = defineCustomElement(
990992
{
991993
render() {
@@ -1000,7 +1002,7 @@ describe('defineCustomElement', () => {
10001002
render() {
10011003
return h('my-parent', null, {
10021004
default: () => [
1003-
h('my-son', null, {
1005+
h('my-child', null, {
10041006
default: () => [h('span', null, 'default')],
10051007
}),
10061008
],
@@ -1009,17 +1011,17 @@ describe('defineCustomElement', () => {
10091011
}
10101012
const app = createApp(App)
10111013
app.mount(container)
1012-
await new Promise(r => setTimeout(r))
1014+
await nextTick()
10131015
const e = container.childNodes[0] as VueElement
10141016
expect(e.innerHTML).toBe(
1015-
`<my-son data-v-app=""><span>default</span></my-son>`,
1017+
`<my-child data-v-app=""><span>default</span></my-child>`,
10161018
)
10171019
app.unmount()
10181020
})
10191021

1020-
test('should work with Teleport', async () => {
1022+
test('render nested Teleport w/ shadowRoot false', async () => {
10211023
const target = document.createElement('div')
1022-
const Y = defineCustomElement(
1024+
const Child = defineCustomElement(
10231025
{
10241026
render() {
10251027
return h(
@@ -1033,22 +1035,22 @@ describe('defineCustomElement', () => {
10331035
},
10341036
{ shadowRoot: false },
10351037
)
1036-
customElements.define('my-y', Y)
1037-
const P = defineCustomElement(
1038+
customElements.define('my-el-teleport-child', Child)
1039+
const Parent = defineCustomElement(
10381040
{
10391041
render() {
10401042
return renderSlot(this.$slots, 'default')
10411043
},
10421044
},
10431045
{ shadowRoot: false },
10441046
)
1045-
customElements.define('my-p', P)
1047+
customElements.define('my-el-teleport-parent', Parent)
10461048

10471049
const App = {
10481050
render() {
1049-
return h('my-p', null, {
1051+
return h('my-el-teleport-parent', null, {
10501052
default: () => [
1051-
h('my-y', null, {
1053+
h('my-el-teleport-child', null, {
10521054
default: () => [h('span', null, 'default')],
10531055
}),
10541056
],
@@ -1057,7 +1059,7 @@ describe('defineCustomElement', () => {
10571059
}
10581060
const app = createApp(App)
10591061
app.mount(container)
1060-
await new Promise(r => setTimeout(r))
1062+
await nextTick()
10611063
expect(target.innerHTML).toBe(`<span>default</span>`)
10621064
app.unmount()
10631065
})

packages/runtime-dom/src/apiCustomElement.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,11 @@ export class VueElement
221221
*/
222222
_nonce: string | undefined = this._def.nonce
223223

224+
/**
225+
* @internal
226+
*/
227+
_teleportTarget?: HTMLElement
228+
224229
private _connected = false
225230
private _resolved = false
226231
private _numberProps: Record<string, true> | null = null
@@ -238,11 +243,6 @@ export class VueElement
238243
private _ob?: MutationObserver | null = null
239244
private _slots?: Record<string, Node[]>
240245

241-
/**
242-
* Only effective when shadowRoot is false.
243-
*/
244-
_teleportTarget?: HTMLElement
245-
246246
constructor(
247247
/**
248248
* Component def - note this may be an AsyncWrapper, and this._def will

packages/vue/__tests__/e2e/ssr-custom-element.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ test('ssr custom element hydration', async () => {
7878
await assertInteraction('my-element-async')
7979
})
8080

81-
test('ssr custom element hydration with Teleport', async () => {
81+
test('work with Teleport (shadowRoot: false)', async () => {
8282
await setContent(
8383
`<div id='test'></div><my-p><my-y><span>default</span></my-y></my-p>`,
8484
)

0 commit comments

Comments
 (0)