From 421474c0e2eaa4518dfd2a9fe31da6bec92769e4 Mon Sep 17 00:00:00 2001 From: Rasmus Porsager Date: Sat, 24 Nov 2018 14:13:56 +0100 Subject: [PATCH] Cast className using toString (#2309) * Cast className using toString * Add to change-log --- docs/change-log.md | 1 + render/hyperscript.js | 2 +- render/tests/test-hyperscript.js | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/change-log.md b/docs/change-log.md index 3715279c..a6b93ab2 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -30,6 +30,7 @@ - render: remove some redundancy within the component initialization code ([#2213](https://github.com/MithrilJS/mithril.js/pull/2213)) - render: Align custom elements to work like normal elements, minus all the HTML-specific magic. ([#2221](https://github.com/MithrilJS/mithril.js/pull/2221)) - render: simplify component removal ([#2214](https://github.com/MithrilJS/mithril.js/pull/2214)) +- cast className using toString ([#2309](https://github.com/MithrilJS/mithril.js/pull/2309)) #### News diff --git a/render/hyperscript.js b/render/hyperscript.js index 36eabbc5..dce92e45 100644 --- a/render/hyperscript.js +++ b/render/hyperscript.js @@ -54,7 +54,7 @@ function execSelector(state, attrs, children) { if (className != null || state.attrs.className != null) attrs.className = className != null ? state.attrs.className != null - ? state.attrs.className + " " + className + ? String(state.attrs.className) + " " + String(className) : className : state.attrs.className != null ? state.attrs.className diff --git a/render/tests/test-hyperscript.js b/render/tests/test-hyperscript.js index bb4a0f62..c2b6c98d 100644 --- a/render/tests/test-hyperscript.js +++ b/render/tests/test-hyperscript.js @@ -358,6 +358,15 @@ o.spec("hyperscript", function() { o(vnode.attrs.className).equals("a") }) + o("casts className using toString like browsers", function() { + const className = { + valueOf: () => ".valueOf", + toString: () => "toString" + } + var vnode = m("custom-element" + className, {className: className}) + + o(vnode.attrs.className).equals("valueOf toString") + }) }) o.spec("children", function() { o("handles string single child", function() {