50 lines
1.2 KiB
C#
50 lines
1.2 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Seenginx.Shared
|
|
{
|
|
public class NavMenuBase : ComponentBase
|
|
{
|
|
protected Dictionary<string, string> ActiveNav { get; set; }
|
|
public bool CollapsePanel { get; set; } = false;
|
|
[Parameter]
|
|
public string MenuActiveClass { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback<string> MenuActiveClassChanged { get; set; }
|
|
|
|
protected async override Task OnInitializedAsync()
|
|
{
|
|
ActiveNav = new Dictionary<string, string>
|
|
{
|
|
{ "nginx", null },
|
|
{ "nginx/logs", null },
|
|
{ "systemd", null },
|
|
{ "systemd/logs", null },
|
|
{ "dmesg", null }
|
|
};
|
|
await base.OnInitializedAsync();
|
|
}
|
|
|
|
protected void SelectMenuItem(string menuItem)
|
|
{
|
|
foreach (var key in ActiveNav.Keys.ToArray())
|
|
ActiveNav[key] = null;
|
|
|
|
ActiveNav[menuItem] = "is-active";
|
|
}
|
|
|
|
protected async Task ToggleMenu()
|
|
{
|
|
CollapsePanel = !CollapsePanel;
|
|
MenuActiveClass = CollapsePanel ? "active" : null;
|
|
|
|
await MenuActiveClassChanged.InvokeAsync(MenuActiveClass);
|
|
StateHasChanged();
|
|
}
|
|
}
|
|
}
|