Skip to content

Commit 665020c

Browse files
committed
refactor: 调整属性名称
1 parent 79ddc44 commit 665020c

File tree

5 files changed

+43
-41
lines changed

5 files changed

+43
-41
lines changed

src/BootstrapBlazor.Server/Components/Samples/Searches.razor

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@
4141
Introduction="@Localizer["SearchesItemTemplateIntro"]"
4242
Name="ItemTemplate">
4343
<Search PlaceHolder="@Localizer["SearchesPlaceHolder"]"
44+
OnGetDisplayText="OnGetDisplayText"
4445
OnSearch="@OnSearchFoo">
4546
<ItemTemplate>
4647
<div class="search-result">
4748
<div class="search-result-avatar">
48-
<img src="@WebsiteOption.CurrentValue.GetAvatarUrl(context.Id)" />
49+
<img src="@WebsiteOption.CurrentValue.GetAvatarUrl(context.Id)" alt="avatar" />
4950
</div>
5051
<div class="search-result-main">
5152
<div class="search-result-name">@context.Name</div>
@@ -63,7 +64,7 @@
6364
Introduction="@Localizer["SearchesKeyboardsIntro"]"
6465
Name="keyboards">
6566
<Search PlaceHolder="@Localizer["SearchesPlaceHolder"]"
66-
IsOnInputTrigger="false"
67+
IsTriggerSearchByInput="false"
6768
OnSearch="@OnKeyboardSearch" />
6869
<ConsoleLogger @ref="KeyboardLogger" />
6970
</DemoBlock>
@@ -72,7 +73,7 @@
7273
Introduction="@Localizer["SearchesValidateFormIntro"]"
7374
Name="ValidateForm">
7475
<ValidateForm Model="@Model">
75-
<Search IsOnInputTrigger="true" @bind-Value="Model.Name" />
76+
<Search @bind-Value="Model.Name" />
7677
</ValidateForm>
7778
</DemoBlock>
7879

src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ private Task<IEnumerable<string>> OnKeyboardSearch(string searchText)
5252
return Task.FromResult<IEnumerable<string>>([$"{searchText}1", $"{searchText}12", $"{searchText}123"]);
5353
}
5454

55-
private Foo Model { get; set; } = new Foo() { Name = "" };
55+
private Foo Model { get; } = new() { Name = "" };
56+
57+
private string? OnGetDisplayText(Foo foo) => foo.Name;
5658

5759
private async Task<IEnumerable<Foo>> OnSearchFoo(string searchText)
5860
{

src/BootstrapBlazor/Components/Search/Search.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString"
1212
data-bb-scroll-behavior="@ScrollIntoViewBehaviorString"
1313
data-bb-input="@UseInputString"
14-
value="@CurrentValueAsString"
14+
value="@_displayText"
1515
placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" />
1616
@if (ShowClearButton)
1717
{

src/BootstrapBlazor/Components/Search/Search.razor.cs

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public partial class Search<TValue>
7171
/// 获得/设置 搜索模式是否为输入即触发 默认 true 值为 false 时需要点击搜索按钮触发
7272
/// </summary>
7373
[Parameter]
74-
public bool IsOnInputTrigger { get; set; } = true;
74+
public bool IsTriggerSearchByInput { get; set; } = true;
7575

7676
/// <summary>
7777
/// 获得/设置 点击搜索按钮时回调委托
@@ -100,9 +100,9 @@ public partial class Search<TValue>
100100
.AddClassFromAttributes(AdditionalAttributes)
101101
.Build();
102102

103-
private string? UseInputString => IsOnInputTrigger ? null : "false";
103+
private string? UseInputString => IsTriggerSearchByInput ? null : "false";
104104

105-
private string? ShowDropdownListOnFocusString => IsOnInputTrigger ? "true" : null;
105+
private string? ShowDropdownListOnFocusString => IsTriggerSearchByInput ? "true" : null;
106106

107107
[NotNull]
108108
private string? ButtonIcon { get; set; }
@@ -129,24 +129,7 @@ protected override void OnParametersSet()
129129
FilterItems ??= [];
130130
}
131131

132-
/// <summary>
133-
/// <inheritdoc/>
134-
/// </summary>
135-
/// <param name="firstRender"></param>
136-
/// <returns></returns>
137-
protected override async Task OnAfterRenderAsync(bool firstRender)
138-
{
139-
await base.OnAfterRenderAsync(firstRender);
140-
141-
if (_show)
142-
{
143-
_show = false;
144-
await InvokeVoidAsync("showList", Id);
145-
}
146-
}
147-
148132
private string _displayText = "";
149-
private bool _show;
150133
/// <summary>
151134
/// 点击搜索按钮时触发此方法
152135
/// </summary>
@@ -165,9 +148,10 @@ private async Task OnSearchClick()
165148
{
166149
_displayText = "";
167150
}
168-
if (IsOnInputTrigger == false)
151+
152+
if (IsTriggerSearchByInput == false)
169153
{
170-
_show = true;
154+
await InvokeVoidAsync("showList", Id);
171155
}
172156
StateHasChanged();
173157
}

