@inherits LayoutComponentBase @inject ISearchService SearchService @inject IWebsiteService WebService @inject IDataCollectionService DataCollectionService @inject NavigationManager NavigationManager @using Services.Website @implements IDisposable IGP Fan Reference Build Calculator Harass Calculator Database Build Calculator Harass Calculator Database
@Body
@code { private bool _isDarkMode = true; private MudThemeProvider _mudThemeProvider; bool _drawerOpen = true; void DrawerToggle() { _drawerOpen = !_drawerOpen; } protected override void OnInitialized() { base.OnInitialized(); WebService.Subscribe(HasChanged); CollectFirstPageLoaded(); } protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { //TODO: Support light mode //_isDarkMode = await _mudThemeProvider.GetSystemPreference(); //StateHasChanged(); } } private void CollectFirstPageLoaded() { var skipBaseUri = NavigationManager.Uri.Substring(NavigationManager.BaseUri.Length, NavigationManager.Uri.Length - NavigationManager.BaseUri.Length); var rootUrl = skipBaseUri.Split("/").First(); if (rootUrl.Trim().Equals("")) { rootUrl = "home"; } DataCollectionService.SendEvent(DataCollectionKeys.FirstPage, new Dictionary { { "page", rootUrl } }); } protected override async Task OnInitializedAsync() { await WebService.Load(); await Focus(); } private async Task Focus() { // await jsRuntime.InvokeVoidAsync("SetFocusToElement", pageContents); } protected override async void OnAfterRender(bool firstRender) { // await jsRuntime.InvokeVoidAsync("SetFocusToElement", pageContents); } void IDisposable.Dispose() { WebService.Unsubscribe(HasChanged); } void HasChanged() { StateHasChanged(); } private void HandleKeyDown(KeyboardEventArgs keyboardEventArgs) { if ((keyboardEventArgs.CtrlKey || keyboardEventArgs.MetaKey) && keyboardEventArgs.Key.ToLower() == "k") { SearchService.Show(); } } }