Support DocumentFragment in toVNode

pull/320/head
Andre Staltz 8 years ago
parent 8e189fa2f5
commit d00ae793a6
No known key found for this signature in database
GPG Key ID: 9EDE23EA7E8A4890

@ -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);
}
}

@ -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'

Loading…
Cancel
Save