Commit ba03fac 1 parent def8f94 commit ba03fac Copy full SHA for ba03fac
File tree 9 files changed +51
-81
lines changed
BootstrapBlazor.Server/Components/Pages
9 files changed +51
-81
lines changed Original file line number Diff line number Diff line change 4
4
<div class =" coms-search" >
5
5
<div class =" row" >
6
6
<div class =" col-12" >
7
- <Search @bind-Value =" @SearchText" PlaceHolder =" @Localizer[" Search " ]" OnSearch =" @OnSearch" ShowClearButton =" true" ></Search >
7
+ <Search @bind-Value =" @SearchText" PlaceHolder =" @Localizer[" Search " ]"
8
+ OnSearch =" @OnSearch" OnClear =" OnClear" ShowClearButton =" true" ></Search >
8
9
</div >
9
10
</div >
10
11
<div class =" coms-search-filter" >
Original file line number Diff line number Diff line change @@ -19,4 +19,11 @@ public sealed partial class Coms
19
19
SearchText = searchText ;
20
20
return Task . FromResult < IEnumerable < string ? > > ( ComponentItems . Where ( i => i . Contains ( searchText , StringComparison . OrdinalIgnoreCase ) ) . ToList ( ) ) ;
21
21
}
22
+
23
+ private Task OnClear ( string searchText )
24
+ {
25
+ SearchText = "" ;
26
+ StateHasChanged ( ) ;
27
+ return Task . CompletedTask ;
28
+ }
22
29
}
Original file line number Diff line number Diff line change 1
1
<Project Sdk =" Microsoft.NET.Sdk.Razor" >
2
2
3
3
<PropertyGroup >
4
- <Version >9.4.9-beta01 </Version >
4
+ <Version >9.4.9-beta02 </Version >
5
5
</PropertyGroup >
6
6
7
7
<ItemGroup >
Original file line number Diff line number Diff line change 16
16
placeholder =" @PlaceHolder" disabled =" @Disabled" @ref =" FocusElement" />
17
17
<span class =" form-select-append" ><i class =" @Icon" ></i ></span >
18
18
<span class =" form-select-append ac-loading" ><i class =" @LoadingIcon" ></i ></span >
19
- <RenderTemplate ChildContent =" RenderItems" ></RenderTemplate >
19
+ <RenderTemplate @ref =" _dropdown" >
20
+ @RenderDropdown
21
+ </RenderTemplate >
20
22
</div >
21
23
22
24
@code {
Original file line number Diff line number Diff line change @@ -90,7 +90,7 @@ public partial class AutoComplete
90
90
private List < string > ? _filterItems ;
91
91
92
92
[ NotNull ]
93
- private AutoCompleteItems ? _dropdown = default ;
93
+ private RenderTemplate ? _dropdown = default ;
94
94
95
95
/// <summary>
96
96
/// <inheritdoc/>
@@ -187,15 +187,7 @@ public override Task TriggerChange(string val)
187
187
StateHasChanged ( ) ;
188
188
}
189
189
_render = true ;
190
- _dropdown . RenderContent ( ) ;
190
+ _dropdown . Render ( ) ;
191
191
return Task . CompletedTask ;
192
192
}
193
-
194
- private RenderFragment RenderItems => builder =>
195
- {
196
- builder . OpenComponent < AutoCompleteItems > ( 0 ) ;
197
- builder . AddAttribute ( 10 , "ChildContent" , RenderDropdown ) ;
198
- builder . AddComponentReferenceCapture ( 20 , dropdown => _dropdown = ( AutoCompleteItems ) dropdown ) ;
199
- builder . CloseComponent ( ) ;
200
- } ;
201
193
}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 6
6
namespace BootstrapBlazor . Components ;
7
7
8
8
/// <summary>
9
- /// RenderTemplate 组件
9
+ /// RenderTemplate component
10
10
/// </summary>
11
11
public partial class RenderTemplate
12
12
{
13
13
/// <summary>
14
- /// 获得/设置 子组件
14
+ /// Gets or sets the child component
15
15
/// </summary>
16
16
[ Parameter ]
17
17
public RenderFragment ? ChildContent { get ; set ; }
18
18
19
19
/// <summary>
20
- /// 获得/设置 首次加载回调委托
20
+ /// Gets or sets the callback delegate for the first load
21
21
/// </summary>
22
22
[ Parameter ]
23
23
public Func < bool , Task > ? OnRenderAsync { get ; set ; }
@@ -36,4 +36,12 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
36
36
await OnRenderAsync ( firstRender ) ;
37
37
}
38
38
}
39
+
40
+ /// <summary>
41
+ /// Render method
42
+ /// </summary>
43
+ public void Render ( )
44
+ {
45
+ StateHasChanged ( ) ;
46
+ }
39
47
}
Original file line number Diff line number Diff line change 55
55
<Button Color =" SearchButtonColor" Text =" @SearchButtonText" Icon =" @ButtonIcon" OnClick =" OnSearchClick" aria-label =" Search" ></Button >
56
56
}
57
57
</div >
58
- <ul class =" dropdown-menu" >
58
+ <RenderTemplate @ref =" _dropdown" >
59
+ @RenderDropdown
60
+ </RenderTemplate >
61
+ </div >
62
+
63
+ @code {
64
+ RenderFragment RenderDropdown =>
65
+ @< ul class = " dropdown-menu" >
59
66
@foreach (var item in _filterItems )
60
67
{
61
68
< li class = " dropdown-item" @onclick = " () => OnClickItem(item)" >
73
80
{
74
81
< li class = " dropdown-item" > @NoDataTip < / li >
75
82
}
76
- </ul >
77
- </ div >
83
+ < / ul > ;
84
+ }
Original file line number Diff line number Diff line change @@ -171,6 +171,9 @@ public partial class Search<TValue>
171
171
172
172
private SearchContext < TValue > _context = default ! ;
173
173
174
+ [ NotNull ]
175
+ private RenderTemplate ? _dropdown = default ;
176
+
174
177
/// <summary>
175
178
/// <inheritdoc/>
176
179
/// </summary>
@@ -205,6 +208,14 @@ protected override void OnParametersSet()
205
208
}
206
209
}
207
210
211
+ private bool _render = true ;
212
+
213
+ /// <summary>
214
+ /// <inheritdoc/>
215
+ /// </summary>
216
+ /// <returns></returns>
217
+ protected override bool ShouldRender ( ) => _render ;
218
+
208
219
private string _displayText = "" ;
209
220
/// <summary>
210
221
/// 点击搜索按钮时触发此方法
@@ -218,7 +229,7 @@ private async Task OnSearchClick()
218
229
await Task . Yield ( ) ;
219
230
220
231
var items = await OnSearch ( _displayText ) ;
221
- _filterItems = items . ToList ( ) ;
232
+ _filterItems = [ .. items ] ;
222
233
ButtonIcon = SearchButtonIcon ;
223
234
if ( IsTriggerSearchByInput == false )
224
235
{
@@ -280,11 +291,13 @@ private async Task OnClickItem(TValue val)
280
291
[ JSInvokable ]
281
292
public override async Task TriggerChange ( string val )
282
293
{
294
+ _render = false ;
283
295
_displayText = val ;
284
-
285
296
if ( IsTriggerSearchByInput )
286
297
{
287
298
await OnSearchClick ( ) ;
288
299
}
300
+ _render = true ;
301
+ _dropdown . Render ( ) ;
289
302
}
290
303
}
You can’t perform that action at this time.
0 commit comments