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())" <SelectSearch TItem="int" Placeholder="@ResourcesKey.ReleaseDate" GetLabel="@(p => p.ToString())"
@bind-Values=GameFilter.ReleaseYears @bind-Values:after=HandleValueChanged Theme="Theme" Items="Categories?.ReleaseYears" /> @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())" /> @bind-Values=GameFilter.StorageSpaceIds @bind-Values:after=HandleValueChanged Theme="Theme" Items="@(Categories?.StorageSpaces?.Select(stor => stor.Id).ToList())" />
<span class="title">@ResourcesKey.LastAdd</span> <span class="title">@ResourcesKey.LastAdd</span>

View File

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

View File

@@ -27,7 +27,7 @@
@if (Params.Headers != null) @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)) <SelectRow IsSelected=@(HeaderValues?.Contains(header))
Label="@Params.GetHeaderLabel(header)" Theme=Theme Label="@Params.GetHeaderLabel(header)" Theme=Theme
@@ -42,7 +42,7 @@
@if (Params.Items != null) @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)) <SelectRow IsSelected=@(Values?.Contains(item))
Label="@Params.GetItemLabel(item)" Theme=Theme 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 SelectTheme Theme { get; set; }
[Parameter] public List<TItem> Items { get; set; } = []; [Parameter] public List<TItem> Items { get; set; } = [];
[Parameter] public Func<TItem, string> GetLabel { get; set; } = _ => string.Empty; [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 List<TItem> Values { get; set; } = [];
[Parameter] public EventCallback<List<TItem>> ValuesChanged { get; set; } [Parameter] public EventCallback<List<TItem>> ValuesChanged { get; set; }
[Parameter] public string Placeholder { get; set; } = string.Empty; [Parameter] public string Placeholder { get; set; } = string.Empty;
@@ -27,6 +28,7 @@ public partial class SelectSearch<TItem>
{ {
Items = Items, Items = Items,
GetItemLabel = GetLabel, GetItemLabel = GetLabel,
GetItemOrder = OrderBy,
AddItem = AddItem AddItem = AddItem
}; };