@typeparam TBind
@CurrentIcon
@if (Visible)
{
}
@code {
[Parameter] [EditorRequired] public required IEnumerable> Elements { get; set; }
[Parameter] [EditorRequired] public required TBind Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
private DropdownElement? CurrentSelection { get; set; }
private RenderFragment? CurrentIcon { get; set; }
private bool Visible { get; set; } = false;
private void UpdateSelected(DropdownElement element)
{
CurrentSelection = element;
CurrentIcon = CurrentSelection.Icon;
ValueChanged.InvokeAsync(element.Selection);
Visible = false;
}
private void Toggle()
{
Visible = !Visible;
}
protected override void OnInitialized()
{
UpdateSelected(Elements.FirstOrDefault() ?? throw new InvalidOperationException());
}
}