diff --git a/src/generators/dom/visitors/IfBlock.ts b/src/generators/dom/visitors/IfBlock.ts index 0deaf6b395..2aa22d502c 100644 --- a/src/generators/dom/visitors/IfBlock.ts +++ b/src/generators/dom/visitors/IfBlock.ts @@ -152,7 +152,7 @@ function simple( `if (${name}) ${name}.${mountOrIntro}(${targetNode}, ${anchorNode});` ); - const parentNode = (state.parentNode && !needsAnchor) ? state.parentNode : `${anchor}.parentNode`; + const parentNode = isDomNode(node.parent, generator) ? node.parent.var : `${anchor}.parentNode`; const enter = dynamic ? branch.hasIntroMethod @@ -255,7 +255,7 @@ function compound( `${if_name}${name}.${mountOrIntro}(${targetNode}, ${anchorNode});` ); - const parentNode = (state.parentNode && !needsAnchor) ? state.parentNode : `${anchor}.parentNode`; + const parentNode = isDomNode(node.parent, generator) ? node.parent.var : `${anchor}.parentNode`; const changeBlock = deindent` ${hasElse diff --git a/test/runtime/samples/component-slot-if-block-before-node/Nested.html b/test/runtime/samples/component-slot-if-block-before-node/Nested.html new file mode 100644 index 0000000000..8213363fa0 --- /dev/null +++ b/test/runtime/samples/component-slot-if-block-before-node/Nested.html @@ -0,0 +1,3 @@ +
unconditional
+conditional
+unconditional
+conditional
+ {{/if}} + +unconditional
+disabled
+unconditional
`, + + test(assert, component, target) { + component.set({ enabled: true }); + assert.htmlEqual(target.innerHTML, ` +enabled
+unconditional
+ `); + } +}; diff --git a/test/runtime/samples/component-slot-if-else-block-before-node/main.html b/test/runtime/samples/component-slot-if-else-block-before-node/main.html new file mode 100644 index 0000000000..5057cc641e --- /dev/null +++ b/test/runtime/samples/component-slot-if-else-block-before-node/main.html @@ -0,0 +1,19 @@ +disabled
+ {{else}} +enabled
+ {{/if}} + +unconditional
+