Finished the navigation menu

- Added a NavItem component
- Replaced the navbar toggle icon
- Made the navbar tighter
- Fixed the navbar's padding
- Render the nav items dynamically
This commit is contained in:
Thorsten Sommer 2022-08-10 21:05:38 +02:00
parent 458fe0ba88
commit 4b62e5265c
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
5 changed files with 55 additions and 15 deletions

View File

@ -0,0 +1,9 @@
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="@this.Route">
@if (this.ShowIcon)
{
<Icon Filename="@this.IconFilename" Size="25" AltText="@this.AltText" />
}
<span class="ms-1 align-middle">@this.Text</span>
</a>
</li>

View File

@ -0,0 +1,20 @@
using Microsoft.AspNetCore.Components;
namespace UI_MAUI.Components;
public partial class NavItem : ComponentBase
{
[Parameter]
public string Route { get; set; }
[Parameter]
public string Text { get; set; }
[Parameter]
public bool ShowIcon { get; set; } = false;
[Parameter]
public string IconFilename { get; set; } = string.Empty;
private string AltText => $"Navigation: {this.Text}";
}

View File

@ -0,0 +1,15 @@
namespace UI_MAUI;
public readonly record struct NavigationTarget(string Text, string Route, string IconFilename)
{
private static readonly NavigationTarget SETTINGS = new NavigationTarget("Settings", "settings", "settings.svg");
private static readonly NavigationTarget TRANSLATION = new NavigationTarget("Translation", "translation", "translation.svg");
private static readonly NavigationTarget LOAD_PROJECT = new NavigationTarget("Load Project", "load", "load.svg");
public static IEnumerable<NavigationTarget> GetAll()
{
yield return SETTINGS;
yield return LOAD_PROJECT;
yield return TRANSLATION;
}
};

View File

@ -1,25 +1,20 @@
@inherits LayoutComponentBase
<nav class="navbar navbar-dark bg-dark navbar-expand-sm">
<div class="container-fluid">
<div class="navbar-brand">
<nav class="navbar navbar-dark bg-dark navbar-expand-sm p-0">
<div class="container-fluid ps-1">
<div class="navbar-brand p-0">
<Icon Filename="translation.svg" Size="35" AltText="App Icon" />
<span class="fw-bold">I18N</span> <span class="fs-6">Commander</span>
</div>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<button class="navbar-toggler p-0 my-1" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<Icon Filename="nav-toggle.svg" AltText="Toggles menu" Size="35" />
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Index</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Translations</a>
</li>
<ul class="navbar-nav me-auto">
@foreach (var (text, route, iconFilename) in NavigationTarget.GetAll())
{
<NavItem Text="@text" Route="@route" ShowIcon="@(!string.IsNullOrWhiteSpace(iconFilename))" IconFilename="@iconFilename" />
}
</ul>
</div>
</div>

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="512px" height="512px"><path fill="#546E7A" d="M6 14H42V18H6zM6 22H42V26H6zM6 30H42V34H6z"/><path fill="#2196F3" d="M24,45l-7-6.976h14L24,45z"/></svg>

After

Width:  |  Height:  |  Size: 217 B