Files
EarthborneTrailerblazer/ET/Web/Layout/NavMenu.razor
T
2026-06-10 21:46:16 -04:00

67 lines
2.1 KiB
Plaintext

@inject Web.Services.DocsService DocsService
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">Web</a>
<button title="Navigation menu" class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</div>
<div class="@NavMenuCssClass nav-scrollable" @onclick="ToggleNavMenu">
<nav class="nav flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="weather">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
</NavLink>
</div>
<div class="nav-item px-3 nav-section-header">Documentation</div>
@if (notes == null)
{
<div class="nav-item px-3"><span class="nav-link text-secondary">Loading...</span></div>
}
else
{
@foreach (var note in notes)
{
<div class="nav-item px-3 nav-item-doc">
<NavLink class="nav-link" href="@($"docs/{note.Slug}")">
@note.Title
</NavLink>
</div>
}
}
</nav>
</div>
@code {
private bool collapseNavMenu = true;
private List<Web.Models.NoteInfo>? notes;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
protected override async Task OnInitializedAsync()
{
var index = await DocsService.GetIndexAsync();
notes = index.Notes.OrderBy(n => n.Title).ToList();
}
}