-
-
Notifications
You must be signed in to change notification settings - Fork 93
Expand file tree
/
Copy pathNavMenu.razor
More file actions
117 lines (103 loc) · 4.67 KB
/
Copy pathNavMenu.razor
File metadata and controls
117 lines (103 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
@using LinkDotNet.Blog.Web.Features.SupportMe.Components
@using LinkDotNet.Blog.Web.Features.TagDiscovery
@inject IOptions<ApplicationConfiguration> Configuration
@inject IOptions<SupportMeConfiguration> SupportConfiguration
@inject NavigationManager NavigationManager
@implements IDisposable
<nav class="navbar navbar-expand-lg navbar-light w-100">
<div class="container-fluid">
@if (!string.IsNullOrEmpty(Configuration.Value.BlogBrandUrl))
{
<a class="nav-brand ms-5" href="/">
<img style="max-height: 70px; width: 70px; height: 70px;"
src="@Configuration.Value.BlogBrandUrl.ToAbsoluteUrl(NavigationManager.BaseUri)"
alt="brand" />
</a>
}
else
{
<a class="nav-brand barcode ms-5" href="/">@Configuration.Value.BlogName</a>
}
<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>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ms-auto mb-2 mb-lg-0 me-5 column-gap-4">
<li><a class="nav-link" href="/"><i class="home"></i> Home</a></li>
<li><a class="nav-link" href="/archive"><i class="books"></i> Archive</a></li>
<li><a class="nav-link" href="/bookmarks"><i class="bookmark"></i> Bookmarks</a>
</li>
@if (Configuration.Value.IsAboutMeEnabled)
{
<li class="nav-item">
<a class="nav-link" href="AboutMe">
<i class="profile"></i> About me
</a>
</li>
}
@if (SupportConfiguration.Value.ShowSupportMePage)
{
<li class="nav-item">
<a class="nav-link" href="SupportMe">
<i class="coin-dollar"></i> Support me
</a>
</li>
}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="rssDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="RSS Selector">
<i class="rss2"></i> RSS
</a>
<ul class="dropdown-menu" aria-labelledby="rssDropdown">
<li><a class="dropdown-item" href="/feed.rss" target="_blank" aria-label="RSS with All Posts">All Posts (Summary)</a></li>
<li><a class="dropdown-item" href="/feed.rss?withContent=true" target="_blank" aria-label="RSS with Full Content">Most Recent Posts (Full Content)</a></li>
</ul>
</li>
<AccessControl CurrentUri="@currentUri"></AccessControl>
<li class="nav-item d-flex align-items-center"><ThemeToggler Class="nav-link"></ThemeToggler></li>
@if (Configuration.Value.EnableTagDiscoveryPanel)
{
<li class="nav-item d-flex align-items-center me-lg-2 mb-2 mb-lg-0">
<a class="nav-link d-flex align-items-center justify-content-center" @onclick="ToggleTagDiscoveryPanel"
style="font-family: 'icons'; font-weight: 900; cursor: pointer;"
title="Discover new topics">  </a>
</li>
}
<li class="d-flex">
<SearchInput SearchEntered="NavigateToSearchPage"></SearchInput>
</li>
</ul>
</div>
</div>
</nav>
<TagDiscoveryPanel IsOpen="@_isOpen" OnClose="CloseTagDiscoveryPanel" />
@code {
private string currentUri = string.Empty;
private bool _isOpen;
protected override void OnInitialized()
{
NavigationManager.LocationChanged += UpdateUri;
currentUri = NavigationManager.Uri;
}
private void NavigateToSearchPage(string searchTerm)
{
var escapeDataString = Uri.EscapeDataString(searchTerm);
NavigationManager.NavigateTo($"search/{escapeDataString}");
}
public void Dispose()
{
NavigationManager.LocationChanged -= UpdateUri;
}
private void UpdateUri(object? sender, LocationChangedEventArgs e)
{
currentUri = e.Location;
StateHasChanged();
}
private void ToggleTagDiscoveryPanel()
{
_isOpen = !_isOpen;
}
private void CloseTagDiscoveryPanel()
{
_isOpen = false;
}
}