public virtual void RemoveTab(ITab tab) { if (tabs.Contains(tab)) { tabs.Remove(tab); OnTabRemoved?.Invoke(tab); } }
/// <summary> /// Closes tab. /// </summary> /// <param name="tab"></param> public async Task CloseTabAsync(XTab tab) { if (CannotCloseLastTab()) { return; } var nextSelected = Active; if (Active == tab && _tabContent.Count > 1) { for (int i = 0; i < _tabContent.Count; i++) { if (i > 0 && _tabContent[i] == Active) { nextSelected = _tabContent[i - 1]; } if (i > 0 && _tabContent[i - 1] == Active) { nextSelected = _tabContent[i]; } } } _tabContent.Remove(tab); if (OnTabRemoved.HasDelegate) { await OnTabRemoved.InvokeAsync(tab); } await SetActiveAsync(nextSelected); if (_tabContent.Count == 0 && NoTabsNavigatesToHomepage) { _navigationManager.NavigateTo(""); } await NotifyStateHasChangedAsync(); }