11import { Component , Input } from '@angular/core' ;
22import { catchError , map } from 'rxjs/operators' ;
3- import { Observable , of as observableOf } from 'rxjs' ;
3+ import { Observable , of as observableOf , Subscription } from 'rxjs' ;
44import { AccessStatusObject } from './access-status.model' ;
55import { hasValue } from '../../../../empty.util' ;
66import { environment } from 'src/environments/environment' ;
@@ -11,7 +11,8 @@ import { ITEM } from '../../../../../core/shared/item.resource-type';
1111
1212@Component ( {
1313 selector : 'ds-access-status-badge' ,
14- templateUrl : './access-status-badge.component.html'
14+ templateUrl : './access-status-badge.component.html' ,
15+ styleUrls : [ './access-status-badge.component.scss' ]
1516} )
1617/**
1718 * Component rendering the access status of an item as a badge
@@ -26,6 +27,16 @@ export class AccessStatusBadgeComponent {
2627 */
2728 showAccessStatus : boolean ;
2829
30+ /**
31+ * Value based stylesheet class for access status badge
32+ */
33+ accessStatusClass : string ;
34+
35+ /**
36+ * List of subscriptions
37+ */
38+ subs : Subscription [ ] = [ ] ;
39+
2940 /**
3041 * Initialize instance variables
3142 *
@@ -57,5 +68,18 @@ export class AccessStatusBadgeComponent {
5768 map ( ( status : string ) => `access-status.${ status . toLowerCase ( ) } .listelement.badge` ) ,
5869 catchError ( ( ) => observableOf ( 'access-status.unknown.listelement.badge' ) )
5970 ) ;
71+
72+ // stylesheet based on the access status value
73+ this . subs . push (
74+ this . accessStatus$ . pipe (
75+ map ( ( accessStatusClass : string ) => accessStatusClass . replace ( / \. / g, '-' ) )
76+ ) . subscribe ( ( accessStatusClass : string ) => {
77+ this . accessStatusClass = accessStatusClass ;
78+ } )
79+ ) ;
80+ }
81+
82+ ngOnDestroy ( ) : void {
83+ this . subs . filter ( ( sub ) => hasValue ( sub ) ) . forEach ( ( sub ) => sub . unsubscribe ( ) ) ;
6084 }
6185}
0 commit comments