diff --git a/README.md b/README.md
index 8c374896..0b22799b 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
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 @@
-
+
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 @@
{
-
+
}
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