CheckBox ReadOnly property added

Based on https://github.com/radzenhq/radzen-blazor/pull/924. Close #https://github.com/radzenhq/radzen-blazor/pull/924/
This commit is contained in:
Vladimir Enchev
2023-04-18 09:09:33 +03:00
parent ee26df3b68
commit 795ca64ac0
5 changed files with 102 additions and 2 deletions

View File

@@ -160,5 +160,83 @@ namespace Radzen.Blazor.Tests
Assert.Contains(@$"rz-state-active", component.Markup);
Assert.Contains(@$"rzi-times", component.Markup);
}
[Fact]
public void CheckBox_Renders_ReadonlyParameter()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBox<bool>>();
component.SetParametersAndRender(parameters => parameters.Add<bool>(p => p.ReadOnly, true));
Assert.Contains(@$"readonly", component.Markup);
}
[Fact]
public void CheckBox_DoesNotRaise_ChangedEvent_ReadonlyParameter()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBox<bool>>();
var raised = false;
component.SetParametersAndRender(parameters => parameters
.Add<bool>(p => p.ReadOnly, true)
.Add(p => p.Change, args => { raised = true; })
);
component.Find("div.rz-chkbox-box").Click();
Assert.False(raised);
}
[Fact]
public void CheckBox_DoesNotRaise_ValueChangedEvent_ReadonlyParameter()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBox<bool>>();
var raised = false;
component.SetParametersAndRender(parameters => parameters
.Add<bool>(p => p.ReadOnly, true)
.Add(p => p.ValueChanged, args => { raised = true; })
);
component.Find("div.rz-chkbox-box").Click();
Assert.False(raised);
}
[Fact]
public void CheckBox_ValueNotChanged_ReadonlyParameter()
{
using var ctx = new TestContext();
var component = ctx.RenderComponent<RadzenCheckBox<bool>>();
var value = true;
component.SetParametersAndRender(parameters => parameters
.Add<bool>(p => p.ReadOnly, true)
.Add<bool>(p => p.Value, value)
);
component.Find("div.rz-chkbox-box").Click();
Assert.Contains(@$"rz-state-active", component.Markup);
component.SetParametersAndRender(parameters => parameters
.Add<bool>(p => p.ReadOnly, !true)
.Add<bool>(p => p.Value, value)
);
component.Find("div.rz-chkbox-box").Click();
Assert.DoesNotContain(@$"rz-state-active", component.Markup);
}
}
}

View File

@@ -8,7 +8,7 @@
<div @ref="@Element" @attributes="Attributes" class="@GetCssClass()" @onkeypress=@OnKeyPress @onkeypress:preventDefault style="@Style" tabindex="@(Disabled ? "-1" : $"{TabIndex}")" id="@GetId()">
<div class="rz-helper-hidden-accessible">
<input type="checkbox" @onchange=@Toggle value=@CheckBoxValue name=@Name id=@Name checked=@CheckBoxChecked
tabindex="-1">
tabindex="-1" readonly="@ReadOnly">
</div>
<div class=@BoxClassList @onclick=@Toggle @onclick:preventDefault>
<span class=@IconClassList></span>

View File

@@ -49,9 +49,16 @@ namespace Radzen.Blazor
}
}
/// <summary>
/// Gets or sets a value indicating whether is read only.
/// </summary>
/// <value><c>true</c> if is read only; otherwise, <c>false</c>.</value>
[Parameter]
public bool ReadOnly { get; set; }
async Task Toggle()
{
if (Disabled)
if (Disabled || ReadOnly)
{
return;
}

View File

@@ -39,4 +39,11 @@
</RadzenText>
<RadzenExample ComponentName="CheckBox" Example="CheckBoxDisabled">
<CheckBoxDisabled />
</RadzenExample>
<RadzenText TextStyle="TextStyle.H5" TagName="TagName.H2" class="rz-pt-8">
ReadOnly CheckBox
</RadzenText>
<RadzenExample ComponentName="CheckBox" Example="CheckBoxReadOnly">
<CheckBoxReadOnly />
</RadzenExample>

View File

@@ -0,0 +1,8 @@
<div class="rz-p-12 rz-text-align-center">
<RadzenCheckBox ReadOnly=true @bind-Value=@value Name="CheckBox51" />
<RadzenLabel Text="CheckBox" Component="CheckBox51" Style="margin-left: 8px; vertical-align: middle;" />
</div>
@code {
bool value = true;
}