Files
NewMudForms.RCL/Components/NewMudEnumSelect.razor
T
2026-08-07 02:17:23 +03:00

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; }
}
}