From 8776cf4eaf262e939c02a9ab2191e05059550309 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 09:52:16 +0800 Subject: [PATCH 1/3] Custom menu component MVC UI --- .../Basic/Components/Menu/Default.cshtml | 41 +++++++++++------ .../Basic/Components/Menu/_MenuItem.cshtml | 45 ++++++++++++------- 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml index f146878b0f..764cdddcd2 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml @@ -6,9 +6,15 @@ var cssClass = string.IsNullOrEmpty(menuItem.CssClass) ? string.Empty : menuItem.CssClass; var disabled = menuItem.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(menuItem.Url) ? "#" : Url.IsLocalUrl(menuItem.Url) ? Url.Content(menuItem.Url.EnsureStartsWith('~')) : menuItem.Url; + var customComponentType = menuItem.GetComponentTypeOrDefault(); + if (menuItem.IsLeaf) { - if (menuItem.Url != null) + if (customComponentType != null) + { + @Component.InvokeAsync(customComponentType) + } + else if (menuItem.Url != null) { } diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml index 2dc72b8e58..9df7f8cc63 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/_MenuItem.cshtml @@ -5,10 +5,16 @@ var cssClass = string.IsNullOrEmpty(Model.CssClass) ? string.Empty : Model.CssClass; var disabled = Model.IsDisabled ? "disabled" : string.Empty; var url = string.IsNullOrEmpty(Model.Url) ? "#" : Url.IsLocalUrl(Model.Url) ? Url.Content(Model.Url.EnsureStartsWith('~')) : Model.Url; + var customComponentType = Model.GetComponentTypeOrDefault(); + } @if (Model.IsLeaf) { - if (Model.Url != null) + if (customComponentType != null) + { + @Component.InvokeAsync(customComponentType) + } + else if (Model.Url != null) { @if (Model.Icon != null) @@ -25,20 +31,27 @@ else { } From 95c3b75eeea3b7cd83930bee84bec9208d9895b3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 09:56:20 +0800 Subject: [PATCH 2/3] Update ApplicationMenuExtensions.cs --- .../Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs index 5a755f187a..c8ba277ccc 100644 --- a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs +++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/ApplicationMenuExtensions.cs @@ -115,6 +115,11 @@ public static class ApplicationMenuExtensions return menuWithGroups; } + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem) + { + return applicationMenuItem.UseComponent(typeof(TComponent)); + } + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem, Type componentType) { return applicationMenuItem.WithCustomData(CustomDataComponentKey, componentType); From 14e22a4fe9533e81d89d3d9d4746d43b91371b38 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 10 Jan 2024 11:55:10 +0800 Subject: [PATCH 3/3] Update _MenuItem.cshtml --- .../Themes/Basic/Components/Menu/Default.cshtml | 4 ++-- .../Themes/Basic/Components/Menu/_MenuItem.cshtml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml index 764cdddcd2..19471fecfd 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/Default.cshtml @@ -12,7 +12,7 @@ { if (customComponentType != null) { - @Component.InvokeAsync(customComponentType) + @(await Component.InvokeAsync(customComponentType)) } else if (menuItem.Url != null) { @@ -36,7 +36,7 @@