Remotely/Server/Components/TabControl/TabHeader.razor
2021-07-29 07:57:31 -07:00

38 lines
881 B
Plaintext

<li class="nav-item">
<a class="nav-link @ActiveClass" data-toggle="tab" @onclick="SetActiveTab" style="cursor: pointer; user-select: none;">
@ChildContent
</a>
</li>
@code {
[CascadingParameter]
public TabControl Parent { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
[Parameter]
public Action OnActivated { get; set; }
[Parameter]
public string Name { get; set; }
private string ActiveClass => Parent.ActiveTab == Name ? "active" : "";
protected override void OnInitialized()
{
if (Parent is null)
{
throw new Exception("TabHeader must be contained in a TabControl.");
}
base.OnInitialized();
}
private void SetActiveTab()
{
Parent.SetActiveTab(this);
StateHasChanged();
OnActivated?.Invoke();
}
}