File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import {
22 VaporTeleport ,
33 createComponent ,
4+ createFor ,
45 createIf ,
56 createPlainElement ,
67 defineVaporComponent ,
@@ -410,4 +411,48 @@ describe('useVaporCssVars', () => {
410411
411412 expect ( colorInOnMount ) . toBe ( `red` )
412413 } )
414+
415+ test ( 'work with v-if false' , ( ) => {
416+ const state = reactive ( { color : 'red' } )
417+ const root = document . createElement ( 'div' )
418+
419+ define ( {
420+ setup ( ) {
421+ useVaporCssVars ( ( ) => state )
422+ return createIf (
423+ ( ) => false ,
424+ ( ) => {
425+ const n2 = template ( '<div class="red">Hi</div>' ) ( )
426+ return n2
427+ } ,
428+ null as any ,
429+ true ,
430+ )
431+ } ,
432+ } ) . render ( { } , root )
433+
434+ expect ( root . innerHTML ) . toBe ( `<!--if-->` )
435+ } )
436+
437+ test ( 'work with empty v-for' , ( ) => {
438+ const state = reactive ( { color : 'red' } )
439+ const root = document . createElement ( 'div' )
440+
441+ define ( {
442+ setup ( ) {
443+ useVaporCssVars ( ( ) => state )
444+ return createFor (
445+ // empty source
446+ ( ) => [ ] ,
447+ item => {
448+ return template ( '<div class="red">Hi</div>' ) ( )
449+ } ,
450+ undefined ,
451+ 4 ,
452+ )
453+ } ,
454+ } ) . render ( { } , root )
455+
456+ expect ( root . innerHTML ) . toBe ( `<!--for-->` )
457+ } )
413458} )
Original file line number Diff line number Diff line change 88} from './insertionState'
99import { renderEffect } from './renderEffect'
1010import { DynamicFragment } from './fragment'
11+ import { createComment , createTextNode } from './dom/node'
1112
1213export function createIf (
1314 condition : ( ) => any ,
@@ -22,7 +23,11 @@ export function createIf(
2223
2324 let frag : Block
2425 if ( once ) {
25- frag = condition ( ) ? b1 ( ) : b2 ? b2 ( ) : [ ]
26+ frag = condition ( )
27+ ? b1 ( )
28+ : b2
29+ ? b2 ( )
30+ : [ __DEV__ ? createComment ( 'if' ) : createTextNode ( ) ]
2631 } else {
2732 frag =
2833 isHydrating || __DEV__ ? new DynamicFragment ( 'if' ) : new DynamicFragment ( )
Original file line number Diff line number Diff line change @@ -23,11 +23,12 @@ function resolveParentNode(block: Block): Node {
2323 if ( block instanceof Node ) {
2424 return block . parentNode !
2525 } else if ( isArray ( block ) ) {
26- return resolveParentNode ( block [ 0 ] )
26+ // Use the last element, so ForFragment will use the anchor
27+ return resolveParentNode ( block [ block . length - 1 ] )
2728 } else if ( isVaporComponent ( block ) ) {
2829 return resolveParentNode ( block . block ! )
2930 } else {
30- return resolveParentNode ( block . nodes )
31+ return resolveParentNode ( block . anchor || block . nodes )
3132 }
3233}
3334
You can’t perform that action at this time.
0 commit comments