feat(view): introduce free embedded views

Free embedded views are view instances that are created
logically in the same was as views of a ViewContainer,
but their dom nodes are not attached.

BREAKING CHANGE:

- `Renderer.detachFreeHostView` was renamed to
  `Renderer.detachFreeView`
- `DomRenderer.getHostElement()` was generalized into
  `DomRenderer.getRootNodes()`
This commit is contained in:
Tobias Bosch
2015-06-03 11:02:51 -07:00
parent 9ce0870f6c
commit 5030ffb01c
10 changed files with 230 additions and 32 deletions

View File

@ -237,9 +237,9 @@ export class Renderer {
}
/**
* Detaches a free host view's element from the DOM.
* Detaches a free view's element from the DOM.
*/
detachFreeHostView(parentHostViewRef: RenderViewRef, hostViewRef: RenderViewRef) {}
detachFreeView(view: RenderViewRef) {}
/**
* Creates a regular view out of the given ProtoView

View File

@ -47,9 +47,9 @@ export class DomRenderer extends Renderer {
return new DomViewRef(this._createView(hostProtoView, element));
}
detachFreeHostView(parentHostViewRef: RenderViewRef, hostViewRef: RenderViewRef) {
var hostView = resolveInternalDomView(hostViewRef);
this._removeViewNodes(hostView);
detachFreeView(viewRef: RenderViewRef) {
var view = resolveInternalDomView(viewRef);
this._removeViewNodes(view);
}
createView(protoViewRef: RenderProtoViewRef): RenderViewRef {
@ -83,9 +83,8 @@ export class DomRenderer extends Renderer {
this._moveViewNodesIntoParent(componentView.shadowRoot, componentView);
}
getHostElement(hostViewRef: RenderViewRef) {
var hostView = resolveInternalDomView(hostViewRef);
return hostView.boundElements[0];
getRootNodes(viewRef: RenderViewRef): List</*node*/ any> {
return resolveInternalDomView(viewRef).rootNodes;
}
detachComponentView(hostViewRef: RenderViewRef, boundElementIndex: number,