From b088f78977a30034f7de02891b3cd7f6d44acff7 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 24 Aug 2022 12:06:45 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20ShowDropdownLi?= =?UTF-8?q?stOnFocus=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoFill/AutoFill.razor | 2 +- .../Components/AutoFill/AutoFill.razor.cs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor index 6e51b56ed..e94fd4543 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor @@ -7,7 +7,7 @@ }
- +
    @if (FilterItems.Any()) diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs index 5da115993..32d14d777 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs @@ -111,6 +111,12 @@ public partial class AutoFill [Parameter] public int Debounce { get; set; } + /// + /// 获得/设置 获得焦点时是否展开下拉候选菜单 默认 true + /// + [Parameter] + public bool ShowDropdownListOnFocus { get; set; } = true; + /// /// /// @@ -219,6 +225,19 @@ public partial class AutoFill } } + /// + /// OnFocus 方法 + /// + /// + /// + protected virtual async Task OnFocus(FocusEventArgs args) + { + if (ShowDropdownListOnFocus) + { + await OnKeyUp(new KeyboardEventArgs()); + } + } + /// /// OnKeyUp 方法 /// -- Gitee From 4fadb2c9e7b117034fb2ce89e79463d080650bd8 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 24 Aug 2022 12:06:54 +0800 Subject: [PATCH 2/3] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Samples/AutoFills.razor | 18 ++++++++++++++++++ .../Samples/AutoFills.razor.cs | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/BootstrapBlazor.Shared/Samples/AutoFills.razor b/src/BootstrapBlazor.Shared/Samples/AutoFills.razor index aa186801b..b8c248d25 100644 --- a/src/BootstrapBlazor.Shared/Samples/AutoFills.razor +++ b/src/BootstrapBlazor.Shared/Samples/AutoFills.razor @@ -41,4 +41,22 @@ + +
    参数 ShowDropdownListOnFocus 默认值为 true 组件获得焦点后会自动展开候选项下拉框,设置为 false 后关闭这个特性
    + + + + +
    + diff --git a/src/BootstrapBlazor.Shared/Samples/AutoFills.razor.cs b/src/BootstrapBlazor.Shared/Samples/AutoFills.razor.cs index ed38a8658..b86296e5d 100644 --- a/src/BootstrapBlazor.Shared/Samples/AutoFills.razor.cs +++ b/src/BootstrapBlazor.Shared/Samples/AutoFills.razor.cs @@ -121,6 +121,13 @@ partial class AutoFills ValueList = " — ", DefaultValue = " — " }, + new AttributeItem() { + Name = nameof(AutoFill.ShowDropdownListOnFocus), + Description = "获得焦点时是否展开下拉候选菜单", + Type = "bool", + ValueList = "true/false", + DefaultValue = "true" + }, new AttributeItem() { Name = "Template", Description = "候选项模板", -- Gitee From bebb0c324a08e3adc900025fd8670eb897053290 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Wed, 24 Aug 2022 12:13:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=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/AutoFillTest.cs | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/UnitTest/Components/AutoFillTest.cs b/test/UnitTest/Components/AutoFillTest.cs index c8b9af35c..9832c8d93 100644 --- a/test/UnitTest/Components/AutoFillTest.cs +++ b/test/UnitTest/Components/AutoFillTest.cs @@ -238,6 +238,34 @@ public class AutoFillTest : BootstrapBlazorTestBase }); } + [Fact] + public async Task ShowDropdownListOnFocus_Ok() + { + var cut = Context.RenderComponent>(pb => + { + pb.Add(a => a.Value, Model); + pb.Add(a => a.Items, Items); + pb.Add(a => a.ShowDropdownListOnFocus, false); + }); + + // 获得焦点时不会自动弹出下拉框 + var input = cut.Find("input"); + await cut.InvokeAsync(() => input.FocusAsync(new FocusEventArgs())); + + var menu = cut.Find("ul"); + Assert.Equal("dropdown-menu", menu.ClassList.ToString()); + + // 获得焦点时自动弹出下拉框 + cut.SetParametersAndRender(pb => + { + pb.Add(a => a.ShowDropdownListOnFocus, true); + }); + input = cut.Find("input"); + await cut.InvokeAsync(() => input.FocusAsync(new FocusEventArgs())); + menu = cut.Find("ul"); + Assert.Equal("dropdown-menu show", menu.ClassList.ToString()); + } + class AutoFillNullStringMock { [NotNull] -- Gitee