Order dropdown content (#49)
All checks were successful
Game Ideas build for PR / build_test (pull_request) Successful in 56s

This commit is contained in:
Maxime Adler
2025-05-15 12:35:50 +02:00
parent edd3ac78de
commit 3c3448dee0
4 changed files with 7 additions and 3 deletions

View File

@@ -27,7 +27,7 @@
<SelectSearch TItem="int" Placeholder="@ResourcesKey.ReleaseDate" GetLabel="@(p => p.ToString())"
@bind-Values=GameFilter.ReleaseYears @bind-Values:after=HandleValueChanged Theme="Theme" Items="Categories?.ReleaseYears" />
<SelectSearch TItem="int" Placeholder="@ResourcesKey.StorageSize" GetLabel="@GetStorageSpaceLabel"
<SelectSearch TItem="int" Placeholder="@ResourcesKey.StorageSize" GetLabel="@GetStorageSpaceLabel" OrderBy="@(item => item.ToString())"
@bind-Values=GameFilter.StorageSpaceIds @bind-Values:after=HandleValueChanged Theme="Theme" Items="@(Categories?.StorageSpaces?.Select(stor => stor.Id).ToList())" />
<span class="title">@ResourcesKey.LastAdd</span>

View File

@@ -4,8 +4,10 @@ public class SelectParams<TItem, THeader>
{
public List<TItem> Items { get; set; } = [];
public Func<TItem, string> GetItemLabel { get; set; } = _ => string.Empty;
public Func<TItem, string>? GetItemOrder { get; set; }
public List<THeader> Headers { get; set; } = [];
public Func<THeader, string> GetHeaderLabel { get; set; } = _ => string.Empty;
public Func<THeader, string>? GetHeaderOrder { get; set; }
public Func<string, TItem>? AddItem { get; set; }
}

View File

@@ -27,7 +27,7 @@
@if (Params.Headers != null)
{
@foreach (var header in (HeaderValues ?? []).UnionBy(Params.Headers, Params.GetHeaderLabel))
@foreach (var header in (HeaderValues ?? []).UnionBy(Params.Headers, Params.GetHeaderLabel).OrderBy(Params.GetHeaderOrder ?? Params.GetHeaderLabel))
{
<SelectRow IsSelected=@(HeaderValues?.Contains(header))
Label="@Params.GetHeaderLabel(header)" Theme=Theme
@@ -42,7 +42,7 @@
@if (Params.Items != null)
{
@foreach (var item in (Values ?? []).UnionBy(Params.Items, Params.GetItemLabel))
@foreach (var item in (Values ?? []).UnionBy(Params.Items, Params.GetItemLabel).OrderBy(Params.GetItemOrder ?? Params.GetItemLabel))
{
<SelectRow IsSelected=@(Values?.Contains(item))
Label="@Params.GetItemLabel(item)" Theme=Theme

View File

@@ -10,6 +10,7 @@ public partial class SelectSearch<TItem>
[Parameter] public SelectTheme Theme { get; set; }
[Parameter] public List<TItem> Items { get; set; } = [];
[Parameter] public Func<TItem, string> GetLabel { get; set; } = _ => string.Empty;
[Parameter] public Func<TItem, string>? OrderBy { get; set; } = _ => string.Empty;
[Parameter] public List<TItem> Values { get; set; } = [];
[Parameter] public EventCallback<List<TItem>> ValuesChanged { get; set; }
[Parameter] public string Placeholder { get; set; } = string.Empty;
@@ -27,6 +28,7 @@ public partial class SelectSearch<TItem>
{
Items = Items,
GetItemLabel = GetLabel,
GetItemOrder = OrderBy,
AddItem = AddItem
};