test/UnitTest/Components/SearchTest.cs

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@ public void Items_Ok()
1414
Assert.Contains("<div class=\"search auto-complete\"", cut.Markup);
1515
var menus = cut.FindAll(".dropdown-item");
1616
Assert.Single(menus);
17-
18-
cut.SetParametersAndRender(pb =>
19-
{
20-
pb.Add(a => a.ShowNoDataTip, false);
21-
});
22-
menus = cut.FindAll(".dropdown-item");
23-
Assert.Empty(menus);
2417
}
2518

2619
[Fact]
@@ -73,11 +66,11 @@ public void IsOnInputTrigger_Ok()
7366
{
7467
var cut = Context.RenderComponent<Search<string>>(builder =>
7568
{
76-
builder.Add(s => s.IsOnInputTrigger, true);
69+
builder.Add(s => s.IsTriggerSearchByInput, true);
7770
});
7871
cut.DoesNotContain("data-bb-input");
7972

80-
cut.SetParametersAndRender(pb => pb.Add(a => a.IsOnInputTrigger, false));
73+
cut.SetParametersAndRender(pb => pb.Add(a => a.IsTriggerSearchByInput, false));
8174
cut.Contains("data-bb-input=\"false\"");
8275
}
8376

@@ -91,8 +84,8 @@ public async Task OnSearchClick_Ok()
9184
builder.Add(s => s.SearchButtonIcon, "fa-fw fa-solid fa-magnifying-glass");
9285
builder.Add(s => s.SearchButtonText, "SearchText");
9386
builder.Add(s => s.SearchButtonColor, Color.Warning);
94-
builder.Add(s => s.IsOnInputTrigger, false);
9587
builder.Add(s => s.IsAutoClearAfterSearch, true);
88+
builder.Add(s => s.IsTriggerSearchByInput, false);
9689
builder.Add(a => a.OnSearch, async v =>
9790
{
9891
val = v;
@@ -105,10 +98,11 @@ public async Task OnSearchClick_Ok()
10598

10699
var button = cut.Find(".fa-magnifying-glass");
107100
await cut.InvokeAsync(() => button.Click());
108-
await Task.Delay(10);
109-
110-
menus = cut.FindAll(".dropdown-item");
111-
Assert.Equal(2, menus.Count);
101+
cut.WaitForState(() =>
102+
{
103+
menus = cut.FindAll(".dropdown-item");
104+
return menus.Count == 2;
105+
});
112106
}
113107

114108
[Fact]
@@ -135,4 +129,25 @@ public async Task OnClearClick_Ok()
135129
await cut.InvokeAsync(() => button.Click());
136130
Assert.True(ret);
137131
}
132+
133+
[Fact]
134+
public async Task OnSelectedItemChanged_Ok()
135+
{
136+
var items = new List<string?>() { null, "test1", "test2" };
137+
var selectedItem = "";
138+
var cut = Context.RenderComponent<Search<string?>>(pb =>
139+
{
140+
pb.Add(a => a.OnSelectedItemChanged, v => { selectedItem = v; return Task.CompletedTask; });
141+
pb.Add(a => a.OnSearch, async v =>
142+
{
143+
await Task.Delay(1);
144+
return items;
145+
});
146+
});
147+
await cut.InvokeAsync(() => cut.Instance.TriggerOnChange("t"));
148+
149+
var item = cut.Find(".dropdown-item");
150+
await cut.InvokeAsync(() => item.Click());
151+
Assert.Null(selectedItem);
152+
}
138153
}

0 commit comments

Comments
 (0)