Add TabControl & TabPage
This commit is contained in:
parent
9d4133f78b
commit
e01db29354
43
Oqtane.Client/Themes/Controls/TabControl.razor
Normal file
43
Oqtane.Client/Themes/Controls/TabControl.razor
Normal file
|
@ -0,0 +1,43 @@
|
|||
@namespace Oqtane.Themes.Controls
|
||||
@inherits ThemeControlBase
|
||||
|
||||
<CascadingValue Value="this">
|
||||
<div>
|
||||
@foreach (TabPage tabPage in Pages)
|
||||
{
|
||||
<button type="button"
|
||||
class="btn @GetButtonClass(tabPage)"
|
||||
@onclick=@( () => ActivatePage(tabPage) )>
|
||||
@tabPage.Text
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
@ChildContent
|
||||
</CascadingValue>
|
||||
|
||||
@code {
|
||||
// Next line is needed so we are able to add <TabPage> components inside
|
||||
[Parameter]
|
||||
public RenderFragment ChildContent { get; set; }
|
||||
|
||||
public TabPage ActivePage { get; set; }
|
||||
List<TabPage> Pages = new List<TabPage>();
|
||||
|
||||
internal void AddPage(TabPage tabPage)
|
||||
{
|
||||
Pages.Add(tabPage);
|
||||
if (Pages.Count == 1)
|
||||
ActivePage = tabPage;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
string GetButtonClass(TabPage page)
|
||||
{
|
||||
return page == ActivePage ? "btn-primary" : "btn-secondary";
|
||||
}
|
||||
|
||||
void ActivatePage(TabPage page)
|
||||
{
|
||||
ActivePage = page;
|
||||
}
|
||||
}
|
27
Oqtane.Client/Themes/Controls/TabPage.razor
Normal file
27
Oqtane.Client/Themes/Controls/TabPage.razor
Normal file
|
@ -0,0 +1,27 @@
|
|||
@namespace Oqtane.Themes.Controls
|
||||
@inherits ThemeControlBase
|
||||
|
||||
@if (Parent.ActivePage == (TabPage)(object)this)
|
||||
{
|
||||
@ChildContent
|
||||
}
|
||||
|
||||
@code {
|
||||
[CascadingParameter]
|
||||
private TabControl Parent { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public RenderFragment ChildContent { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string Text { get; set; }
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
if (Parent == null)
|
||||
throw new ArgumentNullException(nameof(Parent), "TabPage must exist within a TabControl");
|
||||
|
||||
base.OnInitialized();
|
||||
Parent.AddPage((TabPage)(object)this);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user