[render/hyperscript] Normalize to class attrs to className, ignore only nullish values

This commit is contained in:
Pierre-Yves Gérardy 2018-06-07 00:46:10 +02:00 committed by Pierre-Yves Gérardy
parent 15cf47a829
commit 32b319d140
2 changed files with 21 additions and 13 deletions

View file

@ -51,15 +51,17 @@ function execSelector(state, attrs, children) {
attrs[key] = state.attrs[key] attrs[key] = state.attrs[key]
} }
} }
if (className || state.attrs.className) attrs[classAttr] = if (className != null || state.attrs.className != null) attrs.className =
className className != null
? state.attrs.className ? state.attrs.className != null
? state.attrs.className + " " + className ? state.attrs.className + " " + className
: className : className
: state.attrs.className : state.attrs.className != null
? state.attrs.className ? state.attrs.className
: null : null
if (classAttr === "class") attrs.class = null
for (var key in attrs) { for (var key in attrs) {
if (hasOwn.call(attrs, key) && key !== "key") { if (hasOwn.call(attrs, key) && key !== "key") {
hasAttrs = true hasAttrs = true

View file

@ -25,37 +25,43 @@ o.spec("hyperscript", function() {
o(m("a", { o(m("a", {
class: undefined class: undefined
}).attrs).deepEquals({ }).attrs).deepEquals({
class: undefined class: null
}) })
o(m("a", { o(m("a", {
class: false class: false
}).attrs).deepEquals({ }).attrs).deepEquals({
class: false class: null,
className: false
}) })
o(m("a", { o(m("a", {
class: true class: true
}).attrs).deepEquals({ }).attrs).deepEquals({
class: true class: null,
className: true
}) })
o(m("a.x", { o(m("a.x", {
class: null class: null
}).attrs).deepEquals({ }).attrs).deepEquals({
class: "x" class: null,
className: "x"
}) })
o(m("a.x", { o(m("a.x", {
class: undefined class: undefined
}).attrs).deepEquals({ }).attrs).deepEquals({
class: "x" class: null,
className: "x"
}) })
o(m("a.x", { o(m("a.x", {
class: false class: false
}).attrs).deepEquals({ }).attrs).deepEquals({
class: "x" class: null,
className: "x false"
}) })
o(m("a.x", { o(m("a.x", {
class: true class: true
}).attrs).deepEquals({ }).attrs).deepEquals({
class: "x true" class: null,
className: "x true"
}) })
o(m("a", { o(m("a", {
className: null className: null
@ -90,7 +96,7 @@ o.spec("hyperscript", function() {
o(m("a.x", { o(m("a.x", {
className: false className: false
}).attrs).deepEquals({ }).attrs).deepEquals({
className: "x" className: "x false"
}) })
o(m("a.x", { o(m("a.x", {
className: true className: true
@ -288,7 +294,7 @@ o.spec("hyperscript", function() {
o("handles merging classes w/ class property", function() { o("handles merging classes w/ class property", function() {
var vnode = m(".a", {class: "b"}) var vnode = m(".a", {class: "b"})
o(vnode.attrs.class).equals("a b") o(vnode.attrs.className).equals("a b")
}) })
o("handles merging classes w/ className property", function() { o("handles merging classes w/ className property", function() {
var vnode = m(".a", {className: "b"}) var vnode = m(".a", {className: "b"})