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:
parent
458fe0ba88
commit
4b62e5265c
9
I18N Commander/UI MAUI/Components/NavItem.razor
Normal file
9
I18N Commander/UI MAUI/Components/NavItem.razor
Normal 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>
|
20
I18N Commander/UI MAUI/Components/NavItem.razor.cs
Normal file
20
I18N Commander/UI MAUI/Components/NavItem.razor.cs
Normal 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}";
|
||||||
|
}
|
15
I18N Commander/UI MAUI/NavigationTarget.cs
Normal file
15
I18N Commander/UI MAUI/NavigationTarget.cs
Normal 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;
|
||||||
|
}
|
||||||
|
};
|
@ -1,25 +1,20 @@
|
|||||||
@inherits LayoutComponentBase
|
@inherits LayoutComponentBase
|
||||||
|
|
||||||
<nav class="navbar navbar-dark bg-dark navbar-expand-sm">
|
<nav class="navbar navbar-dark bg-dark navbar-expand-sm p-0">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid ps-1">
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand p-0">
|
||||||
<Icon Filename="translation.svg" Size="35" AltText="App Icon" />
|
<Icon Filename="translation.svg" Size="35" AltText="App Icon" />
|
||||||
<span class="fw-bold">I18N</span> <span class="fs-6">Commander</span>
|
<span class="fw-bold">I18N</span> <span class="fs-6">Commander</span>
|
||||||
</div>
|
</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">
|
<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">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<Icon Filename="nav-toggle.svg" AltText="Toggles menu" Size="35" />
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
<ul class="navbar-nav me-auto">
|
||||||
<li class="nav-item">
|
@foreach (var (text, route, iconFilename) in NavigationTarget.GetAll())
|
||||||
<a class="nav-link active" aria-current="page" href="#">Index</a>
|
{
|
||||||
</li>
|
<NavItem Text="@text" Route="@route" ShowIcon="@(!string.IsNullOrWhiteSpace(iconFilename))" IconFilename="@iconFilename" />
|
||||||
<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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
1
I18N Commander/UI MAUI/wwwroot/icons/nav-toggle.svg
Normal file
1
I18N Commander/UI MAUI/wwwroot/icons/nav-toggle.svg
Normal 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 |
Loading…
Reference in New Issue
Block a user