diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor index c223842..02ae4db 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Components/GameCreationForm.razor @@ -19,13 +19,15 @@
@ResourcesKey.Developers :
- +
@ResourcesKey.Publishers :
- +
@@ -37,19 +39,22 @@
@ResourcesKey.Properties :
- +
@ResourcesKey.Tags :
- +
@ResourcesKey.Platforms :
- +
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 b116719..c5f2c1e 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 @@ -36,10 +36,10 @@ public partial class GameFilter { Headers = SortTypes, GetHeaderLabel = header => header.Label, - DefaultHeader = SortTypes.FirstOrDefault(h => h.SortType == SortType.Ascending), + DefaultHeaders = SortTypes.Where(h => h.SortType == SortType.Ascending).ToList(), Items = GameProperties, GetItemLabel = item => item.Label, - DefaultItem = GameProperties.FirstOrDefault(p => p.Label == "Titre") + DefaultItems = GameProperties.Where(p => p.Label == "Titre").ToList() }; } diff --git a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor index dd57a3a..2e55110 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Pages/Games/Header/GameHeader.razor @@ -23,8 +23,7 @@ + + + + + } + @if (Params.Headers != null) { - @foreach (var header in Params.Headers) + @foreach (var header in Params.Headers.Union(HeaderValues ?? [])) { } @if (Params.Items != null) { - @foreach (var item in Params.Items) + @foreach (var item in Params.Items.Union(Values ?? [])) { [Parameter] public SelectTheme Theme { get; set; } [Parameter] public SelectType Type { get; set; } = SelectType.Single; [Parameter] public bool DisableClicked { get; set; } = false; + [Parameter] public bool QuickAdd { get; set; } = false; private bool IsContentOpen = false; + private string AddLabel = string.Empty; + private EditContext? QuickAddEditContext; public void Close() => IsContentOpen = false; @@ -23,6 +30,21 @@ public partial class Select public void Open() => IsContentOpen = true; + protected override void OnInitialized() + { + QuickAddEditContext = new EditContext(AddLabel); + + if (Params.DefaultItems.Count != 0) + { + Values.AddRange(Params.DefaultItems); + } + + if (Params.DefaultHeaders.Count != 0) + { + HeaderValues.AddRange(Params.DefaultHeaders); + } + } + private void HandleButtonClicked() { if (!DisableClicked) @@ -32,19 +54,6 @@ public partial class Select private void HandleContentClosed() => IsContentOpen = false; - protected override void OnInitialized() - { - if (Params.DefaultItem != null) - { - Values.Add(Params.DefaultItem); - } - - if (Params.DefaultHeader != null) - { - HeaderValues.Add(Params.DefaultHeader); - } - } - private async Task HandleValueClicked(TItem value) { if (Type != SelectType.Multiple || Values == null) @@ -82,4 +91,17 @@ public partial class Select await HeaderValuesChanged.InvokeAsync(HeaderValues); } + private async Task HandleSubmitAdd() + { + if (Regex.IsMatch(AddLabel, GlobalConstants.RegexSelectRow) && + Params.AddItem != null) + { + Values ??= []; + Values.Add(Params.AddItem(AddLabel)); + + AddLabel = string.Empty; + + await ValuesChanged.InvokeAsync(Values); + } + } } \ 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 7dce1f0..2f564c1 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 @@ -29,6 +29,20 @@ display: none; } +.add-item { + align-content: center; + height: 24px; + padding: 0 10px; +} + +.add-item input { + width: 100%; + color: var(--white); + border: none; + outline: none; + background: transparent; +} + .dropdown::-webkit-scrollbar { width: 10px; } @@ -72,4 +86,16 @@ border-bottom: 2px solid var(--input-selected); } +/***** Sort Theme *****/ +.creation .content { + border-radius: var(--small-radius); + box-sizing: border-box; + border: solid 1px var(--violet); +} + +.creation .content .line { + display: block; + margin: 2px 6px; + border-bottom: 2px solid var(--input-selected); +} 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 e169a80..a9e74bb 100644 --- a/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor +++ b/src/GameIdeas/Client/GameIdeas.BlazorApp/Shared/Components/SelectSearch/SelectSearch.razor @@ -6,7 +6,7 @@ @typeparam TItem