From d00ae793a6737c9f6d5e3e8a7106c568d3684e61 Mon Sep 17 00:00:00 2001 From: Andre Staltz Date: Mon, 17 Jul 2017 18:00:24 +0300 Subject: [PATCH] Support DocumentFragment in toVNode --- src/tovnode.ts | 2 +- test/core.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/tovnode.ts b/src/tovnode.ts index 3e5fa6e..7ba1944 100644 --- a/src/tovnode.ts +++ b/src/tovnode.ts @@ -32,7 +32,7 @@ export function toVNode(node: Node, domApi?: DOMAPI): VNode { text = api.getTextContent(node) as string; return vnode('!', {}, [], text, node as any); } else { - return vnode('', {}, [], undefined, undefined); + return vnode('', {}, [], undefined, node as any); } } diff --git a/test/core.js b/test/core.js index 64a4a8a..8b2d22c 100644 --- a/test/core.js +++ b/test/core.js @@ -9,6 +9,7 @@ var patch = snabbdom.init([ ]); var h = require('../h').default; var toVNode = require('../tovnode').default; +var vnode = require('../vnode').default; function prop(name) { return function(obj) { @@ -280,6 +281,22 @@ describe('snabbdom', function() { assert.strictEqual(elm.childNodes[0].tagName, 'SPAN'); assert.strictEqual(elm.childNodes[0].textContent, 'Hi'); }); + it('can support patching in a DocumentFragment', function () { + var prevElm = document.createDocumentFragment(); + var nextVNode = vnode('', {}, [ + h('div#id.class', [h('span', 'Hi')]) + ], undefined, prevElm); + elm = patch(toVNode(prevElm), nextVNode).elm; + assert.strictEqual(elm, prevElm); + assert.equal(elm.nodeType, 11); + assert.equal(elm.childNodes.length, 1); + assert.equal(elm.childNodes[0].tagName, 'DIV'); + assert.equal(elm.childNodes[0].id, 'id'); + assert.equal(elm.childNodes[0].className, 'class'); + assert.strictEqual(elm.childNodes[0].childNodes.length, 1); + assert.strictEqual(elm.childNodes[0].childNodes[0].tagName, 'SPAN'); + assert.strictEqual(elm.childNodes[0].childNodes[0].textContent, 'Hi'); + }); it('can remove some children of the root element', function () { var h2 = document.createElement('h2'); h2.textContent = 'Hello'