From 24c4707f6065b20b8a82cb12aae58982a83b884a Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Mon, 6 Feb 2023 12:51:13 +0300 Subject: [PATCH] Add component rendering support to Basic Theme --- .../BasicThemeNavigationExtensions.cs | 26 ++++++++++++ .../Themes/Basic/FirstLevelNavMenuItem.razor | 36 +++++++++++----- .../Themes/Basic/SecondLevelNavMenuItem.razor | 41 ++++++++++++------- 3 files changed, 77 insertions(+), 26 deletions(-) create mode 100644 modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs new file mode 100644 index 0000000000..020709f56c --- /dev/null +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Navigation/BasicThemeNavigationExtensions.cs @@ -0,0 +1,26 @@ +using System; +using JetBrains.Annotations; +using Volo.Abp.UI.Navigation; + +namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; + +public static class BasicThemeNavigationExtensions +{ + public const string CustomDataComponentKey = "BasicTheme.CustomComponent"; + + public static ApplicationMenuItem UseComponent(this ApplicationMenuItem applicationMenuItem, Type componentType) + { + return applicationMenuItem.WithCustomData(CustomDataComponentKey, componentType); + } + + [CanBeNull] + public static Type GetComponentTypeOrDefault(this ApplicationMenuItem applicationMenuItem) + { + if (applicationMenuItem.CustomData.TryGetValue(CustomDataComponentKey, out object componentType)) + { + return componentType as Type; + } + + return default; + } +} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor index 86d74c51f8..b3ecb41862 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/FirstLevelNavMenuItem.razor @@ -1,13 +1,19 @@ -@using Volo.Abp.UI.Navigation +@using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Navigation; +@using Volo.Abp.UI.Navigation @{ var elementId = MenuItem.ElementId ?? "MenuItem_" + MenuItem.Name.Replace(".", "_"); var cssClass = string.IsNullOrEmpty(MenuItem.CssClass) ? string.Empty : MenuItem.CssClass; var disabled = MenuItem.IsDisabled ? "disabled" : string.Empty; var url = MenuItem.Url == null ? "#" : MenuItem.Url.TrimStart('/', '~'); + var customComponentType = MenuItem.GetComponentTypeOrDefault(); } @if (MenuItem.IsLeaf) { - if (MenuItem.Url != null) + if (customComponentType != null) + { + + } + else if (url != null) {