@inherits MainBase
@implements IDisposable
@if (isMobileMenuOpen)
{
}
@code {
private bool isMenuOpen = false;
private bool isMobileMenuOpen = false;
private string _username { get; set; } = "";
///
/// Close the menu.
///
[JSInvokable]
public void CloseMenu()
{
isMenuOpen = false;
isMobileMenuOpen = false;
StateHasChanged();
}
///
/// Dispose method.
///
public void Dispose()
{
NavigationService.LocationChanged -= LocationChanged;
}
///
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
_username = GetUsername();
NavigationService.LocationChanged += LocationChanged;
}
///
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
await Js.InvokeVoidAsync("window.initTopMenu");
DotNetObjectReference objRef = DotNetObjectReference.Create(this);
await Js.InvokeVoidAsync("window.registerClickOutsideHandler", objRef);
}
}
private void LocationChanged(object? sender, LocationChangedEventArgs e)
{
isMenuOpen = false;
isMobileMenuOpen = false;
StateHasChanged();
}
private void ToggleMenu()
{
isMenuOpen = !isMenuOpen;
}
private void ToggleMobileMenu()
{
isMobileMenuOpen = !isMobileMenuOpen;
}
}