@typeparam TBind @if (Visible) { } @code { private TBind _value = default!; [Parameter] [EditorRequired] public required IEnumerable> Elements { get; set; } [Parameter] [EditorRequired] public required TBind Value { get => _value; set { _value = value; CurrentSelection = Elements.First(element => element.Selection != null && element.Selection.Equals(value)); CurrentIcon = CurrentSelection.Icon; } } [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()); } }