50 lines
1.3 KiB
Plaintext
50 lines
1.3 KiB
Plaintext
@typeparam TEnum where TEnum : struct, Enum
|
|
|
|
<div class="flex flex-col gap-1">
|
|
<MudSelect T="TEnum?" Variant="Variant" Label="@Label" @bind-Value="Value"
|
|
TextChanged="async () => await SelectValue(Value)" Clearable="true">
|
|
<MudSelectItem T="TEnum?" Value="@(default(TEnum?))">-- None --</MudSelectItem>
|
|
@foreach (var item in Items)
|
|
{
|
|
<MudSelectItem T="TEnum?" Value="@item.Value">@item.Text</MudSelectItem>
|
|
}
|
|
</MudSelect>
|
|
</div>
|
|
|
|
@code {
|
|
[Parameter]
|
|
public Variant Variant { get; set; }
|
|
|
|
[Parameter]
|
|
public string Label { get; set; }
|
|
|
|
[Parameter]
|
|
public TEnum? Value { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback<TEnum?> ValueChanged { get; set; }
|
|
|
|
protected List<SelectItem> Items { get; set; } = new();
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
var values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();
|
|
|
|
Items = values.Select(value => new SelectItem
|
|
{
|
|
Value = value,
|
|
Text = value.GetDisplayName()
|
|
}).ToList();
|
|
}
|
|
|
|
async Task SelectValue(TEnum? value)
|
|
{
|
|
await ValueChanged.InvokeAsync(value);
|
|
}
|
|
|
|
protected class SelectItem
|
|
{
|
|
public TEnum Value { get; set; }
|
|
public string Text { get; set; }
|
|
}
|
|
} |