mirror of
https://github.com/richard-loafle/fuse-angular.git
synced 2025-04-27 02:23:10 +00:00
+ Renamed 'mat-sidenav-helper' files/folders to 'fuse-mat-sidenav-helper' & fixed its import issues
100 lines
2.8 KiB
TypeScript
100 lines
2.8 KiB
TypeScript
import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core';
|
|
import { MatSidenav } from '@angular/material';
|
|
import { ObservableMedia } from '@angular/flex-layout';
|
|
import { Subscription } from 'rxjs/Subscription';
|
|
import { FuseMatchMedia } from '../../services/match-media.service';
|
|
import { FuseMatSidenavHelperService } from './fuse-mat-sidenav-helper.service';
|
|
|
|
@Directive({
|
|
selector: '[fuseMatSidenavHelper]'
|
|
})
|
|
export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy
|
|
{
|
|
matchMediaSubscription: Subscription;
|
|
|
|
@HostBinding('class.mat-is-locked-open') isLockedOpen = true;
|
|
@HostBinding('class.mat-stop-transition') stopTransition = true;
|
|
|
|
@Input('fuseMatSidenavHelper') id: string;
|
|
@Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string;
|
|
|
|
constructor(
|
|
private fuseMatSidenavService: FuseMatSidenavHelperService,
|
|
private fuseMatchMedia: FuseMatchMedia,
|
|
private observableMedia: ObservableMedia,
|
|
private matSidenav: MatSidenav
|
|
)
|
|
{
|
|
}
|
|
|
|
ngOnInit()
|
|
{
|
|
this.fuseMatSidenavService.setSidenav(this.id, this.matSidenav);
|
|
|
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
|
{
|
|
setTimeout(() => {
|
|
this.isLockedOpen = true;
|
|
this.matSidenav.mode = 'side';
|
|
this.matSidenav.open();
|
|
});
|
|
this.stopTransition = false;
|
|
}
|
|
else
|
|
{
|
|
setTimeout(() => {
|
|
this.isLockedOpen = false;
|
|
this.matSidenav.mode = 'over';
|
|
this.matSidenav.close();
|
|
});
|
|
|
|
setTimeout(() => {
|
|
this.stopTransition = false;
|
|
}, 3000);
|
|
}
|
|
|
|
this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => {
|
|
if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) )
|
|
{
|
|
setTimeout(() => {
|
|
this.isLockedOpen = true;
|
|
this.matSidenav.mode = 'side';
|
|
this.matSidenav.open();
|
|
});
|
|
}
|
|
else
|
|
{
|
|
setTimeout(() => {
|
|
this.isLockedOpen = false;
|
|
this.matSidenav.mode = 'over';
|
|
this.matSidenav.close();
|
|
});
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
ngOnDestroy()
|
|
{
|
|
this.matchMediaSubscription.unsubscribe();
|
|
}
|
|
}
|
|
|
|
@Directive({
|
|
selector: '[fuseMatSidenavToggler]'
|
|
})
|
|
export class FuseMatSidenavTogglerDirective
|
|
{
|
|
@Input('fuseMatSidenavToggler') id;
|
|
|
|
constructor(private fuseMatSidenavService: FuseMatSidenavHelperService)
|
|
{
|
|
}
|
|
|
|
@HostListener('click')
|
|
onClick()
|
|
{
|
|
this.fuseMatSidenavService.getSidenav(this.id).toggle();
|
|
}
|
|
}
|