Skip to content

Commit cbf1b52

Browse files
authored
Tabs - get active tab #813 (#817)
1 parent 993619e commit cbf1b52

File tree

4 files changed

+46
-21
lines changed

4 files changed

+46
-21
lines changed

BlazorBootstrap.Demo.RCL/Components/Pages/Tabs/Tabs_Demo_10_Events_Example.razor

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
<Tabs EnableFadeEffect="true"
2-
OnShowing="@(args => OnTabShowingAsync(args))"
2+
OnShowing="@(args => OnTabShowingAsync(args))"
33
OnShown="@(args => OnTabShownAsync(args))"
44
OnHiding="@(args => OnTabHidingAsync(args))"
55
OnHidden="@(args => OnTabHiddenAsync(args))">
6-
<Tab Title="Home" Active="true">
6+
<Tab Title="Home" Name="HomeTab" Active="true">
77
<Content>
88
<p class="mt-3">This is the placeholder content for the <b>Home</b> tab.</p>
99
</Content>
1010
</Tab>
11-
<Tab Title="Profile">
11+
<Tab Title="Profile" Name="ProfileTab">
1212
<Content>
1313
<p class="mt-3">This is the placeholder content for the <b>Profile</b> tab.</p>
1414
</Content>
1515
</Tab>
16-
<Tab Title="Contact">
16+
<Tab Title="Contact" Name="ContactTab">
1717
<Content>
1818
<p class="mt-3">This is the placeholder content for the <b>Contact</b> tab.</p>
1919
</Content>
2020
</Tab>
2121
</Tabs>
2222

23-
<p>Current Active Tab: <strong>@activeTabTitle</strong></p>
24-
<p>Previous Active Tab: <strong>@previousActiveTabTitle</strong></p>
23+
<p>Current Active Tab Name: <strong>@activeTabName</strong></p>
24+
<p>Current Active Tab Title: <strong>@activeTabTitle</strong></p>
25+
<p>Previous Active Tab Name: <strong>@previousActiveTabName</strong></p>
26+
<p>Previous Active Tab Title: <strong>@previousActiveTabTitle</strong></p>
2527

2628
@code {
29+
private string? activeTabName;
2730
private string? activeTabTitle;
31+
private string? previousActiveTabName;
2832
private string? previousActiveTabTitle;
2933

3034
private void OnTabShowingAsync(TabsEventArgs args)
@@ -35,7 +39,9 @@ OnShowing="@(args => OnTabShowingAsync(args))"
3539

3640
private void OnTabShownAsync(TabsEventArgs args)
3741
{
42+
activeTabName = args.ActiveTabName;
3843
activeTabTitle = args.ActiveTabTitle;
44+
previousActiveTabName = args.PreviousActiveTabName;
3945
previousActiveTabTitle = args.PreviousActiveTabTitle;
4046
}
4147

blazorbootstrap/Components/Tabs/Tabs.razor.cs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,43 +69,49 @@ protected override async Task OnInitializedAsync()
6969
[JSInvokable]
7070
public async Task bsHiddenTab(string activeTabId, string previousActiveTabId)
7171
{
72-
var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title;
73-
var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title;
72+
var activeTab = tabs?.FirstOrDefault(x => x.Id == activeTabId);
73+
var previousActiveTab = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId);
7474

75-
var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!);
75+
var args = new TabsEventArgs(activeTab?.Name!, activeTab?.Title!, previousActiveTab?.Name!, previousActiveTab?.Title!);
7676
await OnHidden.InvokeAsync(args);
7777
}
7878

7979
[JSInvokable]
8080
public async Task bsHideTab(string activeTabId, string previousActiveTabId)
8181
{
82-
var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title;
83-
var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title;
82+
var activeTab = tabs?.FirstOrDefault(x => x.Id == activeTabId);
83+
var previousActiveTab = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId);
8484

85-
var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!);
85+
var args = new TabsEventArgs(activeTab?.Name!, activeTab?.Title!, previousActiveTab?.Name!, previousActiveTab?.Title!);
8686
await OnHiding.InvokeAsync(args);
8787
}
8888

