From 2d760b3c5e4b32e6334d6a96f1c25474e4deb3de Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 28 Oct 2018 09:26:30 -0400 Subject: [PATCH] baby steps --- src/compile/nodes/Element.ts | 4 +++- .../binding-input-radio-checked/_config.js | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index c060edc1f8..4d22960de3 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -473,7 +473,9 @@ export default class Element extends Node { }); } - if (checkTypeAttribute() !== 'checkbox') { + const type = checkTypeAttribute(); + + if (type !== 'checkbox' && type !== 'radio') { component.error(binding, { code: `invalid-binding`, message: `'${name}' binding can only be used with ` diff --git a/test/runtime/samples/binding-input-radio-checked/_config.js b/test/runtime/samples/binding-input-radio-checked/_config.js index 85193ffc3f..9b55b5c94e 100644 --- a/test/runtime/samples/binding-input-radio-checked/_config.js +++ b/test/runtime/samples/binding-input-radio-checked/_config.js @@ -20,7 +20,26 @@ export default {

foo false

bar true

-

baz false

`, +

baz false

+ `, + + ssrHtml: ` + + + + + + +

foo false

+

bar true

+

baz false

+ `, test(assert, component, target, window) { const inputs = target.querySelectorAll('input'); @@ -31,6 +50,7 @@ export default { const event = new window.Event('change'); inputs[0].checked = true; + assert.equal(inputs[1].checked, false); inputs[0].dispatchEvent(event); assert.htmlEqual(target.innerHTML, `