diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 4314063f1c69c5da48a252b0b9a126eb28dc50c0..889913c10ce5fa09118a2bd78e19b98d7bcc33c6 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 6.10.5 + 6.10.6 diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor index 92a5f7ee1c05e677b84a3f13988b6d804c6d6e83..bcddaafad62eb5731a821b8d80da57d1ae037706 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor @@ -13,9 +13,9 @@
@foreach (var group in groups) { - if (group.Template != null) + if (group.Component != null || group.Template != null) { - @group.Template + @RenderTemplate(group) } else { diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.cs b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.cs index 4a632caab3d3b3186ca9977aedcb902bbb12854e..4163812cbbc5356bf2325fae8bbeb7ae666b95f1 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.cs +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTab.razor.cs @@ -143,6 +143,8 @@ public partial class RibbonTab : IDisposable } } + private static RenderFragment? RenderTemplate(RibbonTabItem item) => item.Component?.Render() ?? item.Template; + /// /// Dispose 方法 /// diff --git a/src/BootstrapBlazor/Components/RibbonTab/RibbonTabItem.cs b/src/BootstrapBlazor/Components/RibbonTab/RibbonTabItem.cs index 4d53ed4a39d127eb91991ab9b074be8043afe8ca..bf780716c724a22ee6f4719059513027327d5333 100644 --- a/src/BootstrapBlazor/Components/RibbonTab/RibbonTabItem.cs +++ b/src/BootstrapBlazor/Components/RibbonTab/RibbonTabItem.cs @@ -23,4 +23,9 @@ public class RibbonTabItem : MenuItem /// 获得/设置 按钮标识 /// public string? Command { get; set; } + + /// + /// 获得/设置 动态组件实例 + /// + public BootstrapDynamicComponent? Component { get; set; } } diff --git a/test/UnitTest/Components/RibbonTabTest.cs b/test/UnitTest/Components/RibbonTabTest.cs index e66d8aa5bae15b469679844e1cc8d6901cc368ef..357915834dc3157505f0c99be6c6ee5f93c74689 100644 --- a/test/UnitTest/Components/RibbonTabTest.cs +++ b/test/UnitTest/Components/RibbonTabTest.cs @@ -2,6 +2,8 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Website: https://www.blazor.zone or https://argozhang.github.io/ +using Microsoft.AspNetCore.Components.Rendering; + namespace UnitTest.Components; public class RibbonTabTest : BootstrapBlazorTestBase @@ -118,6 +120,30 @@ public class RibbonTabTest : BootstrapBlazorTestBase Assert.Contains("Test-Template", cut.Markup); } + [Fact] + public void RibbonTabItem_Component() + { + var cut = Context.RenderComponent(pb => + { + pb.Add(a => a.Items, new RibbonTabItem[] + { + new RibbonTabItem() + { + Text = "test", + Items = new RibbonTabItem[] + { + new RibbonTabItem() + { + Text = "Item", + Component = BootstrapDynamicComponent.CreateComponent() + } + } + } + }); + }); + Assert.Contains("Test-Template", cut.Markup); + } + private static IEnumerable GetItems() => new List() { new() @@ -147,4 +173,12 @@ public class RibbonTabTest : BootstrapBlazorTestBase } } }; + + class MockCom : ComponentBase + { + protected override void BuildRenderTree(RenderTreeBuilder builder) + { + builder.AddContent(0, "Test-Template"); + } + } }