@inject IJSRuntime Js @if (_display) { } @code { [Parameter] [EditorRequired] public required RenderFragment ChildContent { get; set; } private bool _display; private float _top; private float _left; private IJSInProcessObjectReference _module = null!; protected override async Task OnInitializedAsync() { _module = (IJSInProcessObjectReference)await Js.InvokeAsync("import", "./Components/Menu.razor.js"); } public void Toggle(ElementReference root) { if (!_display) { var pos = _module.Invoke>("getPosition", root); _left = pos[0]; _top = pos[1]; } _display = !_display; StateHasChanged(); } public void Close() { _display = false; StateHasChanged(); } }