diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor index 8b1aa4e..071eba2 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor @@ -3,10 +3,4 @@
@Body -
- -
- - -
\ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css index 60ead01..e002557 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Layouts/MainLayout.razor.css @@ -2,47 +2,4 @@ display: flex; flex-direction: column; height: 100%; -} - -.orb { - position: absolute; - border-radius: 100%; - z-index: var(--index-orb); -} - -.green { - width: 80vh; - height: 80vh; - top: -20vh; - background: #315941; - filter: blur(30vh); -} - -.blue { - width: 80vw; - height: 80vw; - left: 10vw; - top: 50vh; - background: #3A4156; - filter: blur(30vh); -} - -.red { - width: 100vh; - height: 100vh; - left: 60vw; - top: -40vh; - background: #593533; - filter: blur(30vh); -} - -.background { - height: 100vh; - width: 100vw; - background: var(--background); - position: fixed; - overflow: hidden; - top: 0; - left: 0; - z-index: var(--index-background); } \ 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 9e28609..5280e11 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Detail/GameDetail.razor.cs @@ -22,7 +22,7 @@ public partial class GameDetail : GameBaseComponent private void HandleSubmitNewGame() { - NavigationManager.NavigateTo("/"); + NavigationManager.NavigateTo("/Games"); } private async Task FetchGameDetail() @@ -30,6 +30,7 @@ public partial class GameDetail : GameBaseComponent try { IsLoading = true; + StateHasChanged(); Game = await GameGateway.GetGameById(GameId); } @@ -40,6 +41,7 @@ public partial class GameDetail : GameBaseComponent finally { IsLoading = false; + StateHasChanged(); } } } \ No newline at end of file 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 50cb2dc..065a99d 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 @@ -59,6 +59,7 @@ public partial class GameCreationForm try { IsLoading = true; + StateHasChanged(); int gameId; var authState = await AuthenticationState.GetAuthenticationStateAsync(); @@ -108,6 +109,7 @@ public partial class GameCreationForm try { IsLoading = true; + StateHasChanged(); GameDto = await GameGateway.GetGameById(gameId); } @@ -118,9 +120,8 @@ public partial class GameCreationForm finally { IsLoading = false; + EditContext = new(GameDto); + StateHasChanged(); } - - 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 4d3a824..c3b7e0a 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 @@ -34,6 +34,7 @@ grid-column: 2; box-sizing: border-box; color: var(--white); + padding: 0 8px; } ::deep input[type="date"]::-webkit-calendar-picker-indicator { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRowSkeleton.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRowSkeleton.razor.css index df41d48..b98c317 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRowSkeleton.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameRowSkeleton.razor.css @@ -96,16 +96,4 @@ .tags, .storage { display: none; } -} - -@keyframes loading { - 0% { - background: rgb(255, 255, 255, 0.05); - } - 50% { - background: rgb(255, 255, 255, 0.2); - } - 100% { - background: rgb(255, 255, 255, 0.05); - } } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor index 37c3ae6..454cea8 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor @@ -4,6 +4,8 @@ @using GameIdeas.BlazorApp.Shared.Constants @using GameIdeas.Shared.Dto + +
@ResourcesKey.Filters @@ -27,15 +29,15 @@ - @ResourcesKey.LastAdd
- - diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs index a3ab225..50cd8ef 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Filter/AdvancedGameFilter.razor.cs @@ -4,6 +4,7 @@ using GameIdeas.BlazorApp.Shared.Components.Select.Models; using GameIdeas.Resources; using GameIdeas.Shared.Dto; using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Routing; namespace GameIdeas.BlazorApp.Pages.Games.Filter; @@ -48,13 +49,24 @@ public partial class AdvancedGameFilter throw new ArgumentNullException(ResourcesKey.ErrorStorageSpaceLabel); } - private void HandleExpandFilter(Microsoft.AspNetCore.Components.Web.MouseEventArgs args) + private void HandleExpandFilterAsync(Microsoft.AspNetCore.Components.Web.MouseEventArgs args) { ExpandedFilter = true; BackdropFilter?.Show(); } - private void HandleBackdropFilterClicked() + + private void HandleBackdropFilterClickedAsync() { ExpandedFilter = false; } + + private void HandleLocationChanged(LocationChangingContext locationContext) + { + if (ExpandedFilter) + { + ExpandedFilter = false; + BackdropFilter?.Hide(); + locationContext.PreventNavigation(); + } + } } \ 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 73b7dc7..3adf599 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor @@ -1,4 +1,4 @@ -@page "/" +@page "/Games" @using GameIdeas.BlazorApp.Pages.Games.Components @using GameIdeas.BlazorApp.Pages.Games.Filter @using GameIdeas.BlazorApp.Shared.Components @@ -23,10 +23,20 @@
@if (!IsLoading) { - @foreach (var game in GamesDto) + @if (GamesDto.NumberOfGames != 0) { - +
@string.Format(ResourcesKey.GamesNumberFormat, GamesDto.NumberOfGames)
+ + @foreach (var game in GamesDto.Games) + { + + } } + else + { +
@ResourcesKey.NoGames
+ } + } else { 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 dc72481..b1dd277 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Games.razor.cs @@ -12,7 +12,7 @@ public partial class Games : GameBaseComponent { private DisplayType DisplayType = DisplayType.List; private GameFilterParams GameFilter = new(); - private IEnumerable GamesDto = []; + private GameListDto GamesDto = new(); private int CurrentPage; private Popup? DeletePopup; private GameDto? GameToDelete; @@ -37,6 +37,7 @@ public partial class Games : GameBaseComponent try { IsLoading = displayLoader; + StateHasChanged(); GamesDto = await GameGateway.FetchGames(GameFilter, CurrentPage); } @@ -47,6 +48,7 @@ public partial class Games : GameBaseComponent finally { IsLoading = false; + StateHasChanged(); } } private async Task HandleFilterChanged(GameFilterParams args) @@ -91,6 +93,7 @@ public partial class Games : GameBaseComponent try { IsLoading = true; + StateHasChanged(); await GameGateway.DeleteGame(GameToDelete?.Id ?? 0); await HandleFetchDatas(false); diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/GameGateway.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/GameGateway.cs index 0affe3f..f2f4b8c 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/GameGateway.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/GameGateway.cs @@ -35,7 +35,7 @@ public class GameGateway(IHttpClientService httpClientService) : IGameGateway } } - public async Task> FetchGames(GameFilterParams filterParams, int currentPage) + public async Task FetchGames(GameFilterParams filterParams, int currentPage) { try { @@ -52,9 +52,11 @@ public class GameGateway(IHttpClientService httpClientService) : IGameGateway PropertyIds = filterParams.Properties?.Select(d => d.Id ?? 0).ToList(), ReleaseYears = filterParams.ReleaseYears, TagIds = filterParams.Tags?.Select(d => d.Id ?? 0).ToList(), + SortPropertyName = filterParams.SortProperty?.PropertyName, + SortType = filterParams.SortType?.SortType }; - var result = await httpClientService.FetchDataAsync>(Endpoints.Game.Fetch(filter)); + var result = await httpClientService.FetchDataAsync(Endpoints.Game.Fetch(filter)); return result ?? throw new InvalidOperationException(ResourcesKey.ErrorFetchGames); } catch (Exception) diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/IGameGateway.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/IGameGateway.cs index ac8cb99..7c1825e 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/IGameGateway.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Gateways/IGameGateway.cs @@ -7,7 +7,7 @@ public interface IGameGateway { Task FetchCategories(); Task CreateGame(GameDetailDto game); - Task> FetchGames(GameFilterParams filter, int currentPage); + Task FetchGames(GameFilterParams filter, int currentPage); Task GetGameById(int gameId); Task DeleteGame(int gameIdToDelete); Task UpdateGame(GameDetailDto gameDto); diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Redirect/RedirectToGames.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Redirect/RedirectToGames.razor new file mode 100644 index 0000000..f9a3eaf --- /dev/null +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Redirect/RedirectToGames.razor @@ -0,0 +1,10 @@ +@page "/" + +@inject NavigationManager navigationManager + +@code { + protected override void OnInitialized() + { + navigationManager.NavigateTo("/Games"); + } +} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.cs index 4fcb3f7..eb42276 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.cs @@ -28,6 +28,8 @@ public partial class Login try { IsLoading = true; + StateHasChanged(); + await AuthGateway.Login(UserDto); } catch (Exception) diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.css index 04ccf95..0e3214e 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/Components/Login.razor.css @@ -50,6 +50,6 @@ border-radius: 50%; border: 3px solid rgba(0, 0, 0, 0.2); border-top-color: var(--white); - animation: loading 1s linear infinite; + animation: spin 1s linear infinite; justify-self: center; } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/UserMenu.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/UserMenu.razor.cs index 093b70e..b339592 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/UserMenu.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/UserMenu/UserMenu.razor.cs @@ -14,7 +14,7 @@ public partial class UserMenu { ContentVisile = false; await AuthGateway.Logout(); - NavigationManager.NavigateTo("/"); + NavigationManager.NavigateTo("/Games"); } private void HandleAccountClicked() diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRowSkeleton.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRowSkeleton.razor.css index 7d553ed..f654176 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRowSkeleton.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Components/UserRowSkeleton.razor.css @@ -54,16 +54,3 @@ fill: var(--yellow); } -@keyframes loading { - 0% { - background: rgb(255, 255, 255, 0.05); - } - - 50% { - background: rgb(255, 255, 255, 0.2); - } - - 100% { - background: rgb(255, 255, 255, 0.05); - } -} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor index 0fbc631..08e129f 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor @@ -16,7 +16,7 @@
+ Items="Roles.ToList()" GetLabel="@(role => role.Name)" Theme="SelectTheme.Filter" />
@@ -28,9 +28,18 @@
@if (!IsLoading) { - @foreach (var user in UserList.Users ?? []) + @if (UserList.UsersCount != 0) { - +
@string.Format(ResourcesKey.UsersNumberFormat, UserList.UsersCount)
+ + @foreach (var user in UserList.Users ?? []) + { + + } + } + else + { +
@ResourcesKey.NoUsers
} } else diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs index 7bd0a6b..5eefe30 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Users/Users.razor.cs @@ -36,18 +36,17 @@ public partial class Users } - await FetchData(); + await FetchUsers(); + await FetchRoles(); await base.OnInitializedAsync(); } - private async Task FetchData(bool fetchRoles = true) + private async Task FetchUsers(bool displayLoading = true) { try { - IsLoading = true; - - if (fetchRoles) - Roles = await UserGateway.GetRoles(); + IsLoading = displayLoading; + StateHasChanged(); UserList = await UserGateway.GetUsers(FilterParams, CurrentPage); } @@ -58,6 +57,27 @@ public partial class Users finally { IsLoading = false; + StateHasChanged(); + } + } + + private async Task FetchRoles() + { + try + { + IsLoading = true; + StateHasChanged(); + + Roles = await UserGateway.GetRoles(); + } + catch (Exception) + { + throw; + } + finally + { + IsLoading = false; + StateHasChanged(); } } @@ -66,9 +86,10 @@ public partial class Users try { IsLoading = true; + StateHasChanged(); await UserGateway.CreateUser(user); - await FetchData(false); + await FetchUsers(); } catch (Exception) { @@ -77,9 +98,9 @@ public partial class Users finally { IsLoading = false; + StateHasChanged(); + UserAdd = new(); } - - UserAdd = new(); } private async Task HandleUpdateUser(UserDto user) @@ -87,9 +108,10 @@ public partial class Users try { IsLoading = true; + StateHasChanged(); await UserGateway.UpdateUser(user); - await FetchData(false); + await FetchUsers(); } catch (Exception) { @@ -98,6 +120,7 @@ public partial class Users finally { IsLoading = false; + StateHasChanged(); } } @@ -113,9 +136,10 @@ public partial class Users try { IsLoading = true; + StateHasChanged(); await UserGateway.DeleteUser(UserDelete.Id); - await FetchData(false); + await FetchUsers(); } catch (Exception) { @@ -124,6 +148,7 @@ public partial class Users finally { IsLoading = false; + StateHasChanged(); } UserDelete = null; @@ -134,7 +159,7 @@ public partial class Users } private async Task HandleFilterChanged() { - await FetchData(false); + await FetchUsers(false); } private void HandleCancelPopupClicked() { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/CircleLoader/CircleLoader.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/CircleLoader/CircleLoader.razor.css index 6eee889..a0d9070 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/CircleLoader/CircleLoader.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/CircleLoader/CircleLoader.razor.css @@ -19,13 +19,3 @@ height: 60px; animation: spin 1s linear infinite; } - -@keyframes spin { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } -} diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs index 54fee3a..dfa22a0 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/GameBaseComponent.cs @@ -24,6 +24,7 @@ public class GameBaseComponent : ComponentBase try { IsLoading = true; + StateHasChanged(); Categories = await GameGateway.FetchCategories(); } @@ -34,6 +35,7 @@ public class GameBaseComponent : ComponentBase finally { IsLoading = false; + StateHasChanged(); } } 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 62963d5..4ccc405 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 @@ -26,7 +26,7 @@ height: 100%; width: 100%; padding: 0; - min-width: 0; + min-width: 0; } .clear-icon { @@ -34,6 +34,7 @@ min-width: 18px; height: 18px; width: 18px; + z-index: 800; } .clear-icon:hover { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Models/SelectParams.cs b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Models/SelectParams.cs index 24b788a..39bf705 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Models/SelectParams.cs +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Models/SelectParams.cs @@ -4,8 +4,10 @@ public class SelectParams { public List Items { get; set; } = []; public Func GetItemLabel { get; set; } = _ => string.Empty; + public Func? GetItemOrder { get; set; } public List Headers { get; set; } = []; public Func GetHeaderLabel { get; set; } = _ => string.Empty; + public Func? GetHeaderOrder { get; set; } public Func? AddItem { get; set; } } 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 1ab6f65..c4cdad9 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor @@ -27,7 +27,7 @@ @if (Params.Headers != null) { - @foreach (var header in (HeaderValues ?? []).UnionBy(Params.Headers, Params.GetHeaderLabel)) + @foreach (var header in GetHeaders()) { await ValuesChanged.InvokeAsync(Values); } } + + private List GetHeaders() => [.. (HeaderValues ?? []) + .UnionBy(Params.Headers, Params.GetHeaderLabel) + .OrderBy(Params.GetHeaderOrder ?? Params.GetHeaderLabel)]; + + private List GetItems() => [.. (Values ?? []) + .UnionBy(Params.Items, Params.GetItemLabel) + .OrderBy(Params.GetItemOrder ?? Params.GetItemLabel)]; } \ No newline at end of file diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.css b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.css index 4faecde..5353fb6 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.css +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/Select/Select.razor.css @@ -22,8 +22,6 @@ overflow: hidden; display: flex; flex-direction: column; - animation-name: fade-in; - animation-duration: 0.2s; } .line { diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor index 383fdb8..9184918 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor @@ -5,12 +5,12 @@ @typeparam TItem -