Exemplo n.º 1
0
 public virtual void RemoveTab(ITab tab)
 {
     if (tabs.Contains(tab))
     {
         tabs.Remove(tab);
         OnTabRemoved?.Invoke(tab);
     }
 }
Exemplo n.º 2
0
        /// <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();
        }