Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/BootstrapBlazor/Components/Layout/Layout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<CascadingValue Value="this" IsFixed="true">
@if (IsAuthenticated)
{
<section @attributes="AdditionalAttributes" class="@ClassString" style="@StyleString">
<section @attributes="AdditionalAttributes" id="@Id" class="@ClassString" style="@StyleString">
@if (Side == null)
{
if (Header != null)
Expand Down Expand Up @@ -79,6 +79,12 @@
@CollapseBarTemplate
}
}
@if (ShowTabInHeader)
{
<div class="tabs tabs-chrome">
@RenderTabHeader()
</div>
}
@Header
</header>;

Expand Down Expand Up @@ -137,7 +143,7 @@
ShowRefreshToolbarButton="ShowRefreshToolbarButton" ShowFullscreenToolbarButton="ShowFullscreenToolbarButton"
RefreshToolbarButtonIcon="@RefreshToolbarButtonIcon" FullscreenToolbarButtonIcon="@FullscreenToolbarButtonIcon"
RefreshToolbarTooltipText="@RefreshToolbarTooltipText" FullscreenToolbarTooltipText="@FullscreenToolbarTooltipText"
OnToolbarRefreshCallback="OnToolbarRefreshCallback"
OnToolbarRefreshCallback="OnToolbarRefreshCallback" Layout="this"
Body="@Main" NotAuthorized="NotAuthorized!" NotFound="NotFound!" NotFoundTabText="@NotFoundTabText">
</Tab>;

Expand Down
21 changes: 20 additions & 1 deletion src/BootstrapBlazor/Components/Layout/Layout.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,12 @@ public partial class Layout : IHandlerException
[Parameter]
public Func<TabItem, Task<bool>>? OnBeforeShowContextMenu { get; set; }

/// <summary>
/// Gets or sets whether show the tab in header. Default is false.
/// </summary>
[Parameter]
public bool ShowTabInHeader { get; set; }

[Inject]
[NotNull]
private NavigationManager? Navigation { get; set; }
Expand Down Expand Up @@ -451,7 +457,8 @@ public partial class Layout : IHandlerException
private IStringLocalizer<Layout>? Localizer { get; set; }

private bool _init;
private Tab _tab = null!;
private Tab? _tab = null;
private ITabHeader? _tabHeader = null;

/// <summary>
/// <inheritdoc/>
Expand Down Expand Up @@ -627,6 +634,18 @@ public virtual Task HandlerException(Exception ex, RenderFragment<Exception> err

private string? GetTargetString() => IsFixedTabHeader ? ".tabs-body" : null;

private RenderFragment RenderTabHeader() => builder =>
{
builder.OpenComponent<LayoutHeader>(0);
builder.AddComponentReferenceCapture(1, instance => _tabHeader = (ITabHeader)instance);
builder.CloseComponent();
};

internal void RegisterTab(Tab tab)
{
tab.TabHeader = _tabHeader;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
Expand Down
37 changes: 37 additions & 0 deletions src/BootstrapBlazor/Components/Layout/LayoutHeader.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License
// See the LICENSE file in the project root for more information.
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone

namespace BootstrapBlazor.Components;

internal class LayoutHeader : IComponent, ITabHeader
{
private RenderHandle _renderHandle;

void IComponent.Attach(RenderHandle renderHandle)
{
_renderHandle = renderHandle;
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <param name="parameters"></param>
/// <returns></returns>
Task IComponent.SetParametersAsync(ParameterView parameters)
{
return Task.CompletedTask;
}

/// <summary>
/// render tab header method.
/// </summary>
public void Render(RenderFragment renderFragment)
{
_renderHandle.Render(builder =>
{
builder.AddContent(0, renderFragment);
});
}
}
18 changes: 18 additions & 0 deletions src/BootstrapBlazor/Components/Tab/ITabHeader.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the Apache 2.0 License
// See the LICENSE file in the project root for more information.
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone

namespace BootstrapBlazor.Components;

/// <summary>
/// ITabHeader interface
/// </summary>
public interface ITabHeader
{
/// <summary>
/// Render method
/// </summary>
/// <param name="renderFragment"></param>
void Render(RenderFragment renderFragment);
}
Loading
Loading