diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor index 79c9572..84907eb 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor @@ -1,22 +1,37 @@ @using GameIdeas.BlazorApp.Shared.Components.Select @using GameIdeas.Shared.Dto +@using GameIdeas.BlazorApp.Pages.Games.Models - - - - - - - - - + + + + + + + + + + + + HandleDisplayClicked(DisplayType.List))"> + + + + + + HandleDisplayClicked(DisplayType.Card))"> + + + + + diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs index 5868c38..36c0646 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.cs @@ -1,12 +1,19 @@ +using GameIdeas.BlazorApp.Pages.Games.Models; using GameIdeas.BlazorApp.Shared.Components.Select; using GameIdeas.Shared.Dto; using GameIdeas.Shared.Enum; +using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; namespace GameIdeas.BlazorApp.Pages.Games.Filter; public partial class GameFilter { + [Parameter] public GameFilterParams GameFilterParams { get; set; } = new(); + [Parameter] public EventCallback GameFilterParamsChanged { get; set; } + [Parameter] public DisplayType DisplayType { get; set; } + [Parameter] public EventCallback DisplayTypeChanged { get; set; } + private readonly IEnumerable>> SortTypes = [ new() { Item = _ => SortType.Ascending, Label = "Ascendant", IsSelected = true }, new() { Item = _ => SortType.Descending, Label = "Descendant" } @@ -18,20 +25,24 @@ public partial class GameFilter ]; private EditContext? EditContext; - private GameFilterParams GameFilterParams = new(); protected override void OnInitialized() { EditContext = new EditContext(GameFilterParams); - EditContext.OnFieldChanged += HandleFormChanged; + EditContext.OnFieldChanged += async (s, e) => + { + await GameFilterParamsChanged.InvokeAsync(GameFilterParams); + }; } - private void HandleFormChanged(object? sender, FieldChangedEventArgs e) - { - throw new NotImplementedException(); - } private void HandleSortTypeChanged(Func getHeader) { GameFilterParams.SortType = (SortType?)getHeader(null) ?? SortType.Ascending; } + + private async Task HandleDisplayClicked(DisplayType displayType) + { + DisplayType = displayType; + await DisplayTypeChanged.InvokeAsync(displayType); + } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css index a1e4e53..34db4b4 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor.css @@ -1,4 +1,10 @@ -.sort-button { +.form-filter { + display: flex; + flex-direction: row; + gap: 8px; +} + +.square-button { height: 28px; width: 28px; border-radius: var(--small-radius); @@ -6,12 +12,34 @@ overflow: hidden; } -.sort-button svg { + .square-button:first-child { + margin-right: 16px; + } + +.square-button svg { fill: var(--white); +} + + .square-button svg:hover { + cursor: pointer; + background: var(--low-white); + } + +.selected-icon { + fill: var(--violet) !important; +} + +.sort-icon { padding: 2px; } - .sort-button svg:hover { - cursor: pointer; - background: var(--low-white); - } \ No newline at end of file +.list-icon { + padding-right: 1px; + padding-top: 0.5px; + padding-bottom: 0.5px; +} + +.card-icon { + padding-top: 1px; + padding-right: 1px; +} \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor index d317dda..e30c95a 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor @@ -11,6 +11,6 @@ - + \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs index dc671cf..d4cfdaf 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs @@ -1,6 +1,8 @@ +using GameIdeas.BlazorApp.Pages.Games.Models; + namespace GameIdeas.BlazorApp.Pages.Games; public partial class GamesBase () { - + private DisplayType DisplayType = DisplayType.List; } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs new file mode 100644 index 0000000..f3c0af4 --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs @@ -0,0 +1,7 @@ +namespace GameIdeas.BlazorApp.Pages.Games.Models; + +public enum DisplayType +{ + Card, + List +} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.css index bdbf6ba..facfbda 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.css @@ -34,7 +34,7 @@ /***** Sort Theme *****/ .select-content.sort { - background: var(--black); + background: var(--semi-black); box-shadow: var(--drop-shadow); padding: 4px 0; } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css index b744d36..725eae6 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css @@ -8,7 +8,7 @@ --yellow: #FFC107; --green: #43F8C0; --light-grey: #5C5C5E; - --black: rgba(44, 43, 46, 0.8); + --black: rgba(0, 0, 0, 0.8); --white: #fff; --low-white: rgb(255, 255, 255, 0.1); --semi-black: rgba(0, 0, 0, 0.5);