import {
Input,
Output,
EventEmitter,
Component,
OnInit,
OnChanges,
inject,
} 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: `
`,
standalone: false,
})
export class SamAsideToggleComponent implements OnInit, OnChanges {
_pageService = inject(SamPageNextService, { optional: true });
/**
* 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();
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);
}
}