Skip to content

Commit f0fd5dc

Browse files
authored
feat(SelectTable): add EmptyTemplate parameter (#5217)
* feat: 增加 EmptyTemplate 参数 * test: 增加单元测试
1 parent 895170d commit f0fd5dc

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

src/BootstrapBlazor/Components/Select/SelectTable.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@
4646
SearchModel="SearchModel" SearchTemplate="SearchTemplate" CollapsedTopSearch="CollapsedTopSearch"
4747
CustomerSearchModel="CustomerSearchModel" CustomerSearchTemplate="CustomerSearchTemplate"
4848
IsPagination="IsPagination" PageItemsSource="PageItemsSource" ShowGotoNavigator="false" MaxPageLinkCount="3"
49-
OnClickRowCallback="OnClickRowCallback" OnQueryAsync="OnQueryAsync"></Table>
49+
OnClickRowCallback="OnClickRowCallback" OnQueryAsync="OnQueryAsync"
50+
ShowEmpty="ShowEmpty" EmptyTemplate="EmptyTemplate"></Table>
5051
</div>
5152
</RenderTemplate>
5253
</div>

src/BootstrapBlazor/Components/Select/SelectTable.razor.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,18 @@ namespace BootstrapBlazor.Components;
6767
[Parameter]
6868
public bool IsClearable { get; set; }
6969

70+
/// <summary>
71+
/// 获得/设置 是否显示无数据空记录 默认 false 不显示
72+
/// </summary>
73+
[Parameter]
74+
public bool ShowEmpty { get; set; }
75+
76+
/// <summary>
77+
/// 获得/设置 无数据时显示模板 默认 null
78+
/// </summary>
79+
[Parameter]
80+
public RenderFragment? EmptyTemplate { get; set; }
81+
7082
/// <summary>
7183
/// 获得/设置 IIconTheme 服务实例
7284
/// </summary>

test/UnitTest/Components/SelectTableTest.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,44 @@ public void Group_OK()
543543
Assert.Equal(2, labels.Count);
544544
}
545545

546+
[Fact]
547+
public void EmptyTemplate_OK()
548+
{
549+
var localizer = Context.Services.GetRequiredService<IStringLocalizer<Foo>>();
550+
var items = Foo.GenerateFoo(localizer);
551+
var cut = Context.RenderComponent<BootstrapBlazorRoot>(pb =>
552+
{
553+
pb.AddChildContent<SelectTable<Foo>>(pb =>
554+
{
555+
pb.Add(a => a.OnQueryAsync, options =>
556+
{
557+
return Task.FromResult(new QueryData<Foo>()
558+
{
559+
Items = [],
560+
IsAdvanceSearch = true,
561+
IsFiltered = true,
562+
IsSearch = true,
563+
IsSorted = true
564+
});
565+
});
566+
pb.Add(a => a.ShowEmpty, true);
567+
pb.Add(a => a.EmptyTemplate, builder => builder.AddContent(0, "empty-template"));
568+
pb.Add(a => a.Value, items[0]);
569+
pb.Add(a => a.GetTextCallback, foo => foo.Name);
570+
pb.Add(a => a.TableColumns, foo => builder =>
571+
{
572+
builder.OpenComponent<TableColumn<Foo, string>>(0);
573+
builder.AddAttribute(1, "Field", "Name");
574+
builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string)));
575+
builder.AddAttribute(3, "Searchable", true);
576+
builder.CloseComponent();
577+
});
578+
});
579+
});
580+
581+
cut.Contains("<div class=\"empty\"><div class=\"empty-telemplate\">empty-template</div></div>");
582+
}
583+
546584
private static Task<QueryData<Foo>> OnFilterQueryAsync(QueryPageOptions options, IEnumerable<Foo> _filterItems)
547585
{
548586
_filterItems = _filterItems.Where(options.ToFilterFunc<Foo>());

0 commit comments

Comments
 (0)