diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor
index 9682b3f..052f459 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor
@@ -1,14 +1,22 @@
@page "/Detail/{GameId:int}"
@using GameIdeas.BlazorApp.Helpers
+@using GameIdeas.BlazorApp.Pages.Games.Components
+@using GameIdeas.BlazorApp.Shared.Components
+@using GameIdeas.BlazorApp.Shared.Components.ButtonAdd
@using GameIdeas.BlazorApp.Shared.Components.Header
@using GameIdeas.BlazorApp.Shared.Components.Interest
+@using GameIdeas.BlazorApp.Shared.Components.Popup
@using GameIdeas.BlazorApp.Shared.Components.ReadMore
@using GameIdeas.BlazorApp.Shared.Constants
@using GameIdeas.Shared.Constants
+
+@inherits GameBaseComponent
@layout MainLayout
-
+
+
+
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs
index 035976c..6fc36a7 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs
@@ -6,7 +6,7 @@ namespace GameIdeas.BlazorApp.Pages.Detail;
public partial class GameDetail
{
- [Inject] private IGameGateway GameGateway { get; set; } = default!;
+ [Inject] private NavigationManager NavigationManager { get; set; } = default!;
[Parameter] public int GameId { get; set; }
private GameDetailDto Game = new();
@@ -16,4 +16,9 @@ public partial class GameDetail
Game = await GameGateway.GetGameById(GameId);
await base.OnInitializedAsync();
}
+
+ private void HandleSubmitNewGame()
+ {
+ NavigationManager.NavigateTo("/");
+ }
}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.css
index 430cb0f..af35504 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.css
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.css
@@ -90,7 +90,13 @@
background: var(--input-selected);
}
-@media screen and (min-width: 700px) and (max-width: 1000px) {
+.button {
+ display: flex;
+ width: 100%;
+ justify-content: end;
+}
+
+@media screen and (max-width: 1000px) {
.section {
padding: 20px;
}
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/Games.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
index 995bafd..f64a2ae 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor
@@ -6,7 +6,7 @@
@using GameIdeas.BlazorApp.Shared.Components.Header
@using GameIdeas.BlazorApp.Shared.Components.Popup
@using GameIdeas.Resources
-
+@inherits GameBaseComponent
@layout MainLayout
@ResourcesKey.GamesIdeas
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 3a334de..73e72b5 100644
--- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs
@@ -1,22 +1,15 @@
using GameIdeas.BlazorApp.Pages.Games.Filter;
-using GameIdeas.BlazorApp.Pages.Games.Gateways;
-using GameIdeas.BlazorApp.Shared.Components.Popup;
+using GameIdeas.BlazorApp.Shared.Components;
using GameIdeas.BlazorApp.Shared.Models;
using GameIdeas.Shared.Dto;
using GameIdeas.Shared.Enum;
-using Microsoft.AspNetCore.Components;
namespace GameIdeas.BlazorApp.Pages.Games;
-public partial class Games
+public partial class Games : GameBaseComponent
{
- [Inject] private IGameGateway GameGateway { get; set; } = default!;
-
private DisplayType DisplayType = DisplayType.List;
private GameFilterParams GameFilter = new();
- private Popup? ManualAddPopup;
- private bool IsLoading = false;
- private CategoriesDto? Categories;
private IEnumerable GamesDto = [];
private int CurrentPage;
@@ -33,32 +26,12 @@ public partial class Games
await base.OnInitializedAsync();
}
- private void HandleAddClicked(AddType addType)
- {
- switch (addType)
- {
- case AddType.Manual:
- ManualAddPopup?.Open();
- break;
- case AddType.Auto:
- break;
- default:
- break;
- }
- }
- private void HandleBackdropManualAddClicked()
- {
- ManualAddPopup?.Close();
- }
- private async Task HandleFetchDatas(bool loadCategories = true, bool displayLoader = true)
+ private async Task HandleFetchDatas(bool displayLoader = true)
{
try
{
IsLoading = displayLoader;
- if (loadCategories)
- Categories = await GameGateway.FetchCategories();
-
GamesDto = await GameGateway.FetchGames(GameFilter, CurrentPage);
}
catch (Exception)
@@ -73,6 +46,6 @@ public partial class Games
private async Task HandleFilterChanged(GameFilterParams args)
{
GameFilter = args;
- await HandleFetchDatas(loadCategories: false, displayLoader: false);
+ await HandleFetchDatas(false);
}
}
\ No newline at end of file
diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs
new file mode 100644
index 0000000..c06b794
--- /dev/null
+++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs
@@ -0,0 +1,59 @@
+using GameIdeas.BlazorApp.Pages.Games.Filter;
+using GameIdeas.BlazorApp.Pages.Games.Gateways;
+using GameIdeas.BlazorApp.Shared.Models;
+using GameIdeas.Shared.Dto;
+using Microsoft.AspNetCore.Components;
+
+namespace GameIdeas.BlazorApp.Shared.Components;
+
+public class GameBaseComponent : ComponentBase
+{
+ [Inject] protected IGameGateway GameGateway { get; set; } = default!;
+
+ protected Popup.Popup? ManualAddPopup;
+ protected CategoriesDto? Categories;
+ protected bool IsLoading = false;
+
+ protected override async Task OnInitializedAsync()
+ {
+ await HandleFetchCategories();
+ await base.OnInitializedAsync();
+ }
+
+ private async Task HandleFetchCategories()
+ {
+ try
+ {
+ IsLoading = true;
+
+ Categories = await GameGateway.FetchCategories();
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ finally
+ {
+ IsLoading = false;
+ }
+ }
+
+ protected void HandleAddClicked(AddType addType)
+ {
+ switch (addType)
+ {
+ case AddType.Manual:
+ ManualAddPopup?.Open();
+ break;
+ case AddType.Auto:
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected void HandleBackdropManualAddClicked()
+ {
+ ManualAddPopup?.Close();
+ }
+}