UNPKG

@hug/ngx-sidenav

Version:
57 lines (53 loc) 2.37 kB
import * as i0 from '@angular/core'; import { inject, Injectable } from '@angular/core'; import { NgxMediaService } from '@hug/ngx-core'; import { ReplaySubject, shareReplay, switchMap, take, mergeWith } from 'rxjs'; import { map } from 'rxjs/operators'; class NgxSidenavService { openChanged$; modeChanged$; hiddenChanged$; mediaService = inject(NgxMediaService); opened$ = new ReplaySubject(1); mode$ = new ReplaySubject(1); hidden$ = new ReplaySubject(1); toggle$ = new ReplaySubject(1); constructor() { const alias$ = this.mediaService.mediaChanged$.pipe(shareReplay({ bufferSize: 1, refCount: false })); const toggleChanged$ = this.toggle$.pipe(switchMap(() => this.openChanged$.pipe(take(1), map(opened => !opened))), shareReplay({ bufferSize: 1, refCount: false })); this.openChanged$ = alias$.pipe(map(alias => alias === 'lg' || alias === 'xl'), mergeWith(this.opened$, toggleChanged$), shareReplay({ bufferSize: 1, refCount: false })); this.modeChanged$ = alias$.pipe(map(alias => alias === 'xs' ? 'over' : 'side'), mergeWith(this.mode$), shareReplay({ bufferSize: 1, refCount: false })); this.hiddenChanged$ = alias$.pipe(map(alias => alias === 'xs'), mergeWith(this.hidden$), shareReplay({ bufferSize: 1, refCount: false })); } open() { this.opened$.next(true); } close() { this.opened$.next(false); } toggle() { this.toggle$.next(); } hide() { this.hidden$.next(true); } show() { this.hidden$.next(false); } mode(value) { this.mode$.next(value); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgxSidenavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgxSidenavService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgxSidenavService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [] }); /** * Generated bundle index. Do not edit. */ export { NgxSidenavService }; //# sourceMappingURL=hug-ngx-sidenav.mjs.map