From 40429c8377dbc528d8ba3f468bfdd7d3f26fa184 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Gerardy Date: Tue, 30 May 2017 14:17:46 +0200 Subject: [PATCH] Pass namespace when creating new elements while updating a keyed list, fix #1820 --- render/render.js | 2 +- render/tests/test-render.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index de1766b3..f143df72 100644 --- a/render/render.js +++ b/render/render.js @@ -224,7 +224,7 @@ module.exports = function($window) { if (movable.dom != null) nextSibling = movable.dom } else { - var dom = createNode(parent, v, hooks, undefined, nextSibling) + var dom = createNode(parent, v, hooks, ns, nextSibling) nextSibling = dom } } diff --git a/render/tests/test-render.js b/render/tests/test-render.js index 92bcd93c..5ffecf02 100644 --- a/render/tests/test-render.js +++ b/render/tests/test-render.js @@ -271,4 +271,26 @@ o.spec("render", function() { o(updateA.callCount).equals(2) o(removeA.callCount).equals(1) }) + o("svg namespace is preserved in keyed diff (#1820)", function(){ + // note that this only exerciese one branch of the keyed diff algo + var svg = {tag:"svg", children: [ + {tag:"g", key: 0}, + {tag:"g", key: 1} + ]} + render(root, [svg]) + + o(svg.dom.namespaceURI).equals("http://www.w3.org/2000/svg") + o(svg.dom.childNodes[0].namespaceURI).equals("http://www.w3.org/2000/svg") + o(svg.dom.childNodes[1].namespaceURI).equals("http://www.w3.org/2000/svg") + + svg = {tag:"svg", children: [ + {tag:"g", key: 1, attrs: {x: 1}}, + {tag:"g", key: 2, attrs: {x: 2}} + ]} + render(root, [svg]) + + o(svg.dom.namespaceURI).equals("http://www.w3.org/2000/svg") + o(svg.dom.childNodes[0].namespaceURI).equals("http://www.w3.org/2000/svg") + o(svg.dom.childNodes[1].namespaceURI).equals("http://www.w3.org/2000/svg") + }) })