@inherits AliasVault.Client.Main.Pages.MainBase
@implements IDisposable
@code {
private bool IsUserMenuOpen { get; set; } = false;
private bool IsMobileMenuOpen { get; set; } = false;
private string Username { get; set; } = string.Empty;
///
/// Close the menu.
///
[JSInvokable]
public void CloseUserMenu()
{
IsUserMenuOpen = false;
StateHasChanged();
}
///
/// Close the menu.
///
[JSInvokable]
public void CloseMobileMenu()
{
IsMobileMenuOpen = false;
StateHasChanged();
}
///
/// Dispose method.
///
public void Dispose()
{
NavigationManager.LocationChanged -= LocationChanged;
}
///
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
Username = await GetUsernameAsync();
NavigationManager.LocationChanged += LocationChanged;
}
///
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
await JsInteropService.InitTopMenu();
DotNetObjectReference objRef = DotNetObjectReference.Create(this);
await JsInteropService.TopMenuClickOutsideHandler(objRef);
}
}
private void LocationChanged(object? sender, LocationChangedEventArgs e)
{
IsUserMenuOpen = false;
IsMobileMenuOpen = false;
StateHasChanged();
}
private void ToggleUserMenu()
{
IsUserMenuOpen = !IsUserMenuOpen;
StateHasChanged();
}
private void ToggleMobileMenu()
{
IsMobileMenuOpen = !IsMobileMenuOpen;
StateHasChanged();
}
}