diff --git a/README.md b/README.md index 8c374896..0b22799b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- + MASA Blazor Logo

diff --git a/README.zh-CN.md b/README.zh-CN.md index c32041fc..ac8bafa3 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,5 +1,5 @@ 

- + MASA Blazor Logo

diff --git a/docs/Masa.Blazor.Docs/Examples/components/markdown-parsers/Options.razor b/docs/Masa.Blazor.Docs/Examples/components/markdown-parsers/Options.razor index 323d33a5..0ce59a30 100644 --- a/docs/Masa.Blazor.Docs/Examples/components/markdown-parsers/Options.razor +++ b/docs/Masa.Blazor.Docs/Examples/components/markdown-parsers/Options.razor @@ -21,7 +21,7 @@ - breaks: Convert '\n' in paragraphs into
- linkify: - https://blazor.masastack.com + https://docs.masastack.com - typographer: ""Smartypants, double quotes"" and 'single quotes' "; diff --git a/docs/Masa.Blazor.Docs/Examples/components/toolbars/Variations.razor b/docs/Masa.Blazor.Docs/Examples/components/toolbars/Variations.razor deleted file mode 100644 index 6440e6fe..00000000 --- a/docs/Masa.Blazor.Docs/Examples/components/toolbars/Variations.razor +++ /dev/null @@ -1,61 +0,0 @@ - - @for (var i = 0; i < _bars.Count; i++) - { - var bar = _bars[i]; - - - - - Title - - - mdi-magnify - - - mdi-heart - - - mdi-dots-vertical - - - - - } - - -@code { - class Bar - { - public string Class { get; set; } - - public bool Dark { get; set; } - } - private List _bars = new List - { - new Bar - { - Class="" - }, - new Bar - { - Class="class", - Dark=true - }, - new Bar - { - Class="primary", - Dark=true - }, - new Bar - { - Class="elevation-0" - } - }; -} \ No newline at end of file diff --git a/docs/Masa.Blazor.Docs/Pages/Components.razor b/docs/Masa.Blazor.Docs/Pages/Components.razor index a6fe3c7a..615ce82d 100644 --- a/docs/Masa.Blazor.Docs/Pages/Components.razor +++ b/docs/Masa.Blazor.Docs/Pages/Components.razor @@ -18,7 +18,7 @@ @if (!IsAllComponentsPage) { - + @I18n.T("demo") API diff --git a/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/en-US.md b/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/en-US.md index 4961cb8f..33d62745 100644 --- a/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/en-US.md +++ b/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/en-US.md @@ -91,9 +91,3 @@ It is possible to update the appearance of a toolbar in response to changes in a In this example we offset our card onto the extended content area of a toolbar using the extended prop. - -#### Variations - -A **MToolbar** has multiple variations that can be applied with themes and helper classes. These range from light and dark themes, colored and transparent. - - \ No newline at end of file diff --git a/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/zh-CN.md b/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/zh-CN.md index b0cfd527..0378a182 100644 --- a/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/zh-CN.md +++ b/docs/Masa.Blazor.Docs/wwwroot/pages/components/toolbars/zh-CN.md @@ -87,9 +87,3 @@ related: 在本例中,我们使用 `Extended` 属性将卡片偏移到工具栏的扩展内容区域。 - -#### 变量 - -**MToolbar** 有多个变量,可以应用主题和辅助类。 这些主题包括浅色和深色的主题、彩色和透明。 - - \ No newline at end of file diff --git a/docs/Masa.Docs.Core/Components/DefaultList.razor b/docs/Masa.Docs.Core/Components/DefaultList.razor index d7be879d..3f091cf2 100644 --- a/docs/Masa.Docs.Core/Components/DefaultList.razor +++ b/docs/Masa.Docs.Core/Components/DefaultList.razor @@ -18,7 +18,7 @@ } else if (item.HasChildren()) { - + } else if (ItemContent != null) { @@ -34,8 +34,6 @@ @code { - [Inject] private IJSRuntime JS { get; set; } = null!; - [Parameter] public List Items { get; set; } = new(); [Parameter] public RenderFragment? ItemContent { get; set; } @@ -43,4 +41,6 @@ [Parameter] public bool Routable { get; set; } [Parameter] public string? Class { get; set; } + + [Parameter] public RenderFragment? GroupContent { get; set; } } \ No newline at end of file diff --git a/docs/Masa.Docs.Core/Components/DefaultListGroup.razor b/docs/Masa.Docs.Core/Components/DefaultListGroup.razor index 0c400744..6c9376c6 100644 --- a/docs/Masa.Docs.Core/Components/DefaultListGroup.razor +++ b/docs/Masa.Docs.Core/Components/DefaultListGroup.razor @@ -16,6 +16,7 @@ + @GroupContent?.Invoke(Item?.Title) @if (Item?.Title == "ui-components" && ComponentsGroupByType) { @@ -58,6 +59,9 @@ [Parameter] public bool SubGroup { get; set; } + + [Parameter] + public RenderFragment? GroupContent { get; set; } private List _group = new(); diff --git a/docs/Masa.Docs.Core/Components/FrontMatter.razor b/docs/Masa.Docs.Core/Components/FrontMatter.razor index c1d0283b..0a6d6497 100644 --- a/docs/Masa.Docs.Core/Components/FrontMatter.razor +++ b/docs/Masa.Docs.Core/Components/FrontMatter.razor @@ -1,20 +1,24 @@ 

