36 lines
1.2 KiB
Plaintext
36 lines
1.2 KiB
Plaintext
@inherits DComponentBase
|
|||
|
|
|
||
|
|
@* daisyUI Avatar: https://daisyui.com/components/avatar/ . Class goes on the inner frame, where daisyUI puts the size
|
||
|
|
and shape (w-16 rounded-full, mask mask-squircle) and, for a placeholder, the colours (bg-neutral
|
||
|
|
text-neutral-content); the other attributes go on the outer .avatar. Without Src the frame shows ChildContent. *@
|
||
|
|
<div @attributes="AdditionalAttributes" class="@CssClass">
|
||
|
|
<div class="@Class">
|
||
|
|
@if (Src is not null)
|
||
|
|
{
|
||
|
|
<img src="@Src" alt="@Alt" />
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
@ChildContent
|
||
|
|
}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
@code {
|
||
|
|
[Parameter] public string Src { get; set; }
|
||
|
|
[Parameter] public string Alt { get; set; } = "";
|
||
|
|
/// <summary>Shown in the frame when there is no Src, e.g. initials with Placeholder.</summary>
|
||
|
|
[Parameter] public RenderFragment ChildContent { get; set; }
|
||
|
|
[Parameter] public DAvatarStatus Status { get; set; }
|
||
|
|
/// <summary>Centre ChildContent in the frame (avatar-placeholder); give the frame a bg-* in Class.</summary>
|
||
|
|
[Parameter] public bool Placeholder { get; set; }
|
||
|
|
|
||
|
|
string CssClass => Cx("avatar", StatusClass, Placeholder ? "avatar-placeholder" : null);
|
||
|
|
|
||
|
|
string StatusClass => Status switch
|
||
|
|
{
|
||
|
|
DAvatarStatus.Online => "avatar-online",
|
||
|
|
DAvatarStatus.Offline => "avatar-offline",
|
||
|
|
_ => null
|
||
|
|
};
|
||
|
|
}
|