Skip to content

Commit 2351896

Browse files
committed
fix(dom): allow to correctly clone document fragments
1 parent 307011a commit 2351896

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

modules/angular2/src/dom/parse5_adapter.cjs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ export class Parse5DomAdapter extends DomAdapter {
135135
};
136136
return evt;
137137
}
138-
preventDefault(evt) {
138+
preventDefault(evt) {
139139
evt.returnValue = false;
140140
}
141141
getInnerHTML(el) {
@@ -302,11 +302,18 @@ export class Parse5DomAdapter extends DomAdapter {
302302
throw _notImplemented('getDistributedNodes');
303303
}
304304
clone(node) {
305-
var temp = treeAdapter.createElement("template", null, []);
306-
treeAdapter.appendChild(temp, node);
307-
var serialized = serializer.serialize(temp);
308-
var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
309-
return newParser.parseFragment(serialized).childNodes[0];
305+
// e.g. document fragment
306+
if (node.type === 'root') {
307+
var serialized = serializer.serialize(node);
308+
var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
309+
return newParser.parseFragment(serialized);
310+
} else {
311+
var temp = treeAdapter.createElement("template", null, []);
312+
treeAdapter.appendChild(temp, node);
313+
var serialized = serializer.serialize(temp);
314+
var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
315+
return newParser.parseFragment(serialized).childNodes[0];
316+
}
310317
}
311318
hasProperty(element, name:string) {
312319
return _HTMLElementPropertyList.indexOf(name) > -1;

0 commit comments

Comments
 (0)