+ @if (QuickAdd)
+ {
+
+
+
+
+
+
+
+ }
+
@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