Skip to content

Commit 420f7f7

Browse files
authored
feat(FloatingLabel): add OnBlurAsync parameter (#4523)
* feat(FloatingLabel): add OnBlurAsync parameter * feat: 增加 OnBlurAsync 回调方法 * refactor: 移动参数到基类 * refactor: 移动参数到基类 * refactor: 重构 AutoComplete 组件 * refactor: 重构 AutoFill 组件 * doc: 更新文档注释 * refactor: 复用基类事件 * refactor: 使用基类事件
1 parent 0afbc41 commit 420f7f7

File tree

7 files changed

+29
-53
lines changed

7 files changed

+29
-53
lines changed

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,6 @@ public partial class AutoComplete
6060
[Parameter]
6161
public bool OnFocusFilter { get; set; }
6262

63-
/// <summary>
64-
/// 获得/设置 失去焦点回调方法 默认 null
65-
/// </summary>
66-
[Parameter]
67-
public Func<string?, Task>? OnBlurAsync { get; set; }
68-
6963
/// <summary>
7064
/// 获得/设置 匹配时是否忽略大小写,默认为 true
7165
/// </summary>
@@ -150,9 +144,9 @@ protected override void OnParametersSet()
150144
}
151145

152146
/// <summary>
153-
/// OnBlur 方法
147+
/// <inheritdoc/>
154148
/// </summary>
155-
protected virtual async Task OnBlur()
149+
protected override async Task OnBlur()
156150
{
157151
CurrentSelectedItem = "";
158152
IsShown = false;

src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,21 @@ protected override void OnParametersSet()
139139
}
140140

141141
/// <summary>
142-
/// OnBlur 方法
142+
/// <inheritdoc/>
143143
/// </summary>
144-
protected async Task OnBlur()
144+
protected override async Task OnBlur()
145145
{
146146
_isShown = false;
147147
if (OnSelectedItemChanged != null && ActiveSelectedItem != null)
148148
{
149149
await OnSelectedItemChanged(ActiveSelectedItem);
150150
ActiveSelectedItem = default;
151151
}
152+
153+
if (OnBlurAsync != null)
154+
{
155+
await OnBlurAsync(Value);
156+
}
152157
}
153158

154159
/// <summary>

src/BootstrapBlazor/Components/Input/BootstrapInput.razor.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,6 @@ public partial class BootstrapInput<TValue>
2222
[Parameter]
2323
public bool AutoSetDefaultWhenNull { get; set; }
2424

25-
/// <summary>
26-
/// 获得/设置 失去焦点回调方法 默认 null
27-
/// </summary>
28-
[Parameter]
29-
public Func<TValue, Task>? OnBlurAsync { get; set; }
30-
3125
private string? ReadonlyString => Readonly ? "true" : null;
3226

3327
/// <summary>
@@ -53,15 +47,4 @@ protected override bool TryParseValueFromString(string value, [MaybeNullWhen(fal
5347
}
5448
return ret;
5549
}
56-
57-
/// <summary>
58-
/// OnBlur 方法
59-
/// </summary>
60-
protected virtual async Task OnBlur()
61-
{
62-
if (OnBlurAsync != null)
63-
{
64-
await OnBlurAsync(Value);
65-
}
66-
}
6750
}

src/BootstrapBlazor/Components/Input/BootstrapInputBase.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ public abstract class BootstrapInputBase<TValue> : ValidateBase<TValue>
8484
[Parameter]
8585
public bool IsTrim { get; set; }
8686

87+
/// <summary>
88+
/// 获得/设置 失去焦点回调方法 默认 null
89+
/// </summary>
90+
[Parameter]
91+
public Func<TValue, Task>? OnBlurAsync { get; set; }
92+
8793
[CascadingParameter]
8894
private Modal? Modal { get; set; }
8995

@@ -191,6 +197,17 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
191197
/// <returns></returns>
192198
protected override bool TryParseValueFromString(string value, [MaybeNullWhen(false)] out TValue result, out string? validationErrorMessage) => base.TryParseValueFromString(IsTrim ? value.Trim() : value, out result, out validationErrorMessage);
193199

200+
/// <summary>
201+
/// OnBlur 方法
202+
/// </summary>
203+
protected virtual async Task OnBlur()
204+
{
205+
if (OnBlurAsync != null)
206+
{
207+
await OnBlurAsync(Value);
208+
}
209+
}
210+
194211
/// <summary>
195212
/// 客户端 EnterCallback 回调方法
196213
/// </summary>

src/BootstrapBlazor/Components/Input/FloatingLabel.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
@inherits BootstrapInputBase<TValue>
44

55
<div class="@ClassString">
6-
<input @attributes="@AdditionalAttributes" type="@Type" id="@Id" placeholder="@PlaceHolder" class="@ClassName" disabled="@Disabled" @bind-value="@CurrentValueAsString" @ref="FocusElement" />
6+
<input @attributes="@AdditionalAttributes" type="@Type" id="@Id" placeholder="@PlaceHolder" class="@ClassName" disabled="@Disabled" @bind-value="@CurrentValueAsString" @onblur="@OnBlur" @ref="FocusElement" />
77
<label for="@Id">@DisplayText</label>
88
</div>

src/BootstrapBlazor/Components/InputNumber/BootstrapInputNumber.razor.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,6 @@ public partial class BootstrapInputNumber<TValue>
8383
[Parameter]
8484
public string? PlusIcon { get; set; }
8585

86-
/// <summary>
87-
/// 获得/设置 失去焦点回调方法 默认 null
88-
/// </summary>
89-
[Parameter]
90-
public Func<TValue, Task>? OnBlurAsync { get; set; }
91-
9286
[Inject]
9387
[NotNull]
9488
private IStringLocalizer<BootstrapInputNumber<TValue>>? Localizer { get; set; }
@@ -268,10 +262,10 @@ private async Task OnClickInc()
268262
}
269263

270264
/// <summary>
271-
/// 失去焦点是触发此方法
265+
/// <inheritdoc/>
272266
/// </summary>
273267
/// <returns></returns>
274-
private async Task OnBlur()
268+
protected override async Task OnBlur()
275269
{
276270
if (!PreviousParsingAttemptFailed)
277271
{

src/BootstrapBlazor/Components/Textarea/Textarea.razor.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@ public partial class Textarea
3434
[Parameter]
3535
public bool IsAutoScroll { get; set; }
3636

37-
/// <summary>
38-
/// 获得/设置 失去焦点回调方法 默认 null
39-
/// </summary>
40-
[Parameter]
41-
public Func<string?, Task>? OnBlurAsync { get; set; }
42-
4337
/// <summary>
4438
/// 获得 客户端是否自动滚屏标识
4539
/// </summary>
@@ -59,15 +53,4 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
5953
await InvokeVoidAsync("execute", Id, "update");
6054
}
6155
}
62-
63-
/// <summary>
64-
/// OnBlur 方法
65-
/// </summary>
66-
protected virtual async Task OnBlur()
67-
{
68-
if (OnBlurAsync != null)
69-
{
70-
await OnBlurAsync(Value);
71-
}
72-
}
7356
}

0 commit comments

Comments
 (0)