multi-project/projects/app/_modules/pages/menu/item/pages-menu-item.component.ts

62 lines
1.3 KiB
TypeScript

import {Component, EventEmitter, Input, Output,OnInit} from '@angular/core';
import { Router} from '@angular/router';
import {Subscription} from 'rxjs';
@Component({
selector: 'pages-menu-item',
templateUrl: 'pages-menu-item.component.html',
styleUrls: ['pages-menu-item.component.scss', '../pages-menu.component.scss']
})
export class PagesMenuItemComponent {
@Input() item: any;
@Input() level: number;
public toggle=false;
currentURL:string;
constructor(private router: Router) {
}
get children() {
return this.item?.children?.data;
}
ngOnInit(){
this.currentURL = this.router.url;
this.toggle = this.current||this.parent;
this.router.events.subscribe((event:any)=>{
if (event.url){
this.currentURL = event.url;
this.toggle = this.current||this.parent;
}
})
}
get parent(){
return this.currentURL.startsWith(this.item.link)
}
get current(){
return this.currentURL==this.item.link
}
get menuClass(){
let menuClass = {
selected: this.toggle
}
menuClass['level-'+(this.level+1)] = true;
return menuClass
}
get itemClass(){
let itemClass = {
selected: this.toggle,
parent: this.parent&&!this.current,
current: this.current
}
itemClass['level-'+(this.level+1)] = true;
return itemClass
}
}