import {
Input,
Output,
EventEmitter,
Component,
Optional
} from '@angular/core';
import { MdSidenav } from '../../experimental/patterns/layout/components/sidenav';
import { ToolbarItem } from '../../experimental/actions-list';
import { SamPageNextService } from '../../experimental/patterns/layout/architecture';
@Component({
selector: 'sam-aside-toggle',
template: `
`
})
export class SamAsideToggleComponent {
/**
* Shows/hides the toggle button
*/
@Input() showToggle = true;
/**
* Passes in the sidenav component the toggle button controls
*/
@Input() public sidenav: MdSidenav;
/**
* The content model for button
*/
@Input() public contentModel: ToolbarItem = {
label: 'Toggle',
icon: 'fa-chevron-circle-left',
disabled: false
}
/**
* The event emitter for toggle events
*/
@Output() public toggle = new EventEmitter();
constructor(@Optional() public _pageService: SamPageNextService){ }
ngOnInit(){
if(this._pageService){
this._pageService.getPageMessage().subscribe((data)=>{
if(this.sidenav && data && data.event && data.event === 'open sidebar'){
this.showToggle = true;
}
});
}
}
ngOnChanges(c){
if(c.showToggle && this.sidenav && this.showToggle){
this.sidenav.toggle(true);
}
}
public ariaLabel = 'Toggle '
public handleClick (): void {
if (this.sidenav) {
this.sidenav.toggle();
}
this.toggle.emit(this.contentModel);
}
}