projects/nshmp-template/src/lib/services/nshmp-template.service.ts
Properties |
|
Methods |
Accessors |
constructor(breakpointObserver: BreakpointObserver, schemeService: ColorSchemeService)
|
|||||||||
Parameters :
|
breakpointObserver$ | ||||||||
breakpointObserver$(breakpoint: string)
|
||||||||
Returns the screen change observable for a given breakpoint.
Parameters :
Returns :
Observable<boolean>
|
startTutorial |
startTutorial()
|
Returns :
Observable<void>
|
Readonly desktopBreakpoint |
Type : string
|
Default value : '(max-width: 1040px)'
|
Readonly mobileBreakpoint |
Type : string
|
Default value : '(max-width: 480px)'
|
Private showTutorial |
Default value : signal(false)
|
startTutorialEvent |
Default value : new Subject<void>()
|
Readonly tabletBreakpoint |
Type : string
|
Default value : '(max-width: 640px)'
|
showTutorialInMenu | ||||||
getshowTutorialInMenu()
|
||||||
setshowTutorialInMenu(show: boolean)
|
||||||
Parameters :
Returns :
void
|
isDarkMode |
getisDarkMode()
|
Returns true if application is set to dark color scheme.
Returns :
boolean
|
isSmallScreen |
getisSmallScreen()
|
Returns true of max-width <= breakpoint else false. Default breakpoint: (max-width: 1040px)
Returns :
boolean
|
isSmallScreen$ |
getisSmallScreen$()
|
Returns the screen change observable. Returns true of max-width <= breakpoint else false. Default breakpoint: (max-width: 1040px)
Returns :
Observable<boolean>
|
colorScheme |
getcolorScheme()
|
Returns the application color scheme. Default is based off of the browser color scheme.
Returns :
ColorScheme
|
colorSchemeChanged |
getcolorSchemeChanged()
|
Returns the event emitter for when the color scheme changes.
Returns :
EventEmitter<ColorScheme>
|
import {BreakpointObserver} from '@angular/cdk/layout';
import {EventEmitter, Injectable, Signal, signal} from '@angular/core';
import {Observable, Subject} from 'rxjs';
import {map} from 'rxjs/operators';
import {ColorScheme, ColorSchemeService} from './color-scheme.service';
@Injectable({
providedIn: 'root',
})
export class NshmpTemplateService {
readonly desktopBreakpoint = '(max-width: 1040px)';
readonly tabletBreakpoint = '(max-width: 640px)';
readonly mobileBreakpoint = '(max-width: 480px)';
startTutorialEvent = new Subject<void>();
private showTutorial = signal(false);
constructor(
private breakpointObserver: BreakpointObserver,
private schemeService: ColorSchemeService,
) {}
set showTutorialInMenu(show: boolean) {
this.showTutorial.set(show);
}
get showTutorialInMenu(): Signal<boolean> {
return this.showTutorial;
}
/**
* Returns true if application is set to dark color scheme.
*/
get isDarkMode(): boolean {
return (
this.colorScheme === ColorScheme.DARK ||
(this.colorScheme === ColorScheme.SYSTEM &&
this.breakpointObserver.isMatched(this.schemeService.darkSchemeBreakpoint))
);
}
/**
* Returns true of max-width <= breakpoint else false.
*
* Default breakpoint: (max-width: 1040px)
*/
get isSmallScreen(): boolean {
return this.breakpointObserver.isMatched(this.desktopBreakpoint);
}
/**
* Returns the screen change observable.
* Returns true of max-width <= breakpoint else false.
*
* Default breakpoint: (max-width: 1040px)
*/
get isSmallScreen$(): Observable<boolean> {
return this.breakpointObserver$(this.desktopBreakpoint);
}
/**
* Returns the application color scheme.
*
* Default is based off of the browser color scheme.
*/
get colorScheme(): ColorScheme {
return this.schemeService.colorScheme;
}
/**
* Returns the event emitter for when the color scheme changes.
*/
get colorSchemeChanged(): EventEmitter<ColorScheme> {
return this.schemeService.colorSchemeChanged;
}
/**
* Returns the screen change observable for a given breakpoint.
*
* @param breakpoint The breakpoint to observe
*/
breakpointObserver$(breakpoint: string): Observable<boolean> {
return this.breakpointObserver.observe(breakpoint).pipe(map(state => state.matches));
}
startTutorial(): Observable<void> {
return this.startTutorialEvent.asObservable();
}
}