fix(runtime-dom): consistently remove boolean attributes for falsy values (#4348)
This commit is contained in:
@@ -177,7 +177,7 @@ describe('ssr: element', () => {
|
||||
expect(getCompiledString(`<input type="checkbox" :checked="checked">`))
|
||||
.toMatchInlineSnapshot(`
|
||||
"\`<input type=\\"checkbox\\"\${
|
||||
(_ctx.checked) ? \\" checked\\" : \\"\\"
|
||||
(_ssrIncludeBooleanAttr(_ctx.checked)) ? \\" checked\\" : \\"\\"
|
||||
}>\`"
|
||||
`)
|
||||
})
|
||||
|
||||
@@ -37,13 +37,13 @@ describe('ssr: v-model', () => {
|
||||
expect(
|
||||
compileWithWrapper(`<input type="radio" value="foo" v-model="bar">`).code
|
||||
).toMatchInlineSnapshot(`
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(\`<div\${
|
||||
_ssrRenderAttrs(_attrs)
|
||||
}><input type=\\"radio\\" value=\\"foo\\"\${
|
||||
(_ssrLooseEqual(_ctx.bar, \\"foo\\")) ? \\" checked\\" : \\"\\"
|
||||
(_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.bar, \\"foo\\"))) ? \\" checked\\" : \\"\\"
|
||||
}></div>\`)
|
||||
}"
|
||||
`)
|
||||
@@ -52,15 +52,15 @@ describe('ssr: v-model', () => {
|
||||
test('<input type="checkbox">', () => {
|
||||
expect(compileWithWrapper(`<input type="checkbox" v-model="bar">`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"const { ssrLooseContain: _ssrLooseContain, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
"const { ssrLooseContain: _ssrLooseContain, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(\`<div\${
|
||||
_ssrRenderAttrs(_attrs)
|
||||
}><input type=\\"checkbox\\"\${
|
||||
((Array.isArray(_ctx.bar))
|
||||
(_ssrIncludeBooleanAttr((Array.isArray(_ctx.bar))
|
||||
? _ssrLooseContain(_ctx.bar, null)
|
||||
: _ctx.bar) ? \\" checked\\" : \\"\\"
|
||||
: _ctx.bar)) ? \\" checked\\" : \\"\\"
|
||||
}></div>\`)
|
||||
}"
|
||||
`)
|
||||
@@ -69,15 +69,15 @@ describe('ssr: v-model', () => {
|
||||
compileWithWrapper(`<input type="checkbox" value="foo" v-model="bar">`)
|
||||
.code
|
||||
).toMatchInlineSnapshot(`
|
||||
"const { ssrLooseContain: _ssrLooseContain, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
"const { ssrLooseContain: _ssrLooseContain, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(\`<div\${
|
||||
_ssrRenderAttrs(_attrs)
|
||||
}><input type=\\"checkbox\\" value=\\"foo\\"\${
|
||||
((Array.isArray(_ctx.bar))
|
||||
(_ssrIncludeBooleanAttr((Array.isArray(_ctx.bar))
|
||||
? _ssrLooseContain(_ctx.bar, \\"foo\\")
|
||||
: _ctx.bar) ? \\" checked\\" : \\"\\"
|
||||
: _ctx.bar)) ? \\" checked\\" : \\"\\"
|
||||
}></div>\`)
|
||||
}"
|
||||
`)
|
||||
@@ -87,13 +87,13 @@ describe('ssr: v-model', () => {
|
||||
`<input type="checkbox" :true-value="foo" :false-value="bar" v-model="baz">`
|
||||
).code
|
||||
).toMatchInlineSnapshot(`
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(\`<div\${
|
||||
_ssrRenderAttrs(_attrs)
|
||||
}><input type=\\"checkbox\\"\${
|
||||
(_ssrLooseEqual(_ctx.baz, _ctx.foo)) ? \\" checked\\" : \\"\\"
|
||||
(_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.baz, _ctx.foo))) ? \\" checked\\" : \\"\\"
|
||||
}></div>\`)
|
||||
}"
|
||||
`)
|
||||
@@ -103,13 +103,13 @@ describe('ssr: v-model', () => {
|
||||
`<input type="checkbox" true-value="foo" false-value="bar" v-model="baz">`
|
||||
).code
|
||||
).toMatchInlineSnapshot(`
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
"const { ssrLooseEqual: _ssrLooseEqual, ssrIncludeBooleanAttr: _ssrIncludeBooleanAttr, ssrRenderAttrs: _ssrRenderAttrs } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent, _attrs) {
|
||||
_push(\`<div\${
|
||||
_ssrRenderAttrs(_attrs)
|
||||
}><input type=\\"checkbox\\"\${
|
||||
(_ssrLooseEqual(_ctx.baz, \\"foo\\")) ? \\" checked\\" : \\"\\"
|
||||
(_ssrIncludeBooleanAttr(_ssrLooseEqual(_ctx.baz, \\"foo\\"))) ? \\" checked\\" : \\"\\"
|
||||
}></div>\`)
|
||||
}"
|
||||
`)
|
||||
|
||||
Reference in New Issue
Block a user