Checkbox - working example -- NumberInput,TextInput - InputAttributes initialization moved to InputBase class

features/rewrite/toggleinput
markosteger 2 years ago committed by Gitea
parent cac80598f0
commit e83e46abc0

@ -0,0 +1,13 @@
@using Connected.Models;
@inherits InputBase;
<div class="checkbox-group">
@if (Checked)
{
<input id="@Id" name="checkbox" type="checkbox" @onchange="OnChange" @attributes=@InputAttributes checked>
} else {
<input id="@Id" name="checkbox" type="checkbox" @onchange="OnChange" @attributes=@InputAttributes>
}
<label for="@Id" class="checkbox-label">@Label</label>
</div>

@ -0,0 +1,21 @@
using Connected.Models;
using Microsoft.AspNetCore.Components;
namespace Connected.Components;
public partial class CheckBox: InputBase
{
[Parameter]
public bool Checked { get; set; } = false;
[Parameter, EditorRequired]
public string Id { get; set; }
[Parameter]
public EventCallback<bool> CheckedChange { get; set; }
public async Task OnChange(ChangeEventArgs args)
{
Checked = (bool)args.Value;
CheckedChange.InvokeAsync(Checked);
}
}

@ -0,0 +1,9 @@
@using Connected.Models;
@inherits InputBase;
<div>
<div class="container">
@ChildContent
</div>
</div>

@ -0,0 +1,11 @@
using Microsoft.AspNetCore.Components;
namespace Connected.Components;
public partial class CheckBoxGroup
{
[Parameter, EditorRequired]
public string Id { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
}

@ -228,5 +228,14 @@ public partial class NumberInput<NumberType>:InputBase where NumberType : INumbe
await base.OnParametersSetAsync(); await base.OnParametersSetAsync();
} }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
if (Required)
{
if (!InputAttributes.ContainsKey("required")) InputAttributes.Add("required", true);
}
}
#endregion #endregion
} }

@ -56,14 +56,13 @@ public partial class TextInput: InputBase
} }
protected override async Task OnParametersSetAsync() protected override async Task OnInitializedAsync()
{ {
if (base.InputAttributes is null) base.InputAttributes = new(); await base.OnInitializedAsync();
if (base.Required) if (Required)
{ {
if (base.InputAttributes.ContainsKey("required")) base.InputAttributes.Add("required", true); if (!InputAttributes.ContainsKey("required")) InputAttributes.Add("required", true);
} }
await base.OnInitializedAsync();
} }
} }

@ -1,7 +1,5 @@
using Connected.Utilities; using Connected.Utilities;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using static Connected.Colors;
using static System.Net.Mime.MediaTypeNames;
namespace Connected.Models; namespace Connected.Models;
public class InputBase : ComponentBase public class InputBase : ComponentBase
@ -124,4 +122,9 @@ public class InputBase : ComponentBase
[Parameter] [Parameter]
public string Placeholder { get; set; } = string.Empty; public string Placeholder { get; set; } = string.Empty;
protected override async Task OnInitializedAsync()
{
if (InputAttributes is null) InputAttributes = new();
}
} }

Loading…
Cancel
Save