Skip to content

Commit 6298482

Browse files
revert(Select): add DefaultVirtualizeItemText parameter (#5678)
* 上传例子 * refactor: 增加 DefaultVirtualizeItemText 参数 * refactor: 代码重构提高可读性 * test: 增加单元测试 * test: 更新单元测试 * revert: 撤销更改 * test: 增加单元测试 * doc: 撤销更新 --------- Co-authored-by: Diego <[email protected]>
1 parent e90bfb6 commit 6298482

File tree

4 files changed

+69
-23
lines changed

4 files changed

+69
-23
lines changed

src/BootstrapBlazor/Components/Select/Select.razor.cs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ public partial class Select<TValue> : ISelect, ILookup
118118
[Parameter]
119119
public object? LookupServiceData { get; set; }
120120

121+
/// <summary>
122+
/// Gets or sets the default text for virtualized items. Default is null.
123+
/// </summary>
124+
[Parameter]
125+
public string? DefaultVirtualizeItemText { get; set; }
126+
121127
/// <summary>
122128
/// <inheritdoc/>
123129
/// </summary>
@@ -169,17 +175,7 @@ private SelectedItem? SelectedRow
169175
return null;
170176
}
171177

172-
if (IsVirtualize)
173-
{
174-
_init = false;
175-
return new SelectedItem(CurrentValueAsString, CurrentValueAsString);
176-
}
177-
178-
var item = GetItemWithEnumValue()
179-
?? Rows.Find(i => i.Value == CurrentValueAsString)
180-
?? Rows.Find(i => i.Active)
181-
?? Rows.FirstOrDefault(i => !i.IsDisabled);
182-
178+
var item = IsVirtualize ? GetItemByVirtulized() : GetItemByRows();
183179
if (item != null)
184180
{
185181
if (_init && DisableItemChangedWhenFirstRender)
@@ -195,9 +191,18 @@ private SelectedItem? SelectedRow
195191
return item;
196192
}
197193

198-
private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum
199-
? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString())
200-
: null;
194+
private SelectedItem? GetItemWithEnumValue() => ValueType.IsEnum ? Rows.Find(i => i.Value == Convert.ToInt32(Value).ToString()) : null;
195+
196+
private SelectedItem GetItemByVirtulized() => new(CurrentValueAsString, DefaultVirtualizeItemText ?? CurrentValueAsString);
197+
198+
private SelectedItem? GetItemByRows()
199+
{
200+
var item = GetItemWithEnumValue()
201+
?? Rows.Find(i => i.Value == CurrentValueAsString)
202+
?? Rows.Find(i => i.Active)
203+
?? Rows.FirstOrDefault(i => !i.IsDisabled);
204+
return item;
205+
}
201206

202207
/// <summary>
203208
/// <inheritdoc/>

src/BootstrapBlazor/Components/Select/SelectBase.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -111,14 +111,6 @@ public abstract class SelectBase<TValue> : PopoverSelectBase<TValue>
111111
[Parameter]
112112
public int OverscanCount { get; set; } = 4;
113113

114-
/// <summary>
115-
/// Gets or sets the default text for virtualized items. Default is null.
116-
/// </summary>
117-
[Parameter]
118-
[ExcludeFromCodeCoverage]
119-
[Obsolete("已弃用,删除即可;Deprecated, just delete")]
120-
public string? DefaultVirtualizeItemText { get; set; }
121-
122114
/// <summary>
123115
/// Gets or sets the callback method when the clear button is clicked. Default is null.
124116
/// </summary>

test/UnitTest/Components/SelectTest.cs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ await cut.InvokeAsync(() =>
371371
}
372372

373373
[Fact]
374-
public void DisableItemChangedWhenFirstRender_Ok()
374+
public void DisableItemChangedWhenFirstRender_False()
375375
{
376376
var triggered = false;
377377

@@ -394,6 +394,30 @@ public void DisableItemChangedWhenFirstRender_Ok()
394394
Assert.False(triggered);
395395
}
396396

397+
[Fact]
398+
public void DisableItemChangedWhenFirstRender_True()
399+
{
400+
var triggered = false;
401+
402+
// 空值时,不触发 OnSelectedItemChanged 回调
403+
var cut = Context.RenderComponent<Select<string>>(pb =>
404+
{
405+
pb.Add(a => a.Items, new SelectedItem[]
406+
{
407+
new("1", "Test"),
408+
new("2", "Test2")
409+
});
410+
pb.Add(a => a.Value, "");
411+
pb.Add(a => a.OnSelectedItemChanged, item =>
412+
{
413+
triggered = true;
414+
return Task.CompletedTask;
415+
});
416+
pb.Add(a => a.DisableItemChangedWhenFirstRender, false);
417+
});
418+
Assert.True(triggered);
419+
}
420+
397421
[Fact]
398422
public void Color_Ok()
399423
{
@@ -736,6 +760,30 @@ public void ItemClick_Ok()
736760
});
737761
}
738762

763+
[Fact]
764+
public void DefaultVirtualizeItemText_Ok()
765+
{
766+
var cut = Context.RenderComponent<Select<string>>(pb =>
767+
{
768+
pb.Add(a => a.Items, new SelectedItem[]
769+
{
770+
new("1", "Test1"),
771+
new("2", "Test2")
772+
});
773+
pb.Add(a => a.Value, "3");
774+
pb.Add(a => a.IsVirtualize, true);
775+
});
776+
777+
var input = cut.Find(".form-select");
778+
Assert.Contains("value=\"3\"", input.OuterHtml);
779+
780+
cut.SetParametersAndRender(pb =>
781+
{
782+
pb.Add(a => a.DefaultVirtualizeItemText, "Test3");
783+
});
784+
Assert.Contains("value=\"Test3\"", input.OuterHtml);
785+
}
786+
739787
[Fact]
740788
public void IsVirtualize_Items()
741789
{

test/UnitTest/Components/TreeViewTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ public async Task IsVirtualize_Ok()
596596
{
597597
pb.Add(a => a.IsVirtualize, true);
598598
pb.Add(a => a.RowHeight, 30f);
599+
pb.Add(a => a.OverscanCount, 4);
599600
pb.Add(a => a.OnExpandNodeAsync, async item =>
600601
{
601602
await Task.Delay(10);

0 commit comments

Comments
 (0)