@using Elsa.Studio.Contracts @using Elsa.Studio.Enums @using Elsa.Studio.Models @if (hasExtensions) { @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(); } } }