78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import { Component } from '@angular/core';
|
|
import { CommonModule } from '@angular/common';
|
|
import { Router, RouterOutlet } from '@angular/router';
|
|
import { LayoutModule } from '@progress/kendo-angular-layout';
|
|
import { IconsModule } from '@progress/kendo-angular-icons';
|
|
import { SVGIcon, chevronDownIcon, chevronUpIcon } from '@progress/kendo-svg-icons';
|
|
import { DrawerItemExpandedFn, DrawerSelectEvent } from '@progress/kendo-angular-layout';
|
|
import { LayoutService } from '../services/layout.service';
|
|
import { drawerItems } from '../../features/dashboard/models';
|
|
import { FooterComponent } from '../footer/footer.component';
|
|
|
|
@Component({
|
|
selector: 'app-navbar',
|
|
standalone: true,
|
|
imports: [
|
|
CommonModule,
|
|
RouterOutlet,
|
|
LayoutModule,
|
|
IconsModule,
|
|
FooterComponent
|
|
],
|
|
templateUrl: './navbar.component.html',
|
|
styleUrls: ['./navbar.component.scss']
|
|
})
|
|
export class NavbarComponent {
|
|
public chevronUpIcon: SVGIcon = chevronUpIcon;
|
|
public chevronDownIcon: SVGIcon = chevronDownIcon;
|
|
|
|
public drawerItems = drawerItems;
|
|
public selectedDrawerItem = 'Dashboard';
|
|
public expandedItems: Array<number> = [4];
|
|
|
|
constructor(
|
|
private router: Router,
|
|
public layoutService: LayoutService
|
|
) { }
|
|
|
|
public onSelect(ev: DrawerSelectEvent): void {
|
|
this.selectedDrawerItem = ev.item.text;
|
|
const current = ev.item.id;
|
|
|
|
if (this.expandedItems.indexOf(current) >= 0) {
|
|
this.expandedItems = this.expandedItems.filter((id) => id !== current);
|
|
} else {
|
|
this.expandedItems.push(current);
|
|
}
|
|
|
|
// Auto-collapse drawer on mobile after selection
|
|
if (this.layoutService.isMobile()) {
|
|
this.layoutService.closeDrawer();
|
|
}
|
|
|
|
// Navigate based on the selected item
|
|
const routeMap: { [key: string]: string } = {
|
|
'Dashboard': '/dashboard',
|
|
'Schedule': '/schedule',
|
|
'Patients': '/patients',
|
|
'Bed Management': '/bed-management',
|
|
'Staff': '/staff',
|
|
'Pharmacy': '/pharmacy',
|
|
'Reports': '/reports',
|
|
'Departments': '/departments',
|
|
'Payments': '/payments',
|
|
'Support': '/support'
|
|
};
|
|
|
|
const route = routeMap[ev.item.text];
|
|
if (route) {
|
|
this.router.navigate([route]);
|
|
}
|
|
}
|
|
|
|
public isItemExpanded: DrawerItemExpandedFn = (item): boolean => {
|
|
return this.expandedItems.indexOf(item.id) >= 0;
|
|
};
|
|
}
|
|
|