From d539c515eac980b74e4c9b3dfec6e6f3c27d272d Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 13 Nov 2016 11:30:22 +0100 Subject: [PATCH 1/2] Test SVG update element with tag change Currently failing. Updating an SVG element which tag changes actually results in an unknown HTML element. --- render/tests/test-updateElement.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/render/tests/test-updateElement.js b/render/tests/test-updateElement.js index 28ba84ff..2211efd1 100644 --- a/render/tests/test-updateElement.js +++ b/render/tests/test-updateElement.js @@ -211,6 +211,19 @@ o.spec("updateElement", function() { o(updated.dom.attributes["class"].nodeValue).equals("b") }) + o("updates svg child", function() { + var vnode = {tag: "svg", children: [{ + tag: 'circle' + }]} + var updated = {tag: "svg", children: [{ + tag: 'line' + }]} + + render(root, [vnode]) + render(root, [updated]) + + o(updated.dom.firstChild.namespaceURI).equals("http://www.w3.org/2000/svg") + }) o("restores correctly when recycling", function() { var vnode = {tag: "div", key: 1} var updated = {tag: "div", key: 2} From 7163d5f7446a05578d2dddb9bfe854c935ce889a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 13 Nov 2016 11:31:55 +0100 Subject: [PATCH 2/2] Fix SVG element update with tag change Fixes the new failing test. Before: the updated element is unknown HTML After: the updated element is an SVG element --- render/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index 9445522b..c2dbd4ca 100644 --- a/render/render.js +++ b/render/render.js @@ -213,7 +213,7 @@ module.exports = function($window) { } else { removeNode(old, null) - insertNode(parent, createNode(vnode, hooks, undefined), nextSibling) + insertNode(parent, createNode(vnode, hooks, ns), nextSibling) } } function updateText(old, vnode) {