@@ -386,3 +386,44 @@ export const ChangeBindingSyntax = () => html`
386386 TemplateHelper . setBindingSyntax ( '[[' , ']]' ) ;
387387 </ script >
388388` ;
389+
390+ export const TemplateRenderedEvent = ( ) => html `
391+ < mgt-person person-query ="me " person-card ="hover ">
392+ < template data-type ="person-card ">
393+ < mgt-person-card inherit-details >
394+ < template data-type ="additional-details "> </ template >
395+ </ mgt-person-card >
396+ </ template >
397+ </ mgt-person >
398+
399+ < script type ="module ">
400+ import { Providers } from '@microsoft/mgt' ;
401+
402+ let mgtPerson = document . querySelector ( 'mgt-person' ) ;
403+
404+ mgtPerson . addEventListener ( 'templateRendered' , async ( e ) => {
405+
406+ // this template is rendered on demand when the user first views the person card
407+ let personCard = e . detail . element . querySelector ( 'mgt-person-card' ) ;
408+ if ( personCard ) {
409+ // make the network call before the template is rendered
410+ // so the data is available when it is viewed
411+ let client = Providers . globalProvider . graph . client ;
412+ let extensions = await client
413+ . api ( 'me' )
414+ . select ( 'id' )
415+ . expand ( "extensions($filter=id eq 'com.contoso.roamingSettings')" )
416+ . get ( ) ;
417+
418+ if ( extensions . extensions . length ) {
419+ let contosoExtension = extensions . extensions [ 0 ] ;
420+
421+ personCard . addEventListener ( 'templateRendered' , e => {
422+ // this will be called when the user expands the person card the first time
423+ e . detail . element . innerHTML = \`< b > theme:</ b > \${ contosoExtension . theme } \`;
424+ } ) ;
425+ }
426+ }
427+ } ) ;
428+ </ script >
429+ ` ;
0 commit comments