diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor
index 95b05d1..419c02a 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor
@@ -24,13 +24,13 @@
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs
index 9545a4c..50cb2dc 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.cs
@@ -21,7 +21,7 @@ public partial class GameCreationForm
[CascadingParameter] private Popup? Popup { get; set; }
[Parameter] public CategoriesDto? Categories { get; set; }
[Parameter] public EventCallback OnSubmit { get; set; }
- [Parameter] public int? GameIdToUpdate { get; set; }
+ [Parameter] public EventCallback OnRender { get; set; }
private GameDetailDto GameDto = new();
private EditContext? EditContext;
@@ -32,14 +32,16 @@ public partial class GameCreationForm
protected override void OnInitialized()
{
EditContext = new(GameDto);
- IsLoading = GameIdToUpdate != null;
base.OnInitialized();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await Js.InvokeVoidAsync("resizeGameForm");
- await SetGameToUpdate();
+ if (firstRender)
+ {
+ await OnRender.InvokeAsync();
+ }
}
private void HandleOnCancel()
@@ -101,18 +103,13 @@ public partial class GameCreationForm
GameDto.Developer = devs.FirstOrDefault();
}
- private async Task SetGameToUpdate()
+ public async Task SetGameToUpdateAsync(int gameId)
{
- if (GameIdToUpdate == null)
- {
- return;
- }
-
try
{
IsLoading = true;
- GameDto = await GameGateway.GetGameById(GameIdToUpdate ?? 0);
+ GameDto = await GameGateway.GetGameById(gameId);
}
catch (Exception)
{
@@ -121,9 +118,9 @@ public partial class GameCreationForm
finally
{
IsLoading = false;
- StateHasChanged();
}
EditContext = new(GameDto);
+ StateHasChanged();
}
}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
index f94e0b6..8dcc928 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
@@ -42,7 +42,7 @@
-
+
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs
index f4f0d66..8bf0a38 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs
@@ -17,6 +17,7 @@ public partial class Games : GameBaseComponent
private Popup? DeletePopup;
private GameDto? GameToDelete;
private int? GameIdToUpdate;
+ private GameCreationForm? CreationForm;
protected override async Task OnInitializedAsync()
{
@@ -101,4 +102,13 @@ public partial class Games : GameBaseComponent
GameToDelete = null;
}
+ private async Task HandleRenderCreationForm()
+ {
+ if (GameIdToUpdate != null && CreationForm != null)
+ {
+ await CreationForm.SetGameToUpdateAsync(GameIdToUpdate ?? 0);
+ }
+
+ GameIdToUpdate = null;
+ }
}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor
index 745b972..c1cca38 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor
@@ -27,9 +27,9 @@
@if (Params.Headers != null)
{
- @foreach (var header in Params.Headers.Union(HeaderValues ?? []))
+ @foreach (var header in Params.Headers.UnionBy(HeaderValues ?? [], Params.GetHeaderLabel).OrderBy(Params.GetHeaderLabel))
{
- Params.GetHeaderLabel(val) == Params.GetHeaderLabel(header)))
Label="@Params.GetHeaderLabel(header)" Theme=Theme
OnClick="_ => HandleHeaderClicked(header)" />
}
@@ -42,9 +42,9 @@
@if (Params.Items != null)
{
- @foreach (var item in Params.Items.Union(Values ?? []))
+ @foreach (var item in Params.Items.UnionBy(Values ?? [], Params.GetItemLabel).OrderBy(Params.GetItemLabel))
{
- Params.GetItemLabel(val) == Params.GetItemLabel(item)))
Label="@Params.GetItemLabel(item)" Theme=Theme
OnClick="_ => HandleValueClicked(item)" />
}
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs
index 9f2680c..faef52e 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.cs
@@ -89,8 +89,13 @@ public partial class Select
if (Params.AddItem != null)
{
Values ??= [];
- Values.Add(Params.AddItem(AddLabel));
+ if (Type != SelectType.Multiple)
+ {
+ Values = [];
+ }
+
+ Values.Add(Params.AddItem(AddLabel));
AddLabel = string.Empty;
await ValuesChanged.InvokeAsync(Values);
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs
index 65d6e57..466d708 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor.cs
@@ -32,6 +32,15 @@ public partial class SelectSearch
base.OnParametersSet();
}
+
+ protected override void OnAfterRender(bool firstRender)
+ {
+ if (Values != null)
+ {
+ SearchInput?.SetText(string.Join(", ", Values.Select(GetLabel)));
+ }
+ }
+
private async Task HandleValuesChanged(IEnumerable values)
{
Values = [.. values];