Browse Source

Create dynamic components for blazor layout

pull/13267/head
Engincan VESKE 4 years ago
parent
commit
c95658683f
  1. 19
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicComponentOptions.cs
  2. 7
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor
  3. 10
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/AbpDynamicComponents.razor.cs
  4. 5
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/MainLayout.razor

19
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
{
/// <summary>
/// Used to define components that renders in the layout
/// </summary>
[NotNull]
public Dictionary<Type, IDictionary<string,object>?> Components { get; set; }
public AbpDynamicComponentOptions()
{
Components = new Dictionary<Type, IDictionary<string, object>?>();
}
}

7
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)
{
<DynamicComponent Type="@componentType" Parameters="@parameters" />
}
}

10
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> AbpDynamicComponentOptions { get; set; }
}

5
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
<nav class="navbar navbar-expand-md navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4" id="main-navbar" style="min-height: 4rem;">
<div class="container">
<Branding />
@ -18,7 +19,7 @@
<div class="container">
<PageAlert />
@Body
<AbpDynamicComponents />
<UiMessageAlert />
<UiNotificationAlert />
<UiPageProgress />

Loading…
Cancel
Save