fix select bugs
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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) ?? []));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user