64 lines
No EOL
1.6 KiB
Text
64 lines
No EOL
1.6 KiB
Text
@using LANCommander.SDK.Models
|
|
@using LANCommander.SDK.Services
|
|
@inject MediaClient MediaClient
|
|
@namespace LANCommander.UI.Components
|
|
|
|
<Spin Spinning="_loading" WrapperClassName="@_class">
|
|
@if (!_error)
|
|
{
|
|
if (!String.IsNullOrWhiteSpace(Source))
|
|
{
|
|
<img src="@Source" @onload="OnLoad" @onerror="OnError" style="@Style" />
|
|
}
|
|
else if (Media != null)
|
|
{
|
|
<img src="@(MediaClient.GetAbsoluteThumbnailUrl(Media))" @onload="OnLoad" @onerror="OnError" style="@Style" />
|
|
}
|
|
else
|
|
{
|
|
@ChildContent
|
|
}
|
|
}
|
|
else
|
|
{
|
|
@ChildContent
|
|
}
|
|
</Spin>
|
|
|
|
@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();
|
|
}
|
|
} |