/
HxAutosuggest_Demo_Basic.razor
47 lines (42 loc) · 1.79 KB
/
HxAutosuggest_Demo_Basic.razor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@using System.Globalization
<HxAutosuggest Label="CultureInfo"
Placeholder="Start typing to see suggestions"
TItem="CultureInfo"
TValue="int?"
@bind-Value="@autosuggestValue"
DataProvider="ProvideSuggestions"
ValueSelector="(CultureInfo c) => c.LCID"
ItemFromValueResolver="ResolveAutosuggestItemFromValue">
<ItemTemplate Context="item">
@item.EnglishName <sup>@item.LCID</sup>
</ItemTemplate>
<EmptyTemplate>
<span class="p-2">Couldn't find any matching locale</span>
</EmptyTemplate>
</HxAutosuggest>
<p class="mt-3">Current value: @autosuggestValue</p>
@code
{
private int? autosuggestValue = 1033;
private async Task<AutosuggestDataProviderResult<CultureInfo>> ProvideSuggestions(AutosuggestDataProviderRequest request)
{
await Task.Delay(400); // backend API speed simulation
return new AutosuggestDataProviderResult<CultureInfo>
{
Data = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => c.LCID != 4096) // see Remarks: https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.lcid?view=net-5.0#System_Globalization_CultureInfo_LCID
.Where(c => c.EnglishName?.Contains(request.UserInput, StringComparison.CurrentCultureIgnoreCase) ?? false)
.OrderBy(c => c.EnglishName)
.ToList()
};
}
private async Task<CultureInfo> ResolveAutosuggestItemFromValue(int? value)
{
if (value is null)
{
return null;
}
await Task.Delay(400); // backend API speed simulation
return CultureInfo.GetCultureInfo(value.Value);
}
}