From c95658683fa5c399fbf505d38b970c184f84f75b Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 7 Jul 2022 14:28:52 +0300 Subject: [PATCH] Create dynamic components for blazor layout --- .../AbpDynamicComponentOptions.cs | 19 +++++++++++++++++++ .../Components/AbpDynamicComponents.razor | 7 +++++++ .../Components/AbpDynamicComponents.razor.cs | 10 ++++++++++ .../Themes/Basic/MainLayout.razor | 5 +++-- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicComponentOptions.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicComponentOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicComponentOptions.cs new file mode 100644 index 0000000000..e7c3178f1b --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicComponentOptions.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using JetBrains.Annotations; + +namespace Volo.Abp.AspNetCore.Components.Web.Theming; + +public class AbpDynamicComponentOptions +{ + /// + /// Used to define components that renders in the layout + /// + [NotNull] + public Dictionary?> Components { get; set; } + + public AbpDynamicComponentOptions() + { + Components = new Dictionary?>(); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor new file mode 100644 index 0000000000..a0773109dc --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor @@ -0,0 +1,7 @@ +@if (AbpDynamicComponentOptions.Value.Components.Any()) +{ + foreach (var (componentType, parameters) in AbpDynamicComponentOptions.Value.Components) + { + + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor.cs new file mode 100644 index 0000000000..3784c6be22 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Options; + +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Components; + +public partial class AbpDynamicComponents : ComponentBase +{ + [Inject] + protected IOptions AbpDynamicComponentOptions { get; set; } +} \ No newline at end of file diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainLayout.razor b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainLayout.razor index 82c7cc0fc7..794aa8af1b 100644 --- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainLayout.razor +++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainLayout.razor @@ -1,4 +1,5 @@ -@inherits LayoutComponentBase +@using Volo.Abp.AspNetCore.Components.Web.Theming.Components; +@inherits LayoutComponentBase