@hug/ngx-sidenav
Version:
HUG Angular - sidenav component
57 lines (53 loc) • 2.37 kB
JavaScript
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