@using Elsa.Studio.Contracts
@using Elsa.Studio.Enums
@using Elsa.Studio.Models
@if (hasExtensions)
{
isHovered = true" @onmouseleave="() => isHovered = false">
@foreach (var extension in TopExtensions ?? Enumerable.Empty())
{
@extension.DisplayExtension(EditorContext)
}
@ChildContent
@foreach (var extension in BottomExtensions ?? Enumerable.Empty())
{
@extension.DisplayExtension(EditorContext)
}
}
else
{
@ChildContent
}
@code
{
private bool isHovered = false;
private bool hasExtensions => AllExtensions?.Count != 0;
private List? AllExtensions;
private List? TopExtensions;
private List? BottomExtensions;
///
/// The UI Hint component type the extensions should be rendered for.
///
[Parameter] public string UIHintComponent { get; set; } = default!;
///
/// The editor context.
///
[Parameter] public DisplayInputEditorContext EditorContext { get; set; } = default!;
///
/// The content wrap with extensions.
///
[Parameter] public RenderFragment ChildContent { get; set; } = default!;
[Inject] private IUIFieldExtensionService FieldExtensionService { get; set; }
///
protected override void OnInitialized()
{
AllExtensions = FieldExtensionService.TryGetHandlers(UIHintComponent, EditorContext);
if (AllExtensions is not null)
{
TopExtensions = AllExtensions.Where(p => p.Position == FieldExtensionPosition.Top).ToList();
BottomExtensions = AllExtensions.Where(p => p.Position == FieldExtensionPosition.Bottom).ToList();
}
}
}