oqtane.framework/Oqtane.Client/Modules/Controls/TriStateCheckBox.razor
2021-06-18 14:45:38 -04:00

70 lines
1.5 KiB
Plaintext

@namespace Oqtane.Modules.Controls
@inherits ModuleControlBase
@inject IStringLocalizer<TriStateCheckBox> Localizer
<img src="@_src" title="@_title" @onclick="SetValue" />
@code {
private bool? _value = null;
private string _title;
private string _src = string.Empty;
[Parameter]
public bool? Value { get; set; }
[Parameter]
public bool Disabled { get; set; }
[Parameter]
public Action<bool?> OnChange { get; set; }
protected override void OnInitialized()
{
_value = Value;
SetImage();
}
private void SetValue()
{
if (!Disabled)
{
switch (_value)
{
case true:
_value = false;
break;
case false:
_value = null;
break;
case null:
_value = true;
break;
}
SetImage();
OnChange(_value);
}
}
private void SetImage()
{
switch (_value)
{
case true:
_src = "images/checked.png";
_title = Localizer["PermissionGranted"];
break;
case false:
_src = "images/unchecked.png";
_title = Localizer["PermissionDenied"];
break;
case null:
_src = "images/null.png";
_title = string.Empty;
break;
}
StateHasChanged();
}
}