Skip to content

Commit a665825

Browse files
authored
Merge pull request #533 from sveltejs/gh-532
fix simple if blocks with top-level or conditions (#532)
2 parents 8e87c68 + f74941b commit a665825

File tree

5 files changed

+28
-10
lines changed

5 files changed

+28
-10
lines changed

src/generators/dom/visitors/IfBlock.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export default function visitIfBlock ( generator, block, state, node ) {
6868

6969
function simple ( generator, block, state, node, branch, dynamic, { name, anchor, params } ) {
7070
block.builders.create.addBlock( deindent`
71-
var ${name} = ${branch.condition} && ${branch.block}( ${params}, ${block.component} );
71+
var ${name} = (${branch.condition}) && ${branch.block}( ${params}, ${block.component} );
7272
` );
7373

7474
const isToplevel = !state.parentNode;
@@ -154,4 +154,4 @@ function compound ( generator, block, state, node, branches, dynamic, { name, an
154154
}
155155
` );
156156
}
157-
}
157+
}

test/js/samples/if-block-simple/expected.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { appendNode, assign, createComment, createElement, createText, detachNod
33
function create_main_fragment ( state, component ) {
44
var if_block_anchor = createComment();
55

6-
var if_block = state.foo && create_if_block( state, component );
6+
var if_block = (state.foo) && create_if_block( state, component );
77

88
return {
99
mount: function ( target, anchor ) {
@@ -90,4 +90,4 @@ SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = functio
9090
this._torndown = true;
9191
};
9292

93-
export default SvelteComponent;
93+
export default SvelteComponent;

test/js/samples/use-elements-as-anchors/expected.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { appendNode, assign, createComment, createElement, createText, detachNod
33
function create_main_fragment ( state, component ) {
44
var div = createElement( 'div' );
55

6-
var if_block = state.a && create_if_block( state, component );
6+
var if_block = (state.a) && create_if_block( state, component );
77

88
if ( if_block ) if_block.mount( div, null );
99
var text = createText( "\n\n\t" );
@@ -13,13 +13,13 @@ function create_main_fragment ( state, component ) {
1313
appendNode( createText( "this can be used as an anchor" ), p );
1414
appendNode( createText( "\n\n\t" ), div );
1515

16-
var if_block_1 = state.b && create_if_block_1( state, component );
16+
var if_block_1 = (state.b) && create_if_block_1( state, component );
1717

1818
if ( if_block_1 ) if_block_1.mount( div, null );
1919
var text_3 = createText( "\n\n\t" );
2020
appendNode( text_3, div );
2121

22-
var if_block_2 = state.c && create_if_block_2( state, component );
22+
var if_block_2 = (state.c) && create_if_block_2( state, component );
2323

2424
if ( if_block_2 ) if_block_2.mount( div, null );
2525
var text_4 = createText( "\n\n\t" );
@@ -29,15 +29,15 @@ function create_main_fragment ( state, component ) {
2929
appendNode( createText( "so can this" ), p_1 );
3030
appendNode( createText( "\n\n\t" ), div );
3131

32-
var if_block_3 = state.d && create_if_block_3( state, component );
32+
var if_block_3 = (state.d) && create_if_block_3( state, component );
3333

3434
if ( if_block_3 ) if_block_3.mount( div, null );
3535
var text_7 = createText( "\n\n\t" );
3636
appendNode( text_7, div );
3737
var text_8 = createText( "\n\n" );
3838
var if_block_4_anchor = createComment();
3939

40-
var if_block_4 = state.e && create_if_block_4( state, component );
40+
var if_block_4 = (state.e) && create_if_block_4( state, component );
4141

4242
return {
4343
mount: function ( target, anchor ) {
@@ -240,4 +240,4 @@ SvelteComponent.prototype.teardown = SvelteComponent.prototype.destroy = functio
240240
this._torndown = true;
241241
};
242242

243-
export default SvelteComponent;
243+
export default SvelteComponent;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export default {
2+
data: {
3+
a: true,
4+
b: false
5+
},
6+
7+
html: '<p>i am visible</p>',
8+
9+
test ( assert, component, target ) {
10+
component.set({ a: false });
11+
assert.htmlEqual( target.innerHTML, '' );
12+
component.set({ b: true });
13+
assert.htmlEqual( target.innerHTML, '<p>i am visible</p>' );
14+
}
15+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{{#if a || b}}
2+
<p>i am visible</p>
3+
{{/if}}

0 commit comments

Comments
 (0)