From 2be683b47b410e18c953fb179baa5bf8e2ef0f0e Mon Sep 17 00:00:00 2001 From: Argo-Tianyi Date: Tue, 22 Feb 2022 14:11:33 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Radio=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E9=80=89=E4=B8=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Tree/Tree.razor | 3 +-- src/BootstrapBlazor/Components/Tree/Tree.razor.cs | 15 +++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/BootstrapBlazor/Components/Tree/Tree.razor b/src/BootstrapBlazor/Components/Tree/Tree.razor index de70727ed..31bb14f31 100644 --- a/src/BootstrapBlazor/Components/Tree/Tree.razor +++ b/src/BootstrapBlazor/Components/Tree/Tree.razor @@ -49,8 +49,7 @@ private RenderFragment RenderTreeItem => item => { + OnClick="p => OnRadioClick(item)" State="@Tree.CheckState(item)" /> }
@if (ShowIcon) diff --git a/src/BootstrapBlazor/Components/Tree/Tree.razor.cs b/src/BootstrapBlazor/Components/Tree/Tree.razor.cs index 6abcbe4fc..9e3d797aa 100644 --- a/src/BootstrapBlazor/Components/Tree/Tree.razor.cs +++ b/src/BootstrapBlazor/Components/Tree/Tree.razor.cs @@ -230,20 +230,27 @@ public partial class Tree t.AddRange(item.GetAllSubItems()); return t; }); - await OnTreeItemChecked(checkedItems.Where(i => i.Checked).ToList()); + await OnTreeItemChecked(checkedItems); } } private async Task OnRadioClick(TreeItem item) { - item.CascadeSetCheck(item.Checked); + if (ActiveItem != null) + { + ActiveItem.Checked = false; + } + ActiveItem = item; + ActiveItem.Checked = true; + + // 其他设置为 false if (OnTreeItemChecked != null) { - await OnTreeItemChecked.Invoke(new List { item }); + await OnTreeItemChecked(new List { item }); } } - private CheckboxState CheckState(TreeItem item) + private static CheckboxState CheckState(TreeItem item) { return item.Checked ? CheckboxState.Checked : CheckboxState.UnChecked; } -- Gitee From d0516b2575693a2f886392aff4076fa83de54699 Mon Sep 17 00:00:00 2001 From: Argo-Tianyi Date: Tue, 22 Feb 2022 14:11:45 +0800 Subject: [PATCH 2/4] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=20ShowRadio=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/TreeTest.cs | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/UnitTest/Components/TreeTest.cs b/test/UnitTest/Components/TreeTest.cs index 4ec4b26da..3b319d173 100644 --- a/test/UnitTest/Components/TreeTest.cs +++ b/test/UnitTest/Components/TreeTest.cs @@ -183,4 +183,36 @@ public class TreeTest : BootstrapBlazorTestBase var subs = data.First().GetAllSubItems(); Assert.Equal(2, subs.Count()); } + + [Fact] + public void ShowRadio_Ok() + { + List? checkedLists = null; + var cut = Context.RenderComponent(pb => + { + pb.Add(a => a.ShowRadio, true); + pb.Add(a => a.OnTreeItemChecked, items => + { + checkedLists = items; + return Task.CompletedTask; + }); + pb.Add(a => a.Items, new List() + { + new() { Text = "Test1", Icon = "fa fa-fa" }, + new() { Text = "Test2", Icon = "fa fa-fa" } + }); + }); + cut.Find("[type=\"radio\"]").Click(); + Assert.Single(checkedLists); + Assert.Equal("Test1", checkedLists![0].Text); + + cut.FindAll("[type=\"radio\"]")[1].Click(); + Assert.Equal("Test2", checkedLists![0].Text); + + cut.SetParametersAndRender(pb => + { + pb.Add(a => a.ShowSkeleton, false); + }); + cut.DoesNotContain("type=\"radio\""); + } } -- Gitee From 6173011ba3c9b02822dfe22a8b21f92814008868 Mon Sep 17 00:00:00 2001 From: Argo-Tianyi Date: Tue, 22 Feb 2022 14:18:25 +0800 Subject: [PATCH 3/4] =?UTF-8?q?test:=20=E8=A1=A5=E5=85=A8=20Tree=20?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Tree/TreeItem.cs | 28 +++++++++---------- test/UnitTest/Components/TreeTest.cs | 23 +++++++++++++-- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/BootstrapBlazor/Components/Tree/TreeItem.cs b/src/BootstrapBlazor/Components/Tree/TreeItem.cs index 53080f35d..b86f89961 100644 --- a/src/BootstrapBlazor/Components/Tree/TreeItem.cs +++ b/src/BootstrapBlazor/Components/Tree/TreeItem.cs @@ -67,18 +67,18 @@ public class TreeItem : NodeItem } } - /// - /// 级联设置展开状态方法 - /// - public void CollapseOtherNodes() - { - //if (!string.IsNullOrEmpty(ParentId)) - //{ - // var parent = Items.FirstOrDefault(i => i.Id) - // foreach (var node in Parent.Items.Where(p => p.IsExpanded && p != this)) - // { - // node.IsExpanded = false; - // } - //} - } + ///// + ///// 级联设置展开状态方法 + ///// + //public void CollapseOtherNodes() + //{ + // if (!string.IsNullOrEmpty(ParentId)) + // { + // var parent = Items.FirstOrDefault(i => i.Id) + // foreach (var node in Parent.Items.Where(p => p.IsExpanded && p != this)) + // { + // node.IsExpanded = false; + // } + // } + //} } diff --git a/test/UnitTest/Components/TreeTest.cs b/test/UnitTest/Components/TreeTest.cs index 3b319d173..853a88dc2 100644 --- a/test/UnitTest/Components/TreeTest.cs +++ b/test/UnitTest/Components/TreeTest.cs @@ -96,12 +96,30 @@ public class TreeTest : BootstrapBlazorTestBase }); pb.Add(a => a.Items, new List() { - new TreeItem() { Text = "Test1", Icon = "fa fa-fa", CssClass = "Test-Class" } + new TreeItem() + { + Text = "Test1", + Icon = "fa fa-fa", + CssClass = "Test-Class", + Items = new List() + { + new() + { + Text = "Test1-1", + Items = new List() + { + new() + { + Text = "Test1-1-1" + } + } + } + } + } }); }); cut.InvokeAsync(() => cut.Find("[type=\"checkbox\"]").Click()); - Assert.Single(checkedLists); cut.DoesNotContain("fa fa-fa"); cut.Contains("Test-Class"); @@ -213,6 +231,5 @@ public class TreeTest : BootstrapBlazorTestBase { pb.Add(a => a.ShowSkeleton, false); }); - cut.DoesNotContain("type=\"radio\""); } } -- Gitee From 019b6f0d46a795cdb604a2eed357d8202d5e65a4 Mon Sep 17 00:00:00 2001 From: Argo-Tianyi Date: Tue, 22 Feb 2022 14:19:36 +0800 Subject: [PATCH 4/4] chore: bump version beta01 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 2b0ae939b..ae54977e0 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 6.3.2 + 6.3.3-beta01 -- Gitee