diff --git a/src/BootstrapBlazor.Server/Components/Components/Pre.razor.cs b/src/BootstrapBlazor.Server/Components/Components/Pre.razor.cs
index a4ec887ae91..ad827cb9cfd 100644
--- a/src/BootstrapBlazor.Server/Components/Components/Pre.razor.cs
+++ b/src/BootstrapBlazor.Server/Components/Components/Pre.razor.cs
@@ -148,7 +148,7 @@ private string FindCodeSnippetByName(string code)
{
var regex = new Regex($"([\\s\\S]*?)");
var match = regex.Match(content);
- if (match.Success && match.Groups.Count == 2)
+ if (match is { Success: true, Groups.Count: 2 })
{
content = match.Groups[1].Value.Replace("\r\n", "\n").Replace("\n ", "\n").TrimStart('\n');
}
diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
index 2cb12d2b983..84febeb66ef 100644
--- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
+++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs
@@ -59,6 +59,12 @@ public partial class AutoComplete
[Parameter]
public bool OnFocusFilter { get; set; }
+ ///
+ /// 获得/设置 失去焦点回调方法 默认 null
+ ///
+ [Parameter]
+ public Func? OnBlurAsync { get; set; }
+
///
/// 获得/设置 匹配时是否忽略大小写,默认为 true
///
@@ -145,10 +151,15 @@ protected override void OnParametersSet()
///
/// OnBlur 方法
///
- protected void OnBlur()
+ protected virtual async Task OnBlur()
{
CurrentSelectedItem = "";
IsShown = false;
+
+ if (OnBlurAsync != null)
+ {
+ await OnBlurAsync(Value);
+ }
}
///
@@ -239,7 +250,7 @@ public virtual async Task OnKeyUp(string key)
}
else if (key == "Escape")
{
- OnBlur();
+ await OnBlur();
if (!SkipEsc && OnEscAsync != null)
{
await OnEscAsync(Value);
@@ -256,7 +267,7 @@ public virtual async Task OnKeyUp(string key)
}
}
- OnBlur();
+ await OnBlur();
if (!SkipEnter && OnEnterAsync != null)
{
await OnEnterAsync(Value);
@@ -268,7 +279,7 @@ public virtual async Task OnKeyUp(string key)
}
///
- ///
+ /// 自定义按键处理方法
///
///
///
diff --git a/test/UnitTest/Components/AutoCompleteTest.cs b/test/UnitTest/Components/AutoCompleteTest.cs
index b1acd3277cc..5487061b846 100644
--- a/test/UnitTest/Components/AutoCompleteTest.cs
+++ b/test/UnitTest/Components/AutoCompleteTest.cs
@@ -294,7 +294,7 @@ public void ValidateForm_Ok()
[Fact]
public void IsPopover_Ok()
{
- IEnumerable items = new List() { "test1", "test2" };
+ var items = new List() { "test1", "test2" };
var cut = Context.RenderComponent(pb =>
{
pb.Add(a => a.Items, items);
@@ -309,4 +309,29 @@ public void IsPopover_Ok()
cut.DoesNotContain("data-bs-placement");
cut.Contains("data-bs-custom-class=\"ac-pop-test shadow\"");
}
+
+ [Fact]
+ public async Task OnBlurAsync_Ok()
+ {
+ string? val = "";
+ var items = new List() { "test1", "test2" };
+ var cut = Context.RenderComponent(pb =>
+ {
+ pb.Add(a => a.Items, items);
+ pb.Add(a => a.OnBlurAsync, v =>
+ {
+ val = v;
+ return Task.CompletedTask;
+ });
+ });
+
+ // trigger blur
+ var input = cut.Find("input");
+ await cut.InvokeAsync(() =>
+ {
+ input.Input("123");
+ input.Blur();
+ });
+ Assert.Equal("123", val);
+ }
}