diff --git a/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs index 1afe39e8d31..013a95042ef 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/ListGroups.razor.cs @@ -87,6 +87,14 @@ private AttributeItem[] GetAttributes() => DefaultValue = " — " }, new() + { + Name = "OnDoubleClickItem", + Description = Localizer["AttrOnDoubleClickItem"], + Type = "Func", + ValueList = " — ", + DefaultValue = " — " + }, + new() { Name = "GetItemDisplayText", Description = Localizer["GetItemDisplayText"], diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index b1d18017aa1..70667ec4952 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -6488,6 +6488,7 @@ "AttrHeaderText": "the title of Header", "AttrItemTemplate": "the template of Item", "AttrOnClickItem": "the callback on click item", + "AttrOnDoubleClickItem": "the callback on double click item", "GetItemDisplayText": "the callback on get item display text" }, "BootstrapBlazor.Server.Components.Samples.Marquees": { diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index f132c447d8e..fc88abf2c6b 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -6488,6 +6488,7 @@ "AttrHeaderText": "标题栏文字", "AttrItemTemplate": "选项模板", "AttrOnClickItem": "点击候选项回调方法", + "AttrOnDoubleClickItem": "双击候选项回调方法", "GetItemDisplayText": "获得显示项显示内容回调方法" }, "BootstrapBlazor.Server.Components.Samples.Marquees": { diff --git a/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor b/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor index 63403c586ad..af0b28b3b8d 100644 --- a/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor +++ b/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor @@ -14,7 +14,8 @@
@foreach (var item in Items) { -
+
@if (ItemTemplate != null) { @ItemTemplate(item) diff --git a/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor.cs b/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor.cs index cd6fa177987..9c48aeab12c 100644 --- a/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor.cs +++ b/src/BootstrapBlazor/Components/ListGroup/ListGroup.razor.cs @@ -44,6 +44,12 @@ public partial class ListGroup [Parameter] public Func? OnClickItem { get; set; } + /// + /// 获得/设置 双击 List 项目回调方法 + /// + [Parameter] + public Func? OnDoubleClickItem { get; set; } + /// /// 获得/设置 获得条目显示文本内容回调方法 /// @@ -78,4 +84,13 @@ private async Task OnClick(TItem item) } CurrentValue = item; } + + private async Task OnDoubleClick(TItem item) + { + if (OnDoubleClickItem != null) + { + await OnDoubleClickItem(item); + } + CurrentValue = item; + } } diff --git a/test/UnitTest/Components/ListGroupTest.cs b/test/UnitTest/Components/ListGroupTest.cs index 560a6c5df6e..39520ca8674 100644 --- a/test/UnitTest/Components/ListGroupTest.cs +++ b/test/UnitTest/Components/ListGroupTest.cs @@ -27,7 +27,7 @@ public void Items_Ok() } [Fact] - public void ClickItem_Ok() + public async Task ClickItem_Ok() { var clicked = false; var cut = Context.RenderComponent>(pb => @@ -44,8 +44,30 @@ public void ClickItem_Ok() }); }); var item = cut.Find(".list-group-item"); - item.Click(); - cut.WaitForState(() => clicked); + await cut.InvokeAsync(() => item.Click()); + Assert.True(clicked); + } + + [Fact] + public async Task DoubleClickItem_Ok() + { + var clicked = false; + var cut = Context.RenderComponent>(pb => + { + pb.Add(a => a.Items, + [ + new() { Name = "Test 1" }, + new() { Name = "Test 1" } + ]); + pb.Add(a => a.OnDoubleClickItem, foo => + { + clicked = true; + return Task.CompletedTask; + }); + }); + var item = cut.Find(".list-group-item"); + await cut.InvokeAsync(() => item.DoubleClick()); + Assert.True(clicked); } [Fact]