@@ -423,10 +423,10 @@ public partial class Tab : IHandlerException
423423 /// Gets or sets the <see cref="ITabHeader"/> instance. Default is null.
424424 /// </summary>
425425 [ Parameter ]
426- public Layout ? Layout { get ; set ; }
426+ public ITabHeader ? TabHeader { get ; set ; }
427427
428428 [ CascadingParameter ]
429- private Layout ? CascadeLayout { get ; set ; }
429+ private Layout ? Layout { get ; set ; }
430430
431431 [ Inject ]
432432 [ NotNull ]
@@ -471,8 +471,6 @@ public partial class Tab : IHandlerException
471471
472472 private bool IsPreventDefault => _contextMenuZone != null ;
473473
474- internal ITabHeader ? TabHeader { get ; set ; }
475-
476474 /// <summary>
477475 /// <inheritdoc/>
478476 /// </summary>
@@ -494,15 +492,6 @@ protected override void OnParametersSet()
494492 IsBorderCard = true ;
495493 }
496494
497- if ( Layout is { ShowTabInHeader : true } )
498- {
499- Layout . RegisterTab ( this ) ;
500- }
501- else
502- {
503- TabHeader = null ;
504- }
505-
506495 CloseOtherTabsText ??= Localizer [ nameof ( CloseOtherTabsText ) ] ;
507496 CloseAllTabsText ??= Localizer [ nameof ( CloseAllTabsText ) ] ;
508497 CloseCurrentTabText ??= Localizer [ nameof ( CloseCurrentTabText ) ] ;
@@ -584,9 +573,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
584573 /// <inheritdoc/>
585574 /// </summary>
586575 /// <returns></returns>
587- protected override Task InvokeInitAsync ( ) => InvokeVoidAsync ( "init" , Id , Interop , nameof ( DragItemCallback ) , LayoutId ) ;
588-
589- private string ? LayoutId => Layout is { ShowTabInHeader : true } ? Layout . Id : null ;
576+ protected override Task InvokeInitAsync ( ) => InvokeVoidAsync ( "init" , Id , Interop , nameof ( DragItemCallback ) ) ;
590577
591578 private void RemoveLocationChanged ( )
592579 {
@@ -798,8 +785,6 @@ public void AddTab(string url, string text, string? icon = null, bool active = t
798785 StateHasChanged ( ) ;
799786 }
800787
801- private Layout ? LayoutInstance => Layout ?? CascadeLayout ;
802-
803788 private void AddTabItem ( string url )
804789 {
805790 var parameters = new Dictionary < string , object ? >
@@ -837,7 +822,7 @@ private void AddTabItem(string url)
837822 builder . AddAttribute ( 1 , nameof ( BootstrapBlazorAuthorizeView . Type ) , context . Handler ) ;
838823 builder . AddAttribute ( 2 , nameof ( BootstrapBlazorAuthorizeView . Parameters ) , context . Parameters ) ;
839824 builder . AddAttribute ( 3 , nameof ( BootstrapBlazorAuthorizeView . NotAuthorized ) , NotAuthorized ) ;
840- builder . AddAttribute ( 4 , nameof ( BootstrapBlazorAuthorizeView . Resource ) , LayoutInstance ? . Resource ) ;
825+ builder . AddAttribute ( 4 , nameof ( BootstrapBlazorAuthorizeView . Resource ) , Layout ? . Resource ) ;
841826 builder . CloseComponent ( ) ;
842827 } ) ) ;
843828 }
@@ -1019,7 +1004,7 @@ private RenderFragment RenderTabItemContent(TabItem item) => builder =>
10191004 private IEnumerable < MenuItem > ? _menuItems ;
10201005 private MenuItem ? GetMenuItem ( string url )
10211006 {
1022- _menuItems ??= ( Menus ?? LayoutInstance ? . Menus ) . GetAllItems ( ) ;
1007+ _menuItems ??= ( Menus ?? Layout ? . Menus ) . GetAllItems ( ) ;
10231008 return _menuItems ? . FirstOrDefault ( i => ! string . IsNullOrEmpty ( i . Url ) && ( i . Url . TrimStart ( '/' ) . Equals ( url . TrimStart ( '/' ) , StringComparison . OrdinalIgnoreCase ) ) ) ;
10241009 }
10251010
@@ -1188,30 +1173,36 @@ private RenderFragment RenderContextMenuZoneContent() => builder =>
11881173
11891174 private RenderFragment RenderTabItems ( ) => builder =>
11901175 {
1191- for ( var index = 0 ; index < _items . Count ; index ++ )
1176+ foreach ( var item in Items )
11921177 {
1193- var item = _items [ index ] ;
1194- var sequence = ( index + 1 ) * 100 ;
11951178 if ( item . HeaderTemplate != null )
11961179 {
1197- builder . OpenElement ( sequence , "div" ) ;
1180+ builder . OpenElement ( 0 , "div" ) ;
11981181 builder . SetKey ( item ) ;
1199- builder . AddAttribute ( sequence + 10 , "class" , GetItemWrapClassString ( item ) ) ;
1200- builder . AddAttribute ( sequence + 20 , "draggable" , DraggableString ) ;
1201- builder . AddContent ( sequence + 30 , item . HeaderTemplate ( item ) ) ;
1182+ builder . AddAttribute ( 10 , "class" , GetItemWrapClassString ( item ) ) ;
1183+ builder . AddAttribute ( 20 , "draggable" , DraggableString ) ;
1184+ builder . AddContent ( 30 , item . HeaderTemplate ( item ) ) ;
12021185 builder . CloseElement ( ) ;
12031186 }
12041187 else if ( item . IsDisabled )
12051188 {
1206- builder . AddContent ( sequence + 40 , RenderDisabledHeaderItem ( item ) ) ;
1189+ builder . AddContent ( 40 , RenderDisabledHeaderItem ( item ) ) ;
12071190 }
12081191 else
12091192 {
1210- builder . AddContent ( sequence + 50 , RenderHeaderItem ( item ) ) ;
1193+ builder . AddContent ( 50 , RenderHeaderItem ( item ) ) ;
12111194 }
12121195 }
12131196 } ;
12141197
1198+ /// <summary>
1199+ /// Sets the <see cref="ITabHeader"/> instance.
1200+ /// </summary>
1201+ /// <param name="tabHeader"></param>
1202+ public void SetTabHeader ( ITabHeader tabHeader ) => TabHeader = tabHeader ;
1203+
1204+ private string ? HeaderId => TabHeader ? . GetId ( ) ;
1205+
12151206 /// <summary>
12161207 /// <inheritdoc/>
12171208 /// </summary>
0 commit comments