Skip to content

Commit 34a6a8a

Browse files
authored
feat(CheckboxListGeneric): add ItemTemplate parameter (#5255)
* chore: bump version 9.3.1-beta05 * feat: 增加 ItemTemplate 支持 * test: 增加单元测试
1 parent 3a219b6 commit 34a6a8a

File tree

4 files changed

+34
-2
lines changed

4 files changed

+34
-2
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.3.1-beta04</Version>
4+
<Version>9.3.1-beta05</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/Checkbox/CheckboxListGeneric.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ else
2929
<Checkbox TValue="bool" IsDisabled="GetDisabledState(item)"
3030
ShowAfterLabel="true" ShowLabel="false" ShowLabelTooltip="ShowLabelTooltip"
3131
DisplayText="@item.Text" OnBeforeStateChanged="_onBeforeStateChangedCallback!"
32-
Value="@item.Active" OnStateChanged="@((_, v) => OnStateChanged(item, v))"></Checkbox>
32+
Value="@item.Active" OnStateChanged="@((_, v) => OnStateChanged(item, v))"
33+
ChildContent="GetChildContent(item)"></Checkbox>
3334
</div>
3435
}
3536
</div>

src/BootstrapBlazor/Components/Checkbox/CheckboxListGeneric.razor.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,12 @@ public partial class CheckboxListGeneric<TValue> : IModelEqualityComparer<TValue
110110
[Parameter]
111111
public Func<Task>? OnMaxSelectedCountExceed { get; set; }
112112

113+
/// <summary>
114+
/// 获得/设置 项模板
115+
/// </summary>
116+
[Parameter]
117+
public RenderFragment<SelectedItem<TValue>>? ItemTemplate { get; set; }
118+
113119
/// <summary>
114120
/// 获得 当前选项是否被禁用
115121
/// </summary>
@@ -216,6 +222,10 @@ private async Task OnStateChanged(SelectedItem<TValue> item, bool v)
216222
/// </summary>
217223
private Task OnClick(SelectedItem<TValue> item) => OnStateChanged(item, !item.Active);
218224

225+
private RenderFragment? GetChildContent(SelectedItem<TValue> item) => ItemTemplate == null
226+
? null
227+
: ItemTemplate(item);
228+
219229
/// <summary>
220230
/// <inheritdoc/>
221231
/// </summary>

test/UnitTest/Components/CheckboxListGenericTest.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,27 @@ await cut.InvokeAsync(async () =>
252252
Assert.False(max);
253253
}
254254

255+
[Fact]
256+
public void ItemTemplate_Ok()
257+
{
258+
var items = new List<SelectedItem<Foo>>()
259+
{
260+
new(new Foo() { Id = 1, Name = "Test1" }, "Test 1"),
261+
new(new Foo() { Id = 2, Name = "Test2" }, "Test 2"),
262+
new(new Foo() { Id = 3, Name = "Test3" }, "Test 3")
263+
};
264+
var cut = Context.RenderComponent<CheckboxListGeneric<Foo>>(pb =>
265+
{
266+
pb.Add(a => a.Items, items);
267+
pb.Add(a => a.ItemTemplate, foo => builder =>
268+
{
269+
builder.AddContent(0, foo.Text);
270+
});
271+
});
272+
var labels = cut.FindAll(".checkbox-item .form-check-label");
273+
Assert.Equal(3, labels.Count);
274+
}
275+
255276
private class Dummy
256277
{
257278
[Required]

0 commit comments

Comments
 (0)