@@ -35,6 +35,7 @@ import {camelCaseToDashCase} from './util';
3535@Injectable ( )
3636export class DomRenderer implements Renderer , NodeFactory < Node > {
3737 private _componentCmds : Map < number , RenderTemplateCmd [ ] > = new Map < number , RenderTemplateCmd [ ] > ( ) ;
38+ private _nativeShadowStyles : Map < number , string [ ] > = new Map < number , string [ ] > ( ) ;
3839 private _document ;
3940
4041 /**
@@ -46,9 +47,14 @@ export class DomRenderer implements Renderer, NodeFactory<Node> {
4647 this . _document = document ;
4748 }
4849
49- registerComponentTemplate ( templateId : number , commands : RenderTemplateCmd [ ] , styles : string [ ] ) {
50+ registerComponentTemplate ( templateId : number , commands : RenderTemplateCmd [ ] , styles : string [ ] ,
51+ nativeShadow : boolean ) {
5052 this . _componentCmds . set ( templateId , commands ) ;
51- this . _domSharedStylesHost . addStyles ( styles ) ;
53+ if ( nativeShadow ) {
54+ this . _nativeShadowStyles . set ( templateId , styles ) ;
55+ } else {
56+ this . _domSharedStylesHost . addStyles ( styles ) ;
57+ }
5258 }
5359
5460 resolveComponentTemplate ( templateId : number ) : RenderTemplateCmd [ ] {
@@ -193,7 +199,14 @@ export class DomRenderer implements Renderer, NodeFactory<Node> {
193199 DOM . setAttribute ( node , attrNameAndValues [ attrIdx ] , attrNameAndValues [ attrIdx + 1 ] ) ;
194200 }
195201 }
196- createShadowRoot ( host : Node ) : Node { return DOM . createShadowRoot ( host ) ; }
202+ createShadowRoot ( host : Node , templateId : number ) : Node {
203+ var sr = DOM . createShadowRoot ( host ) ;
204+ var styles = this . _nativeShadowStyles . get ( templateId ) ;
205+ for ( var i = 0 ; i < styles . length ; i ++ ) {
206+ DOM . appendChild ( sr , DOM . createStyleElement ( styles [ i ] ) ) ;
207+ }
208+ return sr ;
209+ }
197210 createText ( value : string ) : Node { return DOM . createTextNode ( isPresent ( value ) ? value : '' ) ; }
198211 appendChild ( parent : Node , child : Node ) { DOM . appendChild ( parent , child ) ; }
199212 on ( element : Node , eventName : string , callback : Function ) {
0 commit comments