| | | 1 | | @using Microsoft.AspNetCore.Components |
| | | 2 | | @using Pomodoro.Web.Models |
| | | 3 | | |
| | | 4 | | <div class="history-tabs" role="tablist"> |
| | | 5 | | <button class="history-tab @(ActiveTab == HistoryTab.Daily ? Constants.UI.HistoryTabActiveClass : "")" |
| | | 6 | | @onclick="OnDailyTabClick" |
| | | 7 | | @onkeydown="OnKeyDown" |
| | | 8 | | aria-selected="@(ActiveTab == HistoryTab.Daily ? "true" : "false")" |
| | | 9 | | role="tab" |
| | | 10 | | tabindex="@(ActiveTab == HistoryTab.Daily ? "0" : "-1")" |
| | | 11 | | id="daily-tab"> |
| | 124 | 12 | | @Constants.History.DailyTabLabel |
| | | 13 | | </button> |
| | | 14 | | <button class="history-tab @(ActiveTab == HistoryTab.Weekly ? Constants.UI.HistoryTabActiveClass : "")" |
| | | 15 | | @onclick="OnWeeklyTabClick" |
| | | 16 | | @onkeydown="OnKeyDown" |
| | | 17 | | aria-selected="@(ActiveTab == HistoryTab.Weekly ? "true" : "false")" |
| | | 18 | | role="tab" |
| | | 19 | | tabindex="@(ActiveTab == HistoryTab.Weekly ? "0" : "-1")" |
| | | 20 | | id="weekly-tab"> |
| | 124 | 21 | | @Constants.History.WeeklyTabLabel |
| | | 22 | | </button> |
| | | 23 | | </div> |
| | | 24 | | |
| | | 25 | | @code { |
| | | 26 | | [Parameter] |
| | 881 | 27 | | public HistoryTab ActiveTab { get; set; } |
| | | 28 | | |
| | | 29 | | [Parameter] |
| | 116 | 30 | | public EventCallback<HistoryTab> OnTabChanged { get; set; } |
| | | 31 | | |
| | | 32 | | protected void OnDailyTabClick() |
| | 3 | 33 | | { |
| | 3 | 34 | | if (ActiveTab != HistoryTab.Daily) |
| | 2 | 35 | | { |
| | 2 | 36 | | ActiveTab = HistoryTab.Daily; |
| | 2 | 37 | | OnTabChanged.InvokeAsync(HistoryTab.Daily); |
| | 2 | 38 | | } |
| | 3 | 39 | | } |
| | | 40 | | |
| | | 41 | | protected void OnWeeklyTabClick() |
| | 4 | 42 | | { |
| | 4 | 43 | | if (ActiveTab != HistoryTab.Weekly) |
| | 4 | 44 | | { |
| | 4 | 45 | | ActiveTab = HistoryTab.Weekly; |
| | 4 | 46 | | OnTabChanged.InvokeAsync(HistoryTab.Weekly); |
| | 4 | 47 | | } |
| | 4 | 48 | | } |
| | | 49 | | |
| | | 50 | | protected async Task OnKeyDown(KeyboardEventArgs e) |
| | 3 | 51 | | { |
| | 3 | 52 | | if (e.Key == Constants.Keys.ArrowLeft || e.Key == Constants.Keys.ArrowRight) |
| | 2 | 53 | | { |
| | | 54 | | // Switch to the other tab |
| | 2 | 55 | | var newTab = ActiveTab == HistoryTab.Daily ? HistoryTab.Weekly : HistoryTab.Daily; |
| | | 56 | | |
| | 2 | 57 | | if (ActiveTab != newTab) |
| | 2 | 58 | | { |
| | 2 | 59 | | ActiveTab = newTab; |
| | 2 | 60 | | await OnTabChanged.InvokeAsync(newTab); |
| | 2 | 61 | | } |
| | 2 | 62 | | } |
| | 3 | 63 | | } |
| | | 64 | | } |