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