@@ -406,29 +406,43 @@ function hydrateTeleport(
406
406
optimized : boolean ,
407
407
) => Node | null ,
408
408
) : Node | null {
409
+ function hydrateDisabledTeleport (
410
+ node : Node ,
411
+ vnode : VNode ,
412
+ targetStart : Node | null ,
413
+ targetAnchor : Node | null ,
414
+ ) {
415
+ vnode . anchor = hydrateChildren (
416
+ nextSibling ( node ) ,
417
+ vnode ,
418
+ parentNode ( node ) ! ,
419
+ parentComponent ,
420
+ parentSuspense ,
421
+ slotScopeIds ,
422
+ optimized ,
423
+ )
424
+ vnode . targetStart = targetStart
425
+ vnode . targetAnchor = targetAnchor
426
+ }
427
+
409
428
const target = ( vnode . target = resolveTarget < Element > (
410
429
vnode . props ,
411
430
querySelector ,
412
431
) )
432
+ const disabled = isTeleportDisabled ( vnode . props )
413
433
if ( target ) {
414
- const disabled = isTeleportDisabled ( vnode . props )
415
434
// if multiple teleports rendered to the same target element, we need to
416
435
// pick up from where the last teleport finished instead of the first node
417
436
const targetNode =
418
437
( target as TeleportTargetElement ) . _lpa || target . firstChild
419
438
if ( vnode . shapeFlag & ShapeFlags . ARRAY_CHILDREN ) {
420
439
if ( disabled ) {
421
- vnode . anchor = hydrateChildren (
422
- nextSibling ( node ) ,
440
+ hydrateDisabledTeleport (
441
+ node ,
423
442
vnode ,
424
- parentNode ( node ) ! ,
425
- parentComponent ,
426
- parentSuspense ,
427
- slotScopeIds ,
428
- optimized ,
443
+ targetNode ,
444
+ targetNode && nextSibling ( targetNode ) ,
429
445
)
430
- vnode . targetStart = targetNode
431
- vnode . targetAnchor = targetNode && nextSibling ( targetNode )
432
446
} else {
433
447
vnode . anchor = nextSibling ( node )
434
448
@@ -470,6 +484,10 @@ function hydrateTeleport(
470
484
}
471
485
}
472
486
updateCssVars ( vnode , disabled )
487
+ } else if ( disabled ) {
488
+ if ( vnode . shapeFlag & ShapeFlags . ARRAY_CHILDREN ) {
489
+ hydrateDisabledTeleport ( node , vnode , node , nextSibling ( node ) )
490
+ }
473
491
}
474
492
return vnode . anchor && nextSibling ( vnode . anchor as Node )
475
493
}
0 commit comments