Browse Source

Merge pull request #13267 from abpframework/EngincanV/blazor-dynamic-components

Introduce dynamic components for Blazor and update the basic-theme layout
pull/13278/head
Enis Necipoglu 4 years ago
committed by GitHub
parent
commit
a4e1e9bcba
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpDynamicLayoutComponentOptions.cs
  2. 7
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/DynamicLayoutComponent.razor
  3. 10
      framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/DynamicLayoutComponent.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/AbpDynamicLayoutComponentOptions.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.AspNetCore.Components.Web.Theming;
public class AbpDynamicLayoutComponentOptions
{
/// <summary>
/// Used to define components that renders in the layout
/// </summary>
[NotNull]
public Dictionary<Type, IDictionary<string,object>?> Components { get; set; }
public AbpDynamicLayoutComponentOptions()
{
Components = new Dictionary<Type, IDictionary<string, object>?>();
}
}

7
framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/DynamicLayoutComponent.razor

@ -0,0 +1,7 @@
@if (AbpDynamicLayoutComponentOptions.Value.Components.Any())
{
foreach (var (componentType, parameters) in AbpDynamicLayoutComponentOptions.Value.Components)
{
<DynamicComponent Type="@componentType" Parameters="@parameters" />
}
}

10
framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Components/DynamicLayoutComponent.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 DynamicLayoutComponent : ComponentBase
{
[Inject]
protected IOptions<AbpDynamicLayoutComponentOptions> AbpDynamicLayoutComponentOptions { 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
<DynamicLayoutComponent />
<UiMessageAlert />
<UiNotificationAlert />
<UiPageProgress />

Loading…
Cancel
Save