diff --git a/render/hyperscript.js b/render/hyperscript.js index b7499993..36eabbc5 100644 --- a/render/hyperscript.js +++ b/render/hyperscript.js @@ -51,15 +51,17 @@ function execSelector(state, attrs, children) { attrs[key] = state.attrs[key] } } - if (className || state.attrs.className) attrs[classAttr] = - className - ? state.attrs.className + if (className != null || state.attrs.className != null) attrs.className = + className != null + ? state.attrs.className != null ? state.attrs.className + " " + className : className - : state.attrs.className + : state.attrs.className != null ? state.attrs.className : null + if (classAttr === "class") attrs.class = null + for (var key in attrs) { if (hasOwn.call(attrs, key) && key !== "key") { hasAttrs = true diff --git a/render/tests/test-hyperscript.js b/render/tests/test-hyperscript.js index 83932527..21924dee 100644 --- a/render/tests/test-hyperscript.js +++ b/render/tests/test-hyperscript.js @@ -25,37 +25,43 @@ o.spec("hyperscript", function() { o(m("a", { class: undefined }).attrs).deepEquals({ - class: undefined + class: null }) o(m("a", { class: false }).attrs).deepEquals({ - class: false + class: null, + className: false }) o(m("a", { class: true }).attrs).deepEquals({ - class: true + class: null, + className: true }) o(m("a.x", { class: null }).attrs).deepEquals({ - class: "x" + class: null, + className: "x" }) o(m("a.x", { class: undefined }).attrs).deepEquals({ - class: "x" + class: null, + className: "x" }) o(m("a.x", { class: false }).attrs).deepEquals({ - class: "x" + class: null, + className: "x false" }) o(m("a.x", { class: true }).attrs).deepEquals({ - class: "x true" + class: null, + className: "x true" }) o(m("a", { className: null @@ -90,7 +96,7 @@ o.spec("hyperscript", function() { o(m("a.x", { className: false }).attrs).deepEquals({ - className: "x" + className: "x false" }) o(m("a.x", { className: true @@ -288,7 +294,7 @@ o.spec("hyperscript", function() { o("handles merging classes w/ class property", function() { 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() { var vnode = m(".a", {className: "b"})