@typeparam TBind @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()); } }