Seenginx/Seenginx/Shared/NavMenu.razor.cs

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();
}
}
}