oqtane.framework/Oqtane.Client/Shared/Container.razor
2019-08-15 12:18:09 -04:00

59 lines
1.7 KiB
Plaintext

@using Oqtane.Models
@using Oqtane.Shared
@using Oqtane.Modules
<CascadingValue Value="@ModuleState">
@DynamicComponent
</CascadingValue>
@code {
[CascadingParameter]
protected PageState PageState { get; set; }
[Parameter]
public Module Module { get; set; }
Module ModuleState;
string container;
RenderFragment DynamicComponent { get; set; }
protected override void OnInitialized()
{
DynamicComponent = builder =>
{
if (ModuleState != null)
{
Type containerType = Type.GetType(container);
if (containerType != null)
{
builder.OpenComponent(0, containerType);
builder.CloseComponent();
}
else
{
// container does not exist with type specified
builder.OpenComponent(0, Type.GetType(Constants.ModuleMessageControl));
builder.AddAttribute(1, "Type", MessageType.Error);
builder.AddAttribute(2, "Message", "Error Loading Module Container " + container);
builder.CloseComponent();
}
}
};
}
protected override Task OnParametersSetAsync()
{
if (PageState.Page.PageId == Module.PageId)
{
ModuleState = Module; // passed in from Pane component
container = ModuleState.ContainerType;
if (PageState.ModuleId != -1 && PageState.Control != "")
{
container = Constants.DefaultAdminContainer;
}
}
return Task.CompletedTask;
}
}