Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString"
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" data-bb-trigger-delete="true"
@bind="@CurrentValueAsString"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/>
<span class="form-select-append"><i class="@Icon"></i></span>
<span class="form-select-append ac-loading"><i class="@LoadingIcon"></i></span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,12 @@ protected override void OnParametersSet()
LoadingIcon ??= IconTheme.GetIconByKey(ComponentIcons.LoadingIcon);
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, Value);

/// <summary>
/// Callback method when a candidate item is clicked
/// </summary>
Expand All @@ -137,6 +143,9 @@ private async Task OnClickItem(string val)
}

await TriggerFilter(val);

// 使用脚本更新 input 值
await InvokeVoidAsync("setValue", Id, val);
}

private List<string> Rows => _filterItems ?? [.. Items];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,14 @@ const handlerKeyup = (ac, e) => {
}
}

export function setValue(id, value) {
const ac = Data.get(id)
const { input } = ac;
if (input) {
input.value = value;
}
}

export function dispose(id) {
const ac = Data.get(id)
Data.remove(id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,6 @@ protected override void OnParametersSet()
Offset ??= "[0, 6]";
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop);

/// <summary>
/// 触发 OnBlur 回调方法 由 Javascript 触发
/// </summary>
Expand Down
1 change: 0 additions & 1 deletion src/BootstrapBlazor/Components/AutoFill/AutoFill.razor
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString"
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString"
@bind="@_displayText"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" />
<span class="form-select-append"><i class="@Icon"></i></span>
<span class="form-select-append ac-loading"><i class="@LoadingIcon"></i></span>
Expand Down
12 changes: 12 additions & 0 deletions src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,12 @@ protected override void OnParametersSet()
Items ??= [];
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, _displayText);


private bool IsNullable() => !ValueType.IsValueType || NullableUnderlyingType != null;

Expand All @@ -199,6 +205,9 @@ protected override void OnParametersSet()
/// <returns></returns>
private async Task OnClearValue()
{
// 使用脚本更新 input 值
await InvokeVoidAsync("setValue", Id, "");

if (OnClearAsync != null)
{
await OnClearAsync();
Expand All @@ -223,6 +232,9 @@ private async Task OnClickItem(TValue val)
CurrentValue = val;
_displayText = GetDisplayText(val);

// 使用脚本更新 input 值
await InvokeVoidAsync("setValue", Id, _displayText);

if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(val);
Expand Down
1 change: 0 additions & 1 deletion src/BootstrapBlazor/Components/Search/Search.razor
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString"
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString"
data-bb-input="@UseInputString"
@bind="@_displayText"
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" />
@if (IsClearable)
{
Expand Down
12 changes: 12 additions & 0 deletions src/BootstrapBlazor/Components/Search/Search.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,12 @@ protected override void OnParametersSet()
}
}

/// <summary>
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, Interop, _displayText);

private string? _displayText;
private async Task OnSearchClick()
{
Expand All @@ -229,6 +235,9 @@ private async Task OnSearchClick()

private async Task OnClearClick()
{
// 使用脚本更新 input 值
await InvokeVoidAsync("setValue", Id, "");

_displayText = null;
if (OnClear != null)
{
Expand All @@ -252,6 +261,9 @@ private async Task OnClickItem(TValue val)
CurrentValue = val;
_displayText = GetDisplayText(val);

// 使用脚本更新 input 值
await InvokeVoidAsync("setValue", Id, _displayText);

if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(val);
Expand Down
2 changes: 1 addition & 1 deletion test/UnitTest/Components/AutoFillTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ public void OnGetDisplayText_Ok()
pb.Add(a => a.OnGetDisplayText, foo => foo?.Name);
});
var input = cut.Find("input");
Assert.Equal("张三 1000", input.Attributes["value"]?.Value);
Assert.Null(input.Attributes["value"]?.Value);
}

[Fact]
Expand Down
Loading