Skip to content

Commit 8e7cede

Browse files
committed
refactor: 增加输入 TextConvertToValueCallback 返回空时重置逻辑
1 parent f929b82 commit 8e7cede

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/BootstrapBlazor/Components/SelectGeneric/SelectGeneric.razor.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,11 @@ public partial class SelectGeneric<TValue> : ISelectGeneric<TValue>, IModelEqual
7070

7171
/// <summary>
7272
/// 获得/设置 选项输入更新后转换为 Value 回调方法 默认 null
73+
/// <para>返回值为 null 时放弃操作</para>
7374
/// </summary>
7475
/// <remarks>设置 <see cref="IsEditable"/> 后生效</remarks>
7576
[Parameter]
76-
public Func<string, Task<TValue>>? TextConvertToValueCallback { get; set; }
77+
public Func<string, Task<TValue?>>? TextConvertToValueCallback { get; set; }
7778

7879
/// <summary>
7980
/// 获得/设置 选项模板支持静态数据
@@ -486,17 +487,24 @@ private async Task OnChange(ChangeEventArgs args)
486487

487488
if (item == null)
488489
{
489-
TValue val = default!;
490+
TValue? val = default;
490491
if (TextConvertToValueCallback != null)
491492
{
492493
val = await TextConvertToValueCallback(v);
493494
}
494-
item = new SelectedItem<TValue>(val, v);
495495

496-
var items = new List<SelectedItem<TValue>>() { item };
497-
items.AddRange(Items);
498-
Items = items;
499-
CurrentValue = val;
496+
if (val is not null)
497+
{
498+
item = new SelectedItem<TValue>(val, v);
499+
var items = new List<SelectedItem<TValue>>() { item };
500+
items.AddRange(Items);
501+
Items = items;
502+
CurrentValue = val;
503+
}
504+
else
505+
{
506+
await InvokeVoidAsync("resetValue", InputId, SelectedRow?.Text);
507+
}
500508
}
501509
else
502510
{

0 commit comments

Comments
 (0)