@inject IJsInterop JsInterop @code { private System.Timers.Timer? _collapseTimer; private string? _showClass; private bool _isExpanded; [Parameter] public string? ButtonClass { get; set; } [Parameter] public RenderFragment? ButtonContent { get; set; } [Parameter] public string? DropDownClass { get; set; } [Parameter] public string? DropDownMenuClass { get; set; } [Parameter] public RenderFragment? ChildListItems { get; set; } private void ToggleShown() { _isExpanded = !_isExpanded; _showClass = _isExpanded ? "show" : ""; } private void MouseEnter() { _collapseTimer?.Dispose(); } private void MouseLeft() { _collapseTimer?.Dispose(); _collapseTimer = new System.Timers.Timer(1500); _collapseTimer.Elapsed += (sender, args) => { _isExpanded = false; _showClass = ""; InvokeAsync(StateHasChanged); }; _collapseTimer.Start(); } }