1- import { AfterViewChecked , Component , OnInit } from '@angular/core' ;
1+ import { AfterViewChecked , AfterViewInit , Component , OnInit , Renderer2 } from '@angular/core' ;
22import { BaseEmbeddedMetricComponent } from '../metric-loader/base-embedded-metric.component' ;
33import { DomSanitizer } from '@angular/platform-browser' ;
44import { hasValue } from '../../empty.util' ;
5+ import { BehaviorSubject } from 'rxjs' ;
56
67declare let _altmetric_embed_init : any ;
78
@@ -10,10 +11,14 @@ declare let _altmetric_embed_init: any;
1011 templateUrl : './metric-altmetric.component.html' ,
1112 styleUrls : [ './metric-altmetric.component.scss' , '../metric-loader/base-metric.component.scss' ]
1213} )
13- export class MetricAltmetricComponent extends BaseEmbeddedMetricComponent implements OnInit , AfterViewChecked {
14+ export class MetricAltmetricComponent extends BaseEmbeddedMetricComponent implements OnInit , AfterViewChecked , AfterViewInit {
1415 remark : JSON ;
16+ /**
17+ * Flag to show the altmetric label
18+ */
19+ showAltmetricLabel$ : BehaviorSubject < boolean > = new BehaviorSubject ( false ) ;
1520
16- constructor ( protected sr : DomSanitizer ) {
21+ constructor ( protected sr : DomSanitizer , private renderer : Renderer2 ) {
1722 super ( sr ) ;
1823 }
1924
@@ -33,4 +38,11 @@ export class MetricAltmetricComponent extends BaseEmbeddedMetricComponent implem
3338 this . hide . emit ( true ) ;
3439 }
3540 }
41+
42+ ngAfterViewInit ( ) : void {
43+ // Show the altmetric label only when the altmetric component is ready
44+ this . renderer . listen ( this . metricChild . nativeElement , 'altmetric:show' , ( ) => {
45+ this . showAltmetricLabel$ . next ( true ) ;
46+ } ) ;
47+ }
3648}
0 commit comments