fix input value 0 for ssr (#6458)

pull/6527/head
Tan Li Hau 4 years ago committed by GitHub
parent 23f8f4ba6d
commit 2818567925
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -126,9 +126,11 @@ export default function(node: Element, renderer: Renderer, options: RenderOption
} else if (binding.name === 'value' && node.name === 'textarea') { } else if (binding.name === 'value' && node.name === 'textarea') {
const snippet = expression.node; const snippet = expression.node;
node_contents = x`${snippet} || ""`; node_contents = x`${snippet} || ""`;
} else if (binding.name === 'value' && node.name === 'select') {
// NOTE: do not add "value" attribute on <select />
} else { } else {
const snippet = expression.node; const snippet = expression.node;
renderer.add_expression(x`@add_attribute("${name}", ${snippet}, 1)`); renderer.add_expression(x`@add_attribute("${name}", ${snippet}, ${boolean_attributes.has(name) ? 1 : 0})`);
} }
}); });

@ -9,7 +9,7 @@ export default {
`, `,
ssrHtml: ` ssrHtml: `
<input> <input value="">
<p></p> <p></p>
`, `,

@ -3,11 +3,5 @@ export default {
<select> <select>
<option value="[object Object]">wheeee</option> <option value="[object Object]">wheeee</option>
</select> </select>
`,
ssrHtml: `
<select value="[object Object]">
<option value="[object Object]">wheeee</option>
</select>
` `
}; };

@ -14,16 +14,6 @@ export default {
<p>foo: 2</p> <p>foo: 2</p>
`, `,
ssrHtml: `
<select value=2>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<p>foo: 2</p>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
const options = [...target.querySelectorAll('option')]; const options = [...target.querySelectorAll('option')];

@ -1,17 +1,4 @@
export default { export default {
ssrHtml: `
<select value='hullo'>
<option value='hullo'>Hullo</option>
<option value='world'>World</option>
</select>
<select value='world'>
<option value='hullo'>Hullo</option>
<option value='world'>World</option>
</select>
`,
html: ` html: `
<select> <select>
<option value='hullo'>Hullo</option> <option value='hullo'>Hullo</option>

@ -11,18 +11,6 @@ export default {
<p>selected: b</p> <p>selected: b</p>
`, `,
ssrHtml: `
<p>selected: b</p>
<select value=b>
<option value='a'>a</option>
<option value='b'>b</option>
<option value='c'>c</option>
</select>
<p>selected: b</p>
`,
props: { props: {
selected: 'b' selected: 'b'
}, },

@ -9,11 +9,6 @@ export default {
<p>selected: two</p> <p>selected: two</p>
`, `,
ssrHtml: `
<select value="two"></select>
<p>selected: two</p>
`,
test({ assert, component, target }) { test({ assert, component, target }) {
component.items = [ 'one', 'two', 'three' ]; component.items = [ 'one', 'two', 'three' ];

@ -4,16 +4,6 @@ export default {
selected: [ 'two', 'three' ] selected: [ 'two', 'three' ]
}, },
ssrHtml: `
<select multiple value="two,three">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
</select>
<p>selected: two, three</p>
`,
html: ` html: `
<select multiple> <select multiple>
<option value="one">one</option> <option value="one">one</option>

@ -11,18 +11,6 @@ export default {
<p>selected: one</p> <p>selected: one</p>
`, `,
ssrHtml: `
<p>selected: one</p>
<select value=one>
<option value='one'>one</option>
<option value='two'>two</option>
<option value='three'>three</option>
</select>
<p>selected: one</p>
`,
props: { props: {
selected: 'one' selected: 'one'
}, },

@ -1,3 +1,4 @@
export default { export default {
html: '<input type="text">' html: '<input type="text">',
ssrHtml: '<input type="text" value="">'
}; };

@ -3,6 +3,10 @@ export default {
<label>firstname <input></label> <label>firstname <input></label>
<label>lastname <input></label> <label>lastname <input></label>
`, `,
ssrHtml: `
<label>firstname <input value=""></label>
<label>lastname <input value=""></label>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const input = new window.Event('input'); const input = new window.Event('input');

@ -4,6 +4,11 @@ export default {
<input /> <input />
<div></div> <div></div>
`, `,
ssrHtml: `
<input value=""/>
<input value=""/>
<div></div>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
let count = 0; let count = 0;

@ -4,6 +4,10 @@ export default {
<input> <input>
{"value":""} {"value":""}
`, `,
ssrHtml: `
<input value="">
{"value":""}
`,
async test({ assert, target, window }) { async test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');

@ -5,6 +5,12 @@ export default {
<div class="foo"></div> <div class="foo"></div>
</div> </div>
`, `,
ssrHtml: `
<div>
<input value="" />
<div class="foo"></div>
</div>
`,
async test({ assert, component, target }) { async test({ assert, component, target }) {
component.value = 'foo'; component.value = 'foo';

@ -4,7 +4,7 @@ export default {
<input /> <input />
`, `,
ssrHtml: ` ssrHtml: `
<input /> <input value="" />
<input value="hello" /> <input value="hello" />
`, `,

@ -5,6 +5,12 @@ export default {
<div>simple</div> <div>simple</div>
<button>click me</button> <button>click me</button>
`, `,
ssrHtml: `
<input value="">
<div></div>
<div>simple</div>
<button>click me</button>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');

@ -5,6 +5,12 @@ export default {
<input> <input>
<button>click me</button> <button>click me</button>
`, `,
ssrHtml: `
<div></div>
<div>simple</div>
<input value="">
<button>click me</button>
`,
async test({ assert, component, target, window }) { async test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');

@ -0,0 +1,5 @@
<script>
export let foo = '';
</script>
<input bind:value={foo} >

@ -0,0 +1,2 @@
<input value="0" type="number">
<input value="0" type="range">

@ -0,0 +1,6 @@
<script>
export let foo = 0;
</script>
<input type="number" bind:value={foo} >
<input type="range" bind:value={foo} >
Loading…
Cancel
Save