Files
decePubClient/Components/Daisy/Actions/DSwap.razor
T

35 lines
1.3 KiB
Plaintext
Raw Normal View History

@inherits DComponentBase
@* daisyUI Swap: https://daisyui.com/components/swap/ . A label around daisyUI's hidden checkbox: clicking anywhere on
it toggles the checkbox, whose state is bound to Active (@bind-Active); On shows while checked, Off otherwise. *@
<label @attributes="AdditionalAttributes" class="@CssClass">
<input type="checkbox" checked="@Active" disabled="@Disabled" aria-label="@LabelText" @onchange="OnChange" />
<div class="swap-on">@On</div>
<div class="swap-off">@Off</div>
</label>
@code {
[Parameter] public RenderFragment On { get; set; }
[Parameter] public RenderFragment Off { get; set; }
[Parameter] public bool Active { get; set; }
[Parameter] public EventCallback<bool> ActiveChanged { get; set; }
[Parameter] public DSwapEffect Effect { get; set; }
[Parameter] public bool Disabled { get; set; }
/// <summary>Accessible name of the checkbox (aria-label), for swaps that show only icons.</summary>
[Parameter] public string LabelText { get; set; }
string CssClass => Cx("swap", EffectClass, Disabled ? "cursor-not-allowed opacity-50" : null, Class);
string EffectClass => Effect switch
{
DSwapEffect.Rotate => "swap-rotate",
DSwapEffect.Flip => "swap-flip",
_ => null
};
async Task OnChange(ChangeEventArgs e)
{
Active = e.Value is true;
await ActiveChanged.InvokeAsync(Active);
}
}