mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-12 11:55:24 +08:00
9fa391449a
* style: update editorconfig - update editorconfig encoding to utf8 - add CA1852 and IDE0005 rules * style: apply dotnet-format * style: add IDE0040 rule * style: apply dotnet-format * refactor: sealed SimpleEmbeddedJsonLocalizerFactory * style: add style rule for modifiers * fix: resolve dotnet-format unmerged issue * fix: add back translation --------- Co-authored-by: James Yeung <shunjiey@hotmail.com>
77 lines
2.5 KiB
C#
77 lines
2.5 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System.Globalization;
|
|
using System.Threading.Tasks;
|
|
using AntDesign.Docs.Services;
|
|
using AntDesign.Extensions.Localization;
|
|
using Microsoft.AspNetCore.Components;
|
|
using Microsoft.JSInterop;
|
|
|
|
namespace AntDesign.Docs.Shared
|
|
{
|
|
public partial class HeaderMenu : ComponentBase
|
|
{
|
|
[Parameter] public bool IsMobile { get; set; }
|
|
|
|
[Inject] private DemoService DemoService { get; set; }
|
|
|
|
[Inject] private ILocalizationService LocalizationService { get; set; }
|
|
|
|
[Inject] private NavigationManager NavigationManager { get; set; }
|
|
|
|
[Inject] public IJSRuntime JsInterop { get; set; }
|
|
|
|
[CascadingParameter] public ConfigProvider ConfigProvider { get; set; }
|
|
|
|
private string CurrentLanguage => LocalizationService.CurrentCulture.Name;
|
|
|
|
private string Direction => ConfigProvider?.Direction;
|
|
|
|
private DemoMenuItem[] _menuItems = { };
|
|
|
|
private bool _firstRender;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await base.OnInitializedAsync();
|
|
_menuItems = await DemoService.GetMenuAsync();
|
|
|
|
LocalizationService.LanguageChanged += OnLanguageChanged;
|
|
}
|
|
|
|
private void ChangeLanguage(string language)
|
|
{
|
|
var currentUrl = NavigationManager.ToBaseRelativePath(NavigationManager.Uri);
|
|
var newUrl = currentUrl.IndexOf('/') > 0 ? currentUrl.Substring(currentUrl.IndexOf('/') + 1) : currentUrl;
|
|
NavigationManager.NavigateTo($"{language}/{newUrl}");
|
|
}
|
|
|
|
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
{
|
|
if (firstRender)
|
|
{
|
|
_firstRender = true;
|
|
await JsInterop.InvokeVoidAsync("window.DocSearch.init", CurrentLanguage);
|
|
}
|
|
}
|
|
|
|
private async void OnLanguageChanged(object sender, CultureInfo culture)
|
|
{
|
|
if (!_firstRender)
|
|
{
|
|
return;
|
|
}
|
|
_menuItems = await DemoService.GetMenuAsync();
|
|
await JsInterop.InvokeVoidAsync("window.DocSearch.init", culture.Name);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
LocalizationService.LanguageChanged -= OnLanguageChanged;
|
|
}
|
|
}
|
|
}
|