import { Component, Input } from '@angular/core';
import { MenuItem } from './menu.model';
import { NgClass, NgForOf, NgIf } from '@angular/common';
import { RouterLink, RouterLinkActive } from '@angular/router';
import {
animate,
state,
style,
transition,
trigger,
} from '@angular/animations';
@Component({
selector: 'bgui-sublevel-menu',
standalone: true,
imports: [NgIf, NgForOf, NgClass, RouterLink, RouterLinkActive],
template: `
0"
[@submenu]="
expanded
? {
value: 'visible',
params: {
transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)',
height: '*'
}
}
: {
value: 'hidden',
params: {
transitionParams: '400ms cubic-bezier(0.86, 0, 0.07, 1)',
height: '0'
}
}
"
class="nk-menu-sub">
-
0">
`,
styleUrls: ['./sidebar.component.scss'],
animations: [
trigger('submenu', [
state(
'hidden',
style({
height: '0',
overflow: 'hidden',
})
),
state(
'visible',
style({
height: '*',
})
),
transition('visible <=> hidden', [
style({ overflow: 'hidden' }),
animate('{{transitionParams}}'),
transition('void => *', animate(0)),
]),
]),
],
})
export class SublevelMenuComponent {
@Input() data: MenuItem = {
routeLink: '',
icon: '',
label: '',
items: [],
};
@Input() collapsed = false;
@Input() animating: boolean | undefined;
@Input() expanded: boolean | undefined;
@Input() multiple: boolean = false;
handleClick(item: any): void {
if (!this.multiple) {
if (this.data.items && this.data.items.length > 0) {
for (const modelItem of this.data.items) {
if (item !== modelItem && modelItem.expanded) {
modelItem.expanded = false;
}
}
}
}
item.expanded = !item.expanded;
}
}