@using LANCommander.SDK.Models @using LANCommander.SDK.Services @inject MediaClient MediaClient @namespace LANCommander.UI.Components @if (!_error) { if (!String.IsNullOrWhiteSpace(Source)) { } else if (Media != null) { } else { @ChildContent } } else { @ChildContent } @code { [Parameter] public string Source { get; set; } [Parameter] public Media Media { get; set; } [Parameter] public ImageFit Fit { get; set; } [Parameter] public string Class { get; set; } [Parameter] public string Style { get; set; } [Parameter] public RenderFragment ChildContent { get; set; } string _class = String.Empty; bool _loading = true; bool _error = false; protected override void OnParametersSet() { _class = new ClassBuilder() .Add("safe-image") .If(() => Fit == ImageFit.Cover, "safe-image-fit-cover") .If(() => !String.IsNullOrWhiteSpace(Class), Class) .Build(); if (String.IsNullOrWhiteSpace(Source) && Media == null) _loading = false; } void OnLoad() { _loading = false; StateHasChanged(); } void OnError() { _error = true; _loading = false; StateHasChanged(); } }