@Meta.Title

- @if (!string.IsNullOrWhiteSpace(Meta.Tag)) - { - @Meta.Tag - } - @if (AdditionalTags.Any()) - { - foreach (string item in AdditionalTags) - { - @item - } - }
+
+ @if (!string.IsNullOrWhiteSpace(Meta.Tag)) + { + @Meta.Tag + } + + @if (AdditionalTags.Any()) + { + foreach (var item in AdditionalTags) + { + @item + } + } +
+ @ChildContent @code { diff --git a/docs/Masa.Docs.Core/Components/TypedList.razor b/docs/Masa.Docs.Core/Components/TypedList.razor index a2e5acb0..2247c0d2 100644 --- a/docs/Masa.Docs.Core/Components/TypedList.razor +++ b/docs/Masa.Docs.Core/Components/TypedList.razor @@ -7,8 +7,8 @@ { - + + mdi-circle-small @I18n.T("component-type." + groupItem.Key) } diff --git a/docs/Masa.Docs.Shared/Models/Config.cs b/docs/Masa.Docs.Core/Models/Config.cs similarity index 58% rename from docs/Masa.Docs.Shared/Models/Config.cs rename to docs/Masa.Docs.Core/Models/Config.cs index 7d8886bf..d22b68e3 100644 --- a/docs/Masa.Docs.Shared/Models/Config.cs +++ b/docs/Masa.Docs.Core/Models/Config.cs @@ -1,3 +1,3 @@ -namespace Masa.Docs.Shared.Models; +namespace Masa.Docs.Core.Models; public record Config(bool NavComponentsGroupByType); \ No newline at end of file diff --git a/docs/Masa.Docs.Core/Models/Project.cs b/docs/Masa.Docs.Core/Models/Project.cs index 9d96be26..3f052d34 100644 --- a/docs/Masa.Docs.Core/Models/Project.cs +++ b/docs/Masa.Docs.Core/Models/Project.cs @@ -1,3 +1,6 @@ namespace Masa.Docs.Core.Models; -public record Project(string Name, string? Repo, string IconUrl, string RepoUrl, string? Path = null); +public record Project(string? Key, string Name, string? Repo, string IconUrl, string RepoUrl, string? Path = null) +{ + public bool IsValid => Key is not null; +} diff --git a/docs/Masa.Docs.Shared/Components/Search.razor b/docs/Masa.Docs.Shared/Components/Search.razor index c61358fe..29c30b43 100644 --- a/docs/Masa.Docs.Shared/Components/Search.razor +++ b/docs/Masa.Docs.Shared/Components/Search.razor @@ -3,28 +3,38 @@ @inject IJSRuntime Js @inject I18n I18n -
+
@code { - - [CascadingParameter(Name = "project")] - public string? Project { get; set; } - [CascadingParameter(Name = "Env")] public string? Env { get; set; } + [Parameter] + public Project? Project { get; set; } + [Parameter] public string? Class { get; set; } [Parameter] public string? Style { get; set; } - protected override async Task OnAfterRenderAsync(bool firstRender) + private Project? _prevProject; + + private string Display => Project?.IsValid is not true ? "d-none" : string.Empty; + + protected override void OnParametersSet() { - if (firstRender) + base.OnParametersSet(); + + if (_prevProject != Project) { - await InitDocSearchAsync(); + _prevProject = Project; + + if (Project?.IsValid is true) + { + _ = InitDocSearchAsync(); + } } } @@ -32,9 +42,9 @@ { try { - if (Project is null) return; + if (Project?.IsValid is not true) return; var currentLanguage = I18n!.Culture.TwoLetterISOLanguageName; - var indexName = Env + I18n.Culture.TwoLetterISOLanguageName + "_" + Project; + var indexName = Env + I18n.Culture.TwoLetterISOLanguageName + "_" + Project.Key; await Js.InvokeVoidAsync("addDocSearch", indexName, currentLanguage, I18n.T("Search")); } catch @@ -42,4 +52,5 @@ // ignored } } -} \ No newline at end of file + +} diff --git a/docs/Masa.Docs.Shared/Shared/AppBar.razor b/docs/Masa.Docs.Shared/Shared/AppBar.razor index 1512e5f2..c724eadc 100644 --- a/docs/Masa.Docs.Shared/Shared/AppBar.razor +++ b/docs/Masa.Docs.Shared/Shared/AppBar.razor @@ -37,9 +37,6 @@ [Parameter] public Project? ProjectInfo { get; set; } - [Parameter] - public Config? Config { get; set; } - [Parameter] public EventCallback OnCultureChanged { get; set; } diff --git a/docs/Masa.Docs.Shared/Shared/AppBarItems.razor b/docs/Masa.Docs.Shared/Shared/AppBarItems.razor index 1934f524..3d21cc6f 100644 --- a/docs/Masa.Docs.Shared/Shared/AppBarItems.razor +++ b/docs/Masa.Docs.Shared/Shared/AppBarItems.razor @@ -14,10 +14,7 @@ } - @if (ProjectInfo != null) - { - - } + diff --git a/docs/Masa.Docs.Shared/Shared/BaseLayout.razor b/docs/Masa.Docs.Shared/Shared/BaseLayout.razor index 1f1e3a98..4f02d2a2 100644 --- a/docs/Masa.Docs.Shared/Shared/BaseLayout.razor +++ b/docs/Masa.Docs.Shared/Shared/BaseLayout.razor @@ -23,18 +23,17 @@ OnDotClick="@HandleOnDotClick" OnSettingsClick="@HandleSettingsClick" HideAppBarNavIcon="@_hideAppBarNavIcon" - ProjectInfo="@_projectInfo" - Config="@_config"/> + ProjectInfo="@_projectInfo"/> - @Body - +
diff --git a/docs/Masa.Docs.Shared/Shared/BaseLayout.razor.cs b/docs/Masa.Docs.Shared/Shared/BaseLayout.razor.cs index bd5d4ea7..207f2186 100644 --- a/docs/Masa.Docs.Shared/Shared/BaseLayout.razor.cs +++ b/docs/Masa.Docs.Shared/Shared/BaseLayout.razor.cs @@ -14,9 +14,9 @@ public partial class BaseLayout private Project? _projectInfo; private CultureInfo? _culture; private Dictionary _projectMap = new(); - private Config? _config; internal Action? OnAppBarNavIconClick { get; set; } + internal Config? Config { get; set; } protected override void OnInitialized() { @@ -89,7 +89,8 @@ public partial class BaseLayout private async Task InitConfig() { - _config = await LocalStorage.GetItemAsync("masablazor@config"); + Config = await LocalStorage.GetItemAsync("masablazor@config") + ?? new Config(false); } private void NavigationManagerOnLocationChanged(object? sender, LocationChangedEventArgs e) @@ -109,7 +110,8 @@ public partial class BaseLayout if (_project is not null && _projectMap.TryGetValue(_project, out _projectInfo)) return; _projectInfo = new Project( - "MASA Stack", + Key: null, + "MASA Docs", null, "https://cdn.masastack.com/stack/images/logo/MASAStack/logo.png?x-oss-process=image/resize,h_24,m_lfit", "https://github.com/masastack"); @@ -169,14 +171,19 @@ public partial class BaseLayout StateHasChanged(); } + internal void OnConfigChanged(Config? config) + { + Config = config; + _ = LocalStorage.SetItemAsync("masablazor@config", Config); + } + private void SetEnv() { var uri = NavigationManager.BaseUri.Replace("http://", "").Replace("https://", "").TrimEnd('/'); _env = uri switch { - "docs.masastack.com" or "blazor.masastack.com" => "prd_", - "blazor-dev.masastack.com" or "docs-dev.masastack.com" => "dev_", - _ => "local_" + "docs.masastack.com" => "prd_", + _ => "local_" }; } @@ -201,4 +208,4 @@ public partial class BaseLayout { NavigationManager.LocationChanged -= NavigationManagerOnLocationChanged; } -} +} \ No newline at end of file diff --git a/docs/Masa.Docs.Shared/Shared/DocLayout.razor b/docs/Masa.Docs.Shared/Shared/DocLayout.razor index a551cfa6..290af89e 100644 --- a/docs/Masa.Docs.Shared/Shared/DocLayout.razor +++ b/docs/Masa.Docs.Shared/Shared/DocLayout.razor @@ -4,7 +4,9 @@ @using Masa.Blazor.Extensions + RTL="MasaBlazor.RTL" + Config="@BaseLayout.Config" + ConfigChanged="@BaseLayout.OnConfigChanged"/> + ActiveItem="@context.ActiveTarget"/> - + mdi-chevron-up diff --git a/docs/Masa.Docs.Shared/Shared/NavComponentsTypeSwitch.razor b/docs/Masa.Docs.Shared/Shared/NavComponentsTypeSwitch.razor new file mode 100644 index 00000000..a35f2614 --- /dev/null +++ b/docs/Masa.Docs.Shared/Shared/NavComponentsTypeSwitch.razor @@ -0,0 +1,29 @@ + + +@code { + + [Parameter] + public bool Dense { get; set; } + + [Parameter] + public Config? Config { get; set; } + + [Parameter] + public EventCallback ConfigChanged { get; set; } + + private async Task OnGroupByTypeChange(bool value) + { + var newConfig = Config is null + ? new Config(value) + : Config with { NavComponentsGroupByType = value }; + await ConfigChanged.InvokeAsync(newConfig); + } + +} \ No newline at end of file diff --git a/docs/Masa.Docs.Shared/Shared/NavDrawer.razor b/docs/Masa.Docs.Shared/Shared/NavDrawer.razor index 6e478143..8c6fe5d2 100644 --- a/docs/Masa.Docs.Shared/Shared/NavDrawer.razor +++ b/docs/Masa.Docs.Shared/Shared/NavDrawer.razor @@ -1,8 +1,8 @@ @inject DocService DocService -@inject MasaBlazor MasaBlazor @inherits NextTickComponentBase @implements INavDrawer @inject IJSRuntime JSRuntime +@inject I18n I18n + Items="Navs"> + + @if (context == "ui-components") + { +
+ @I18n.T("nav-component-group-by-type") + +
+ } +
+
- +
@@ -41,6 +52,12 @@ [Parameter] public EventCallback ValueChanged { get; set; } + [Parameter] + public Config? Config { get; set; } + + [Parameter] + public EventCallback ConfigChanged { get; set; } + private string? _lastProject; private List Navs { get; set; } = new(); @@ -61,14 +78,24 @@ Navs = await DocService.ReadNavsAsync(Project); - // delay 500ms in docs.js - NextTick(() => ScrollIntoView("#nav-drawer")); + _ = Task.Run(async () => + { + await Task.Delay(500); + await ScrollIntoView("#nav-drawer"); + }); } } private async Task ScrollIntoView(string ancestorSelector) { - await JSRuntime.InvokeVoidAsync("activeNavItemScrollIntoView", ancestorSelector); + var target = $"{ancestorSelector} .m-list-item--active:not(.m-list-group__header)"; + var container = $"{ancestorSelector} .m-navigation-drawer__content"; + await JSRuntime.InvokeVoidAsync( + JsInteropConstants.ScrollToTarget, + target, + container, + Config?.NavComponentsGroupByType is true ? 48 : 0, + "smooth"); } } diff --git a/docs/Masa.Docs.Shared/Shared/Settings.razor b/docs/Masa.Docs.Shared/Shared/Settings.razor index 59a0240a..2f69218d 100644 --- a/docs/Masa.Docs.Shared/Shared/Settings.razor +++ b/docs/Masa.Docs.Shared/Shared/Settings.razor @@ -59,13 +59,7 @@
@I18n.T("nav-component-group-by-type-desc")
- + } @@ -87,15 +81,7 @@ public Config? Config { get; set; } [Parameter] - public EventCallback ConfigChanged { get; set; } - - private async Task OnGroupByTypeChange(bool value) - { - var newConfig = Config is null ? new Config(value) : Config with { NavComponentsGroupByType = value }; - await ConfigChanged.InvokeAsync(newConfig); - - _ = LocalStorage.SetItemAsync("masablazor@config", newConfig); - } + public EventCallback ConfigChanged { get; set; } private void ToggleRtl(bool rtl) { diff --git a/docs/Masa.Docs.Shared/_Imports.razor b/docs/Masa.Docs.Shared/_Imports.razor index b7126970..8bba3c98 100644 --- a/docs/Masa.Docs.Shared/_Imports.razor +++ b/docs/Masa.Docs.Shared/_Imports.razor @@ -11,4 +11,5 @@ @using Masa.Docs.Core @using Masa.Docs.Core.Shared @using Masa.Docs.Core.Components -@using Masa.Blazor.Core.I18n \ No newline at end of file +@using Masa.Blazor.Core.I18n +@using Masa.Docs.Core.Models \ No newline at end of file diff --git a/docs/Masa.Docs.Shared/wwwroot/css/docs.css b/docs/Masa.Docs.Shared/wwwroot/css/docs.css index 6b0a8a0e..9680c401 100644 --- a/docs/Masa.Docs.Shared/wwwroot/css/docs.css +++ b/docs/Masa.Docs.Shared/wwwroot/css/docs.css @@ -626,4 +626,19 @@ app-alert p { .theme--dark.typography-active-item { background-color: rgba(var(--m-theme-surface-container)); border-color: rgba(var(--m-theme-surface-container)); +} + +.typed-list-header { + padding-left: 48px; + position: sticky; + top: 0; + z-index: 1; + background-color: rgba(var(--m-theme-surface-container)); + color: rgba(var(--m-theme-on-surface)); +} + +.theme--dark .typed-list-header, +.theme--light .typed-list-header { + background-color: rgba(var(--m-theme-surface)); + color: rgba(var(--m-theme-on-surface)); } \ No newline at end of file diff --git a/docs/Masa.Docs.Shared/wwwroot/data/project.json b/docs/Masa.Docs.Shared/wwwroot/data/project.json index 5818994d..339d910d 100644 --- a/docs/Masa.Docs.Shared/wwwroot/data/project.json +++ b/docs/Masa.Docs.Shared/wwwroot/data/project.json @@ -1,5 +1,6 @@ { "blazor": { + "key": "blazor", "name": "MASA Blazor", "path": "Masa.Blazor.Docs", "repo": "Masa.Blazor", @@ -7,6 +8,7 @@ "repoUrl": "https://github.com/masastack/MASA.Blazor" }, "framework": { + "key": "framework", "name": "MASA Framework", "path": "Masa.Framework.Docs", "repo": "Masa.Framework", @@ -14,6 +16,7 @@ "repoUrl": "https://github.com/masastack/MASA.Framework" }, "stack": { + "key": "stack", "name": "MASA Stack", "path": "Masa.Stack.Docs", "repo": "Masa.Stack", diff --git a/docs/Masa.Docs.Shared/wwwroot/locale/en-US.json b/docs/Masa.Docs.Shared/wwwroot/locale/en-US.json index 8867985a..451655cd 100644 --- a/docs/Masa.Docs.Shared/wwwroot/locale/en-US.json +++ b/docs/Masa.Docs.Shared/wwwroot/locale/en-US.json @@ -565,7 +565,7 @@ "services": "Services", "misc": "Miscellaneous" }, - "nav-component-group-by-type": "Components grouped by type", + "nav-component-group-by-type": "Grouped by type", "nav-component-group-by-type-desc": "Group the components in the left navigation by type" } diff --git a/docs/Masa.Docs.Shared/wwwroot/locale/zh-CN.json b/docs/Masa.Docs.Shared/wwwroot/locale/zh-CN.json index 42c38608..e4afc474 100644 --- a/docs/Masa.Docs.Shared/wwwroot/locale/zh-CN.json +++ b/docs/Masa.Docs.Shared/wwwroot/locale/zh-CN.json @@ -654,6 +654,6 @@ "services": "服务", "misc": "其他" }, - "nav-component-group-by-type": "组件按类型分类", - "nav-component-group-by-type-desc": "左侧导航的组件列表按类型分类" + "nav-component-group-by-type": "按类型分组", + "nav-component-group-by-type-desc": "左侧导航的组件列表按类型分组" } \ No newline at end of file