Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/BootstrapBlazor/BootstrapBlazor.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">

<PropertyGroup>
<Version>9.7.4-beta04</Version>
<Version>9.7.4-beta05</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
3 changes: 2 additions & 1 deletion src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ protected override async Task OnClearValue()
await base.OnClearValue();

SelectedItems.Clear();
await SetValue();
}

/// <summary>
Expand Down Expand Up @@ -459,7 +460,7 @@ private async Task SetValue()

if (OnSelectedItemsChanged != null)
{
await OnSelectedItemsChanged.Invoke(SelectedItems);
await OnSelectedItemsChanged(SelectedItems);
}

_lastSelectedValueString = CurrentValueAsString;
Expand Down
5 changes: 4 additions & 1 deletion src/BootstrapBlazor/Components/Select/Select.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,10 @@ protected override async Task OnClearValue()
await base.OnClearValue();

SelectedItem = null;
_lastSelectedValueString = "";
if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(new SelectedItem("", ""));
}
}

private string? ReadonlyString => IsEditable ? null : "readonly";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ protected override async Task OnClearValue()
await base.OnClearValue();

SelectedItems.Clear();
await SetValue();
}

private bool _isToggle;
Expand Down Expand Up @@ -435,7 +436,7 @@ private async Task SetValue()

if (OnSelectedItemsChanged != null)
{
await OnSelectedItemsChanged.Invoke(SelectedItems);
await OnSelectedItemsChanged(SelectedItems);
}

CurrentValue = [.. SelectedItems.Select(i => i.Value)];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,10 @@ protected override async Task OnClearValue()
await VirtualizeElement.RefreshDataAsync();
}
SelectedItem = new SelectedItem<TValue>(default!, "");
if (OnSelectedItemChanged != null)
{
await OnSelectedItemChanged(SelectedItem);
}
}

private string? ReadonlyString => IsEditable ? null : "readonly";
Expand Down
8 changes: 8 additions & 0 deletions test/UnitTest/Components/MultiSelectTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,7 @@ public void DefaultVirtualizeItemText_Ok()
[Fact]
public async Task IsVirtualize_Items_Clearable_Ok()
{
IEnumerable<SelectedItem>? selectedItems = null;
var cut = Context.RenderComponent<MultiSelect<string>>(pb =>
{
pb.Add(a => a.Items, new SelectedItem[]
Expand All @@ -703,6 +704,11 @@ public async Task IsVirtualize_Items_Clearable_Ok()
pb.Add(a => a.OverscanCount, 4);
pb.Add(a => a.IsClearable, true);
pb.Add(a => a.ShowSearch, true);
pb.Add(a => a.OnSelectedItemsChanged, items =>
{
selectedItems = items;
return Task.CompletedTask;
});
});

// 覆盖有搜索条件时,点击清空按钮
Expand All @@ -718,6 +724,8 @@ public async Task IsVirtualize_Items_Clearable_Ok()
// 点击 Clear 按钮
var button = cut.Find(".clear-icon");
await cut.InvokeAsync(() => button.Click());
Assert.NotNull(selectedItems);
Assert.Empty(selectedItems);

// 下拉框显示所有选项
items = cut.FindAll(".dropdown-item");
Expand Down
7 changes: 7 additions & 0 deletions test/UnitTest/Components/SelectGenericTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,15 @@ public void Disabled_Ok()
public void IsClearable_Ok()
{
var val = "Test2";
string? selectedValue = "Test2";
var cut = Context.RenderComponent<SelectGeneric<string>>(pb =>
{
pb.Add(a => a.IsClearable, true);
pb.Add(a => a.OnSelectedItemChanged, item =>
{
selectedValue = item.Value;
return Task.CompletedTask;
});
pb.Add(a => a.Items, new List<SelectedItem<string>>()
{
new("", "请选择"),
Expand All @@ -151,6 +157,7 @@ public void IsClearable_Ok()
var clearButton = cut.Find(".clear-icon");
cut.InvokeAsync(() => clearButton.Click());
Assert.Null(val);
Assert.Null(selectedValue);

// 提高代码覆盖率
var select = cut;
Expand Down
7 changes: 7 additions & 0 deletions test/UnitTest/Components/SelectTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,16 @@ public void Select_Lookup()
[Fact]
public async Task IsClearable_Ok()
{
var selectedValue = "Test2";
var val = "Test2";
var cut = Context.RenderComponent<Select<string>>(pb =>
{
pb.Add(a => a.IsClearable, true);
pb.Add(a => a.OnSelectedItemChanged, item =>
{
selectedValue = item.Value;
return Task.CompletedTask;
});
pb.Add(a => a.Items, new List<SelectedItem>()
{
new("", "请选择"),
Expand All @@ -155,6 +161,7 @@ public async Task IsClearable_Ok()
var clearButton = cut.Find(".clear-icon");
await cut.InvokeAsync(() => clearButton.Click());
Assert.Null(val);
Assert.Equal("", selectedValue);

// 提高代码覆盖率
var select = cut;
Expand Down