@implements IDisposable; @inject ISearchService searchService @inject IJSRuntime jsRuntime @inject NavigationManager navigationManager @if (searchService.IsLoaded()) {
} @code { private ElementReference searchBox; private string SearchText { get; set; } = ""; protected override void OnInitialized() { searchService.Subscribe(OnSearchChanged); } private void OnSearchChanged() { if (searchService.IsVisible) { jsRuntime.InvokeVoidAsync("SetFocusToElement", "search-dialog-input"); } } public void Dispose() { searchService.Unsubscribe(OnSearchChanged); } public void CloseDialog() { searchService.Hide(); } public void NavigateTo(string url) { if (url.Contains("#")) { navigationManager.NavigateTo(url, navigationManager.Uri.Split("#").First().Contains(url.Split("#").First())); } else { navigationManager.NavigateTo(url); } } private void SearchChanged(ChangeEventArgs obj) { SearchText = obj.Value!.ToString()!; } private void OnSearch(SearchPointModel searchPoint) { NavigateTo(searchPoint.Href); searchService.Hide(); } }