fix select bugs

This commit is contained in:
2025-05-18 16:59:30 +02:00
parent edd3ac78de
commit 163a251579
3 changed files with 29 additions and 2 deletions

View File

@@ -7,6 +7,7 @@
placeholder="@Placeholder" placeholder="@Placeholder"
disabled="@IsDisable" disabled="@IsDisable"
style="@(IsDisable ? "pointer-events: none" : "")" style="@(IsDisable ? "pointer-events: none" : "")"
onClick="this.select();"
@bind=@Text @bind=@Text
@bind:event="oninput" @bind:event="oninput"
@bind:after="HandleTextChanged" @bind:after="HandleTextChanged"

View File

@@ -51,11 +51,37 @@ public partial class SelectSearch<TItem>
private async Task HandleClearClicked() private async Task HandleClearClicked()
{ {
Values = []; Values = [];
await ValuesChanged.InvokeAsync([.. Values]); Select?.Close();
SearchInput?.SetText(string.Empty);
await ValuesChanged.InvokeAsync([]);
} }
private void HandleFocusIn() private void HandleFocusIn()
{ {
Select?.Open(); 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) ?? []));
}
}
} }

View File

@@ -22,7 +22,7 @@ public class GlobalConstants
public const int API_PORT = 8000; public const int API_PORT = 8000;
public const string SUB_DOMAIN_NAME = "api-"; 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; public const int MAX_DESCRIPTION_LENGTH = 350;
} }