diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css index 00c4284..407f5bd 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css @@ -1,8 +1,7 @@ .page { display: flex; flex-direction: column; - max-height: 100vh; - height: 100vh; + height: 100%; } .orb { 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 82e7152..06a2942 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/GameFilter.razor @@ -2,67 +2,61 @@ @using GameIdeas.BlazorApp.Shared.Components.Select @using GameIdeas.BlazorApp.Shared.Components.Select.Models @using GameIdeas.BlazorApp.Shared.Components.SliderRange +@using GameIdeas.BlazorApp.Shared.Models @using GameIdeas.Shared.Dto -@using GameIdeas.BlazorApp.Pages.Games.Models - - -
- - - - -
- - +
+ +
+ +
+
-
- - - -
- -
- -
- -
- -
- -
- -
- -
- -
+
+ + +
- - + +
+ + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
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 3802ba3..7fda92f 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,6 +1,6 @@ -using GameIdeas.BlazorApp.Pages.Games.Models; using GameIdeas.BlazorApp.Shared.Components.Select.Models; using GameIdeas.BlazorApp.Shared.Components.SliderRange; +using GameIdeas.BlazorApp.Shared.Models; using GameIdeas.Shared.Dto; using GameIdeas.Shared.Enum; using Microsoft.AspNetCore.Components; @@ -10,7 +10,7 @@ namespace GameIdeas.BlazorApp.Pages.Games.Filter; public partial class GameFilter { - [Parameter] public GameFilterParams? GameFilterParams { get; set; } + [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; } @@ -45,7 +45,7 @@ public partial class GameFilter protected override void OnInitialized() { - EditContext = new EditContext(GameFilterParams!); + EditContext = new EditContext(GameFilterParams); EditContext.OnFieldChanged += async (s, e) => { await GameFilterParamsChanged.InvokeAsync(GameFilterParams); @@ -54,7 +54,7 @@ public partial class GameFilter private void HandleSortTypeChanged(Func getHeader) { - GameFilterParams!.SortType = (SortType?)getHeader(null) ?? SortType.Ascending; + GameFilterParams.SortType = (SortType?)getHeader(null) ?? SortType.Ascending; } private async Task HandleDisplayClicked(DisplayType displayType) diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor index 836cbb5..3da8b3f 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor @@ -1,20 +1,18 @@ @page "/Games" @using GameIdeas.BlazorApp.Layouts @using GameIdeas.BlazorApp.Pages.Games.Filter +@using GameIdeas.BlazorApp.Pages.Games.Header @using GameIdeas.BlazorApp.Shared.Components -@using GameIdeas.BlazorApp.Shared.Layouts.Header @using GameIdeas.Resources @layout MainLayout @ResourcesKey.GamesIdeas - - - - - + + +
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 2909e73..0fcb9fa 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.cs @@ -1,5 +1,5 @@ using GameIdeas.BlazorApp.Pages.Games.Filter; -using GameIdeas.BlazorApp.Pages.Games.Models; +using GameIdeas.BlazorApp.Shared.Models; namespace GameIdeas.BlazorApp.Pages.Games; diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.css index d1ba3fc..5dc75c2 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/GamesBase.razor.css @@ -1,5 +1,6 @@ .container { margin-top: 20px; + margin-bottom: 10px; justify-content: space-between; display: flex; flex-direction: row; diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor similarity index 79% rename from src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor rename to src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor index 17f9cc6..c222be4 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor @@ -1,18 +1,18 @@ @using GameIdeas.BlazorApp.Pages.Games -@using GameIdeas.BlazorApp.Pages.Games.Models @using GameIdeas.BlazorApp.Shared.Components.Account @using GameIdeas.BlazorApp.Shared.Components.Select @using GameIdeas.BlazorApp.Shared.Components.Select.Models +@using GameIdeas.BlazorApp.Shared.Models @using GameIdeas.Resources -@inherits LayoutComponentBase +@inherits ComponentBase
Game Ideas
- @Body + @ChildContent diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.cs similarity index 80% rename from src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.cs rename to src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.cs index f3e335a..ee0a45e 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.cs @@ -1,14 +1,16 @@ -using GameIdeas.BlazorApp.Pages.Games.Models; using GameIdeas.BlazorApp.Shared.Components.Account; using GameIdeas.BlazorApp.Shared.Components.Select.Models; +using GameIdeas.BlazorApp.Shared.Models; using GameIdeas.Resources; using Microsoft.AspNetCore.Components; -namespace GameIdeas.BlazorApp.Shared.Layouts.Header; +namespace GameIdeas.BlazorApp.Pages.Games.Header; -public partial class HeaderLayout : LayoutComponentBase +public partial class GamesHeader : ComponentBase { [Parameter] public EventCallback AddTypeChanged { get; set; } + [Parameter] public RenderFragment? ChildContent { get; set; } + private readonly IEnumerable> SelectElements = [ new SelectElement { Item = AddType.Manual, Label = ResourcesKey.ManualAdd }, diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.css similarity index 97% rename from src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.css rename to src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.css index 013f027..a27186c 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Layouts/Header/HeaderLayout.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GamesHeader.razor.css @@ -5,7 +5,6 @@ align-items: flex-end; padding: 0px 10px; height: 40px; - z-index: var(--index-layout) } .icon-container { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/AddType.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/AddType.cs deleted file mode 100644 index d526be0..0000000 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/AddType.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace GameIdeas.BlazorApp.Pages.Games.Models; - -public enum AddType -{ - Manual, - Auto -} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs deleted file mode 100644 index f3c0af4..0000000 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Models/DisplayType.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace GameIdeas.BlazorApp.Pages.Games.Models; - -public enum DisplayType -{ - Card, - List -} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Search/SearchInput.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Search/SearchInput.razor.css index 2b6eddc..01ca8c0 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Search/SearchInput.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Search/SearchInput.razor.css @@ -13,6 +13,11 @@ justify-content: space-between; } +.buttons { + display: flex; + align-items: center; +} + ::deep .search-field { border: none !important; outline: none !important; diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/MultipleSelectList.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/MultipleSelectList.razor.cs index 870cf7c..5c372af 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/MultipleSelectList.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/MultipleSelectList.razor.cs @@ -24,6 +24,7 @@ public partial class MultipleSelectList SearchInput?.SetText(string.Join(", ", Values)); await ValuesChanged.InvokeAsync(Values); + StateHasChanged(); } private async Task HandleTextChanged() diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor index 0aee122..09b6230 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor @@ -1,15 +1,14 @@ -@using GameIdeas.BlazorApp.Shared.Components.Select.Components +@using GameIdeas.BlazorApp.Shared.Components.BackdropFilter +@using GameIdeas.BlazorApp.Shared.Components.Select.Components @typeparam TItem
- @Button + @ChildContent
-
- @if (ContentVisile) +
+ @if (IsContentOpen) {
@foreach (var item in Headers) @@ -35,3 +34,6 @@
+ + diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.cs index 59423dd..ffcd07b 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/SelectList.razor.cs @@ -5,7 +5,7 @@ namespace GameIdeas.BlazorApp.Shared.Components.Select; public partial class SelectList { - [Parameter] public RenderFragment? Button { get; set; } + [Parameter] public RenderFragment? ChildContent { get; set; } [Parameter] public TItem? Value { get; set; } [Parameter] public EventCallback ValueChanged { get; set; } [Parameter] public TItem? Header { get; set; } @@ -15,27 +15,16 @@ public partial class SelectList [Parameter] public SelectListTheme Theme { get; set; } [Parameter] public bool AlignRight { get; set; } - private bool ContentVisile = false; - private DateTime ContentLastFocusOut = DateTime.Now; - private ElementReference Container; + private bool IsContentOpen = false; - public async Task OpenAsync() + private void HandleButtonClicked() { - if (DateTime.Now - ContentLastFocusOut >= TimeSpan.FromSeconds(0.2)) - { - await Container.FocusAsync(); - ContentVisile = true; - } + IsContentOpen = !IsContentOpen; } - public void Close() => ContentVisile = false; - - private async Task HandleButtonClicked() => await OpenAsync(); - - private void HandleFocusOut() + private void HandleContentClosed() { - ContentLastFocusOut = DateTime.Now; - ContentVisile = false; + IsContentOpen = false; } private async Task HandleItemClicked(SelectElement selectedValue) @@ -46,6 +35,7 @@ public partial class SelectList } selectedValue.IsSelected = true; + Value = selectedValue.Item; await ValueChanged.InvokeAsync(Value); } @@ -58,6 +48,7 @@ public partial class SelectList } selectedValue.IsSelected = true; + Header = selectedValue.Item; await HeaderChanged.InvokeAsync(Header); } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/AddType.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/AddType.cs new file mode 100644 index 0000000..6352879 --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/AddType.cs @@ -0,0 +1,7 @@ +namespace GameIdeas.BlazorApp.Shared.Models; + +public enum AddType +{ + Manual, + Auto +} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/DisplayType.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/DisplayType.cs new file mode 100644 index 0000000..c7f3e5a --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Models/DisplayType.cs @@ -0,0 +1,7 @@ +namespace GameIdeas.BlazorApp.Shared.Models; + +public enum DisplayType +{ + Card, + List +} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css index 95c1137..54720d9 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/wwwroot/css/app.css @@ -22,7 +22,6 @@ --index-background: -100; --index-orb: -1; --index-content: 0; - --index-layout: 100; --index-component: 300; --index-floating: 500; --index-backdrop: 700; @@ -33,7 +32,8 @@ html { font-family: 'Noto Sans', sans-serif; font-size: 12px; - color: var(--white) + color: var(--white); + overflow: hidden; } html, body, #app {