@inject NavigationManager NavManager
@ChildContent
@code {
[CascadingParameter]
public TabControl Parent { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public Action OnActivated { get; set; }
[Parameter]
public string NavigationUri { get; set; }
[Parameter]
public string Name { get; set; }
private string ActiveClass => Parent.ActiveTab == Name ? "active" : "";
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
if (Parent is null)
{
throw new Exception("TabHeader must be contained in a TabControl.");
}
if (!string.IsNullOrWhiteSpace(NavigationUri))
{
OnActivated?.Invoke();
}
}
private void SetActiveTab()
{
if (!string.IsNullOrWhiteSpace(NavigationUri))
{
NavManager.NavigateTo(NavigationUri);
}
else
{
Parent.SetActiveTab(this);
StateHasChanged();
OnActivated?.Invoke();
}
}
}