8989
[JSInvokable]
9090
public async Task bsShownTab(string activeTabId, string previousActiveTabId)
9191
{
92-
var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title;
93-
var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title;
92+
var activeTab = tabs?.FirstOrDefault(x => x.Id == activeTabId);
93+
var previousActiveTab = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId);
9494

95-
var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!);
95+
var args = new TabsEventArgs(activeTab?.Name!, activeTab?.Title!, previousActiveTab?.Name!, previousActiveTab?.Title!);
9696
await OnShown.InvokeAsync(args);
9797
}
9898

9999
[JSInvokable]
100100
public async Task bsShowTab(string activeTabId, string previousActiveTabId)
101101
{
102-
var activeTabTitle = tabs?.FirstOrDefault(x => x.Id == activeTabId)?.Title;
103-
var previousActiveTabTitle = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId)?.Title;
102+
var activeTab = tabs?.FirstOrDefault(x => x.Id == activeTabId);
103+
var previousActiveTab = tabs?.FirstOrDefault(x => x.Id == previousActiveTabId);
104104

105-
var args = new TabsEventArgs(activeTabTitle!, previousActiveTabTitle!);
105+
var args = new TabsEventArgs(activeTab?.Name!, activeTab?.Title!, previousActiveTab?.Name!, previousActiveTab?.Title!);
106106
await OnShowing.InvokeAsync(args);
107107
}
108108

109+
/// <summary>
110+
/// Gets the active tab.
111+
/// </summary>
112+
/// <returns>Returns the cuurent active <see cref="Tab"/>.</returns>
113+
public Tab GetActiveTab() => activeTab;
114+
109115
/// <summary>
110116
/// Initializes the most recently added tab, optionally displaying it.
111117
/// </summary>

blazorbootstrap/EventArguments/Tabs/TabsEventArgs.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ public class TabsEventArgs : EventArgs
44
{
55
#region Constructors
66

7-
public TabsEventArgs(string activeTabTitle, string previousActiveTabTitle)
7+
public TabsEventArgs(string activeTabName, string activeTabTitle, string previousActiveTabName, string previousActiveTabTitle)
88
{
9+
ActiveTabName = activeTabName;
910
ActiveTabTitle = activeTabTitle;
11+
PreviousActiveTabName = previousActiveTabName;
1012
PreviousActiveTabTitle = previousActiveTabTitle;
1113
}
1214

@@ -15,12 +17,22 @@ public TabsEventArgs(string activeTabTitle, string previousActiveTabTitle)
1517
#region Properties, Indexers
1618

1719
/// <summary>
18-
/// Gets the active tab title.
20+
/// Gets the active <see cref="Tab" /> name.
21+
/// </summary>
22+
public string ActiveTabName { get; }
23+
24+
/// <summary>
25+
/// Gets the active <see cref="Tab" /> title.
1926
/// </summary>
2027
public string ActiveTabTitle { get; }
2128

2229
/// <summary>
23-
/// Gets the previous active tab title.
30+
/// Gets the previous active <see cref="Tab" /> name.
31+
/// </summary>
32+
public string PreviousActiveTabName { get; }
33+
34+
/// <summary>
35+
/// Gets the previous active <see cref="Tab" /> title.
2436
/// </summary>
2537
public string PreviousActiveTabTitle { get; }
2638

docs/docs/05-components/tabs.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Documentation and examples for using Blazor Bootstrap Tabs components.
2727

2828
| Name | Description | Added Version |
2929
|:--|:--|:--|
30+
| GetActiveTab() | Gets the active tab. | 3.0.0 |
3031
| InitializeRecentTab(bool showTab) | Initializes the most recently added tab, optionally displaying it. | 1.11.0 |
3132
| RemoveTabByIndex(int tabIndex) | Removes the tab by index. | 2.2.0 |
3233
| RemoveTabByName(string tabName) | Removes the tab by name. | 2.2.0 |

0 commit comments

Comments
 (0)