@@ -44,21 +44,21 @@
@foreach (var platform in GameDto.Platforms ?? [])
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 e7d107f..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
@@ -3,6 +3,8 @@ using GameIdeas.BlazorApp.Pages.Games.Gateways;
using GameIdeas.BlazorApp.Shared.Components.Popup;
using GameIdeas.BlazorApp.Shared.Components.Select.Models;
using GameIdeas.BlazorApp.Shared.Components.Slider;
+using GameIdeas.BlazorApp.Shared.Exceptions;
+using GameIdeas.Resources;
using GameIdeas.Shared.Dto;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
@@ -19,22 +21,27 @@ public partial class GameCreationForm
[CascadingParameter] private Popup? Popup { get; set; }
[Parameter] public CategoriesDto? Categories { get; set; }
[Parameter] public EventCallback OnSubmit { get; set; }
-
- private readonly GameDetailDto GameDto = new();
+ [Parameter] public EventCallback OnRender { get; set; }
+
+ private GameDetailDto GameDto = new();
private EditContext? EditContext;
private readonly SelectTheme Theme = SelectTheme.Creation;
private readonly SliderParams SliderParams = new() { Gap = 1, Min = 1, Max = 5 };
private bool IsLoading = false;
- protected override async Task OnInitializedAsync()
+ protected override void OnInitialized()
{
EditContext = new(GameDto);
- await base.OnInitializedAsync();
+ base.OnInitialized();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await Js.InvokeVoidAsync("resizeGameForm");
+ if (firstRender)
+ {
+ await OnRender.InvokeAsync();
+ }
}
private void HandleOnCancel()
@@ -53,15 +60,22 @@ public partial class GameCreationForm
{
IsLoading = true;
+ int gameId;
var authState = await AuthenticationState.GetAuthenticationStateAsync();
GameHelper.WriteTrackingDto(GameDto, authState);
- var gameId = await GameGateway.CreateGame(GameDto);
-
- if (gameId != 0)
+ if (GameDto.Id != null)
{
- Popup?.Close();
- await OnSubmit.InvokeAsync();
+ gameId = await GameGateway.UpdateGame(GameDto);
+ }
+ else
+ {
+ gameId = await GameGateway.CreateGame(GameDto);
+ }
+
+ if (gameId == 0)
+ {
+ throw new GameCreationException(ResourcesKey.ErrorCreateGame);
}
}
catch (Exception)
@@ -73,13 +87,40 @@ public partial class GameCreationForm
IsLoading = false;
StateHasChanged();
}
+
+ Popup?.Close();
+
+ await OnSubmit.InvokeAsync();
}
+
private void HandlePublisherChanged(List
pubs)
{
GameDto.Publisher = pubs.FirstOrDefault();
}
+
private void HandleDeveloperChanged(List devs)
{
GameDto.Developer = devs.FirstOrDefault();
}
+
+ public async Task SetGameToUpdateAsync(int gameId)
+ {
+ try
+ {
+ IsLoading = true;
+
+ GameDto = await GameGateway.GetGameById(gameId);
+ }
+ catch (Exception)
+ {
+ throw new FetchGameDetailException(ResourcesKey.ErrorFetchDetail);
+ }
+ finally
+ {
+ IsLoading = false;
+ }
+
+ EditContext = new(GameDto);
+ StateHasChanged();
+ }
}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.css
index b512d37..4d3a824 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.css
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor.css
@@ -118,3 +118,20 @@
.buttons button:hover {
background: var(--violet-selected);
}
+
+@media screen and (max-width: 400px) {
+ .input-game {
+ grid-template-columns: auto 1fr;
+ }
+
+ #label-description {
+ width: auto !important;
+ }
+}
+
+@media screen and (max-width: 700px) {
+ .game-form {
+ flex-direction: column;
+ gap: 8px;
+ }
+}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor
index 5ecb8ac..059bc90 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor
@@ -1,5 +1,7 @@
@using GameIdeas.BlazorApp.Helpers
@using GameIdeas.BlazorApp.Shared.Components.Interest
+@using GameIdeas.BlazorApp.Shared.Components.Select
+@using GameIdeas.BlazorApp.Shared.Components.Select.Models
@using GameIdeas.BlazorApp.Shared.Constants
@inherits GameBase
@@ -33,5 +35,8 @@
-
+
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor.css
index 6d2fab0..fd6ce91 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor.css
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRow.razor.css
@@ -8,7 +8,6 @@
box-shadow: var(--drop-shadow);
border-radius: var(--big-radius);
align-items: center;
- overflow: hidden;
}
.row > * {
@@ -69,17 +68,23 @@
text-decoration: underline;
}
-.detail {
- transform: scale(0.6, 1) rotate(-90deg);
- background: none;
- border: none;
- outline: none;
- cursor: pointer;
+::deep .button {
+ width: fit-content;
+ transform: rotate(-90deg);
+ transition: transform 0.2s ease-in-out;
+ justify-self: center;
}
-::deep .detail svg {
- fill: var(--white);
-}
+ ::deep .button svg {
+ fill: var(--white);
+ height: 20px;
+ width: 20px;
+ transform: scale(1, 0.6);
+ }
+
+ ::deep .button:hover, ::deep .button.selected {
+ transform: translate(-4px, 2px);
+ }
@media screen and (max-width: 700px) {
.release-date, .tags, .storage {
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
index 995bafd..73b7dc7 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
@@ -5,8 +5,9 @@
@using GameIdeas.BlazorApp.Shared.Components.ButtonAdd
@using GameIdeas.BlazorApp.Shared.Components.Header
@using GameIdeas.BlazorApp.Shared.Components.Popup
+@using GameIdeas.BlazorApp.Shared.Components.Popup.Components
@using GameIdeas.Resources
-
+@inherits GameBaseComponent
@layout MainLayout