diff --git a/blazor_lab/Components/InventoryList.razor b/blazor_lab/Components/InventoryList.razor
index a437545..610ebfd 100644
--- a/blazor_lab/Components/InventoryList.razor
+++ b/blazor_lab/Components/InventoryList.razor
@@ -3,6 +3,14 @@
+
+
+
+
+
@foreach (var item in VisibleItems)
{
diff --git a/blazor_lab/Components/InventoryList.razor.cs b/blazor_lab/Components/InventoryList.razor.cs
index adb79ed..3a01c71 100644
--- a/blazor_lab/Components/InventoryList.razor.cs
+++ b/blazor_lab/Components/InventoryList.razor.cs
@@ -4,6 +4,11 @@ using Microsoft.Extensions.Localization;
namespace blazor_lab.Components
{
+ public enum SortOption
+ {
+ NameDescending,
+ NameAscending
+ }
public partial class InventoryList
{
[Inject]
@@ -22,9 +27,23 @@ namespace blazor_lab.Components
private void UpdateFilteredItems()
{
_filteredItems = string.IsNullOrEmpty(searchQuery) ? Items : Items.Where(i => i.DisplayName.ToLower().Contains(searchQuery.ToLower())).ToList();
+ SortItems();
VisibleItems = _filteredItems.Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
}
+ private void SortItems()
+ {
+ switch (_sortOption)
+ {
+ case SortOption.NameAscending:
+ _filteredItems = _filteredItems.OrderBy(i => i.DisplayName).ToList();
+ break;
+ case SortOption.NameDescending:
+ _filteredItems = _filteredItems.OrderByDescending(i => i.DisplayName).ToList();
+ break;
+ }
+ }
+
private List- _visibleItems;
private List
- VisibleItems
@@ -41,6 +60,8 @@ namespace blazor_lab.Components
private int TotalItems => _filteredItems.Count;
+ private SortOption _sortOption = SortOption.NameDescending;
+
private void GoToPage(int page)
{
currentPage = page;
@@ -58,6 +79,14 @@ namespace blazor_lab.Components
await Task.Delay(250); // debounce the search to avoid excessive API requests
UpdateFilteredItems();
}
+ private void OnSortOptionChanged(ChangeEventArgs e)
+ {
+ if (Enum.TryParse(e.Value.ToString(), out SortOption sortOption))
+ {
+ _sortOption = sortOption;
+ UpdateFilteredItems();
+ }
+ }
protected override void OnAfterRender(bool firstRender)
{
diff --git a/blazor_lab/Resources/Components.InventoryList.fr-FR.resx b/blazor_lab/Resources/Components.InventoryList.fr-FR.resx
index 51dfb55..cccd282 100644
--- a/blazor_lab/Resources/Components.InventoryList.fr-FR.resx
+++ b/blazor_lab/Resources/Components.InventoryList.fr-FR.resx
@@ -126,4 +126,13 @@
Rechercher
+
+ Trier par
+
+
+ Trier par nom (Asc.)
+
+
+ Trier par nom (Desc.)
+
\ No newline at end of file
diff --git a/blazor_lab/Resources/Components.InventoryList.resx b/blazor_lab/Resources/Components.InventoryList.resx
index 517c3a8..515e221 100644
--- a/blazor_lab/Resources/Components.InventoryList.resx
+++ b/blazor_lab/Resources/Components.InventoryList.resx
@@ -126,4 +126,13 @@
Search
+
+ Sort by name (Asc.)
+
+
+ Sort by name (Desc.)
+
+
+ Sort
+
\ No newline at end of file