button select uses name for uniqueness

This commit is contained in:
2023-10-04 14:06:07 -06:00
parent 1dc9655de7
commit 8d5d820c50
4 changed files with 14 additions and 29 deletions

View File

@@ -6,12 +6,8 @@
public string Label { get; set; } = string.Empty;
[Parameter, EditorRequired]
public IEnumerable<T> Options { get; set; } = default!;
[Parameter, EditorRequired]
public Func<T, string> GetId { get; set; } = default!;
[Parameter, EditorRequired]
public Func<T, string> GetName { get; set; } = default!;
public Func<T?, string?> GetName { get; set; } = default!;
[Parameter, EditorRequired]
public Action<T?> OnSelect { get; set; } = default!;
@@ -19,26 +15,17 @@
[Parameter, EditorRequired]
public T? SelectedOption { get; set; }
protected override void OnParametersSet()
{
selectedItemId = SelectedOption != null ? GetId(SelectedOption) : "";
}
private string htmlLabel => Label.Replace("-", "");
private string selectedItemId { get; set; }
private void onSelect(T option)
{
SelectedOption = option;
selectedItemId = GetId(option);
OnSelect(SelectedOption);
}
private string getButtonClasS(T option)
private string getButtonClass(T option)
{
var partClass = selectedItemId == GetId(option) ? "primary" : "outline-primary";
var partClass = GetName(option) == GetName(SelectedOption) ? "primary" : "outline-primary";
return $"mx-1 btn btn-{partClass}";
}
}
@@ -46,8 +33,8 @@
<div>
@foreach(var option in Options)
{
<button
class="@getButtonClasS(option)"
<button
class="@getButtonClass(option)"
@onclick="() => onSelect(option)"
>
@GetName(option)