diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 635039d2cd0e0706b1f34a81d0d179ba9f9ea639..59140ae75657e29cbabcae88411dadee62cdc8b5 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 6.5.14 + 6.5.15 diff --git a/src/BootstrapBlazor/Components/Tree/Tree.razor.cs b/src/BootstrapBlazor/Components/Tree/Tree.razor.cs index c792e449c7bdb95e63ccb087e3d64383e7147f10..ac31e895b9a131ad7007f7279ae7dc6d6c349785 100644 --- a/src/BootstrapBlazor/Components/Tree/Tree.razor.cs +++ b/src/BootstrapBlazor/Components/Tree/Tree.razor.cs @@ -196,6 +196,17 @@ public partial class Tree { await OnTreeItemClick(item); } + + if (ShowRadio) + { + await OnRadioClick(item); + } + else if (ShowCheckbox) + { + item.Checked = !item.Checked; + var status = item.Checked ? CheckboxState.Checked : CheckboxState.UnChecked; + await OnStateChanged(status, item); + } } /// diff --git a/test/UnitTest/Components/TreeTest.cs b/test/UnitTest/Components/TreeTest.cs index c5e1893d2398433f879da6b86d289dc69442c11d..987107fd15c3223c6496ac0288d7bfd54403e63d 100644 --- a/test/UnitTest/Components/TreeTest.cs +++ b/test/UnitTest/Components/TreeTest.cs @@ -31,13 +31,57 @@ public class TreeTest : BootstrapBlazorTestBase } [Fact] - public void OnClick_Ok() + public async Task OnClick_Checkbox_Ok() + { + var tcs = new TaskCompletionSource(); + bool itemChecked = false; + var cut = Context.RenderComponent(pb => + { + pb.Add(a => a.IsAccordion, true); + pb.Add(a => a.ShowCheckbox, true); + pb.Add(a => a.OnTreeItemChecked, items => + { + itemChecked = items.FirstOrDefault()?.Checked ?? false; + tcs.SetResult(true); + return Task.CompletedTask; + }); + pb.Add(a => a.Items, new List() + { + new TreeItem() + { + Text = "Test1", + Items = new List() + { + new TreeItem() + { + Text = "Test11", + } + } + } + }); + }); + + // 测试点击选中 + await cut.InvokeAsync(() => cut.Find(".tree-node").Click()); + await tcs.Task; + Assert.True(itemChecked); + + // 测试取消选中 + tcs = new TaskCompletionSource(); + await cut.InvokeAsync(() => cut.Find(".tree-node").Click()); + await tcs.Task; + Assert.False(itemChecked); + } + + [Fact] + public async Task OnClick_Ok() { var clicked = false; var expanded = false; var cut = Context.RenderComponent(pb => { pb.Add(a => a.IsAccordion, true); + pb.Add(a => a.ShowRadio, true); pb.Add(a => a.ClickToggleNode, true); pb.Add(a => a.OnTreeItemClick, item => { @@ -77,7 +121,7 @@ public class TreeTest : BootstrapBlazorTestBase }); }); - cut.InvokeAsync(() => cut.Find(".tree-node").Click()); + await cut.InvokeAsync(() => cut.Find(".tree-node").Click()); Assert.True(clicked); Assert.True(expanded); }