From e138a72eac378365cf24c60d263d6fb72ce3ecef Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 4 May 2022 00:31:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80=20Table=20?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Table/Table.razor.Checkbox.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/BootstrapBlazor/Components/Table/Table.razor.Checkbox.cs b/src/BootstrapBlazor/Components/Table/Table.razor.Checkbox.cs index 55d4b3161..ee86f9809 100644 --- a/src/BootstrapBlazor/Components/Table/Table.razor.Checkbox.cs +++ b/src/BootstrapBlazor/Components/Table/Table.razor.Checkbox.cs @@ -47,11 +47,6 @@ public partial class Table /// protected CheckboxState RowCheckState(TItem item) => SelectedRows.Contains(item) ? CheckboxState.Checked : CheckboxState.UnChecked; - /// - /// 获得/设置 表头上的复选框 - /// - protected Checkbox? HeaderCheckbox { get; set; } - /// /// 获得/设置 是否为多选模式 默认为 false /// @@ -91,13 +86,12 @@ public partial class Table StateHasChanged(); break; case CheckboxState.UnChecked: + default: // unselect all SelectedRows.Clear(); await OnSelectedRowsChanged(); StateHasChanged(); break; - default: - break; } } -- Gitee From 5da1c9bfe9db1e90f090e8334ae7eab552b04ec6 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 4 May 2022 00:31:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E8=A1=A8?= =?UTF-8?q?=E5=A4=B4=E7=82=B9=E5=87=BB=E5=85=A8=E9=80=89=E6=A1=86=E5=8D=95?= =?UTF-8?q?=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/TableTest.cs | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index 2f825cd93..e265fde88 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -2060,6 +2060,43 @@ public class TableTest : TableTestBase }); } + [Fact] + public async Task HeaderCheckbox_Ok() + { + var localizer = Context.Services.GetRequiredService>(); + var items = Foo.GenerateFoo(localizer, 2); + var cut = Context.RenderComponent(pb => + { + pb.AddChildContent>(pb => + { + pb.Add(a => a.RenderMode, TableRenderMode.Table); + pb.Add(a => a.IsMultipleSelect, true); + pb.Add(a => a.Items, items); + pb.Add(a => a.TableColumns, foo => builder => + { + builder.OpenComponent>(0); + builder.AddAttribute(1, "Field", "Name"); + builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); + builder.CloseComponent(); + }); + }); + }); + + var btn = cut.Find("thead tr th input"); + await cut.InvokeAsync(() => btn.Click()); + + var checkboxs = cut.FindAll(".is-checked"); + Assert.Equal(3, checkboxs.Count); + + await cut.InvokeAsync(() => btn.Click()); + checkboxs = cut.FindAll(".is-checked"); + Assert.Equal(0, checkboxs.Count); + + var table = cut.FindComponent>(); + table.SetParametersAndRender(pb => pb.Add(a => a.Items, new Foo[] { })); + btn = cut.Find("thead tr th input"); + await cut.InvokeAsync(() => btn.Click()); + } private static Func>> OnQueryAsync(IStringLocalizer localizer) => new(op => { var items = Foo.GenerateFoo(localizer, 5); -- Gitee From 0a993dbef8472b75d264eaafafe2a5561490a019 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 4 May 2022 00:32:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E8=A1=8C?= =?UTF-8?q?=E5=86=85=E5=A4=8D=E9=80=89=E6=A1=86=E7=82=B9=E5=87=BB=E5=8D=95?= =?UTF-8?q?=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/TableTest.cs | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index e265fde88..8b26b469c 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -2097,6 +2097,40 @@ public class TableTest : TableTestBase btn = cut.Find("thead tr th input"); await cut.InvokeAsync(() => btn.Click()); } + + [Fact] + public async Task RowCheckbox_Ok() + { + var localizer = Context.Services.GetRequiredService>(); + var items = Foo.GenerateFoo(localizer, 2); + var cut = Context.RenderComponent(pb => + { + pb.AddChildContent>(pb => + { + pb.Add(a => a.RenderMode, TableRenderMode.Table); + pb.Add(a => a.IsMultipleSelect, true); + pb.Add(a => a.Items, items); + pb.Add(a => a.TableColumns, foo => builder => + { + builder.OpenComponent>(0); + builder.AddAttribute(1, "Field", "Name"); + builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); + builder.CloseComponent(); + }); + }); + }); + + var btn = cut.Find("tbody tr td input"); + await cut.InvokeAsync(() => btn.Click()); + + var checkboxs = cut.FindAll(".is-checked"); + Assert.Equal(1, checkboxs.Count); + + await cut.InvokeAsync(() => btn.Click()); + checkboxs = cut.FindAll(".is-checked"); + Assert.Equal(0, checkboxs.Count); + } + private static Func>> OnQueryAsync(IStringLocalizer localizer) => new(op => { var items = Foo.GenerateFoo(localizer, 5); -- Gitee