35 lines
905 B
Plaintext
35 lines
905 B
Plaintext
@using Microsoft.Extensions.Options
|
|
@using Moonlight.Frontend.Configuration
|
|
@using Moonlight.Frontend.Interfaces
|
|
|
|
@inject IOptions<LayoutMiddlewareOptions> Options
|
|
|
|
@Chain
|
|
|
|
@code
|
|
{
|
|
[Parameter] public RenderFragment ChildContent { get; set; }
|
|
|
|
private RenderFragment Chain;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
Chain = ChildContent;
|
|
|
|
foreach (var component in Options.Value.Components)
|
|
{
|
|
// Capture current values
|
|
var currentChain = Chain;
|
|
var currentComponent = component;
|
|
|
|
Chain = builder =>
|
|
{
|
|
builder.OpenComponent(0, currentComponent);
|
|
builder.SetKey(component);
|
|
builder.AddComponentParameter(1, nameof(LayoutMiddlewareBase.ChildContent), currentChain);
|
|
builder.CloseComponent();
|
|
};
|
|
}
|
|
}
|
|
}
|