import { Inject, Injectable, Optional } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { BzThemeConfig, THEME_CONFIG } from './theme.config'; @Injectable({ providedIn: 'root' }) export class BzThemeService { constructor( @Optional() @Inject(THEME_CONFIG) themeConfig?: BzThemeConfig) { if (themeConfig?.theme) { this.theme.next(themeConfig?.theme) } } private theme: BehaviorSubject = new BehaviorSubject(''); public THEME_SESSION = 'theme_session'; /** * Listen for theme. * * @author Federico Gambardella */ public listenTheme(): Observable { return this.theme.asObservable(); } /** * Sets theme. * * @author Federico Gambardella * @param object */ public setTheme(value: string) { sessionStorage.setItem(this.THEME_SESSION, value); this.theme.next(value); } }