fix select bugs
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
placeholder="@Placeholder"
|
||||
disabled="@IsDisable"
|
||||
style="@(IsDisable ? "pointer-events: none" : "")"
|
||||
onClick="this.select();"
|
||||
@bind=@Text
|
||||
@bind:event="oninput"
|
||||
@bind:after="HandleTextChanged"
|
||||
|
||||
@@ -51,11 +51,37 @@ public partial class SelectSearch<TItem>
|
||||
private async Task HandleClearClicked()
|
||||
{
|
||||
Values = [];
|
||||
await ValuesChanged.InvokeAsync([.. Values]);
|
||||
Select?.Close();
|
||||
SearchInput?.SetText(string.Empty);
|
||||
await ValuesChanged.InvokeAsync([]);
|
||||
}
|
||||
|
||||
private void HandleFocusIn()
|
||||
{
|
||||
Select?.Open();
|
||||
}
|
||||
private void HandleTextChanged(string args)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(args))
|
||||
{
|
||||
var keywords = args
|
||||
.Split([' '], StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(k => k.Trim())
|
||||
.ToArray() ?? [];
|
||||
|
||||
SelectParams.Items = [.. Items
|
||||
.Where(game => keywords.All(
|
||||
kw => SelectParams.GetItemLabel(game).Contains(kw, StringComparison.OrdinalIgnoreCase)
|
||||
))
|
||||
.OrderBy(game => keywords.Min(kw =>
|
||||
SelectParams.GetItemLabel(game).IndexOf(kw, StringComparison.OrdinalIgnoreCase)
|
||||
))
|
||||
.ThenBy(game => SelectParams.GetItemLabel(game).Length)];
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectParams.Items = Items;
|
||||
SearchInput?.SetText(string.Join(", ", Values?.Select(GetLabel) ?? []));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public class GlobalConstants
|
||||
public const int API_PORT = 8000;
|
||||
public const string SUB_DOMAIN_NAME = "api-";
|
||||
|
||||
public const double DELAY_INPUT_MS = 500;
|
||||
public const double DELAY_INPUT_MS = 450;
|
||||
|
||||
public const int MAX_DESCRIPTION_LENGTH = 350;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user