features/rewrite/modal1 #10
@ -3,7 +3,7 @@
 | 
				
			|||||||
@inherits InputBase;
 | 
					@inherits InputBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<label class="checkbox-group" for="@Id">
 | 
					<label class="checkbox-group" for="@Id">
 | 
				
			||||||
    <input class="checkbox-input" id="@Id" name="@ParentCheckBoxGroup.Name" type="checkbox" @attributes=@InputAttributes>
 | 
					    <input class="checkbox-input" id="@Id" type="checkbox" @attributes=@InputAttributes checked="@Checked" disabled="@Disabled">
 | 
				
			||||||
    <div class="checkbox-fill"></div>
 | 
					    <div class="checkbox-fill"></div>
 | 
				
			||||||
    <label for="@Id" class="checkbox-label">@Label</label>
 | 
					    <label for="@Id" class="checkbox-label">@Label</label>
 | 
				
			||||||
</label>
 | 
					</label>
 | 
				
			||||||
 | 
				
			|||||||
@ -4,20 +4,11 @@ using Microsoft.AspNetCore.Components;
 | 
				
			|||||||
namespace Connected.Components;
 | 
					namespace Connected.Components;
 | 
				
			||||||
public partial class CheckBox : InputBase
 | 
					public partial class CheckBox : InputBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	[CascadingParameter]
 | 
					 | 
				
			||||||
	public CheckBoxGroup? ParentCheckBoxGroup { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private bool _checked { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool? Checked
 | 
						public bool Checked { get; set; }
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get => _checked;
 | 
					 | 
				
			||||||
		set => _checked = (bool)value;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
	public string Id { get; set; }
 | 
						public string? Id { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public EventCallback<bool> CheckedChanged { get; set; }
 | 
						public EventCallback<bool> CheckedChanged { get; set; }
 | 
				
			||||||
@ -25,18 +16,7 @@ public partial class CheckBox : InputBase
 | 
				
			|||||||
	public async Task OnChange()
 | 
						public async Task OnChange()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Checked = !Checked;
 | 
							Checked = !Checked;
 | 
				
			||||||
		CheckedChanged.InvokeAsync((bool)Checked);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected override async Task OnParametersSetAsync()
 | 
							await CheckedChanged.InvokeAsync(Checked);
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		await base.OnInitializedAsync();
 | 
					 | 
				
			||||||
		if (ParentCheckBoxGroup.Disabled) Disabled = true;
 | 
					 | 
				
			||||||
		if (!InputAttributes.ContainsKey("disabled"))
 | 
					 | 
				
			||||||
			InputAttributes.Add("disabled", Disabled);
 | 
					 | 
				
			||||||
		if (!InputAttributes.ContainsKey("checked"))
 | 
					 | 
				
			||||||
			InputAttributes.Add("checked", Checked);
 | 
					 | 
				
			||||||
		StateHasChanged();
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
@using Connected.Models;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<CascadingValue Value="this">
 | 
					 | 
				
			||||||
    <div>
 | 
					 | 
				
			||||||
        @if (!string.IsNullOrEmpty(Name))
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
                <h5>@Name</h5>
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        <div class="container">
 | 
					 | 
				
			||||||
            @ChildContent
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
</CascadingValue>
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
using Microsoft.AspNetCore.Components;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Connected.Components;
 | 
					 | 
				
			||||||
public partial class CheckBoxGroup
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	[Parameter, EditorRequired]
 | 
					 | 
				
			||||||
	public string Name { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
					 | 
				
			||||||
	public bool Disabled { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
					 | 
				
			||||||
	public RenderFragment ChildContent { get; set; }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -4,26 +4,26 @@ using Microsoft.AspNetCore.Components.Web;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace Connected.Components
 | 
					namespace Connected.Components
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public partial class Glyph
 | 
						public partial class Glyph
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
        [Parameter]
 | 
							[Parameter]
 | 
				
			||||||
        public string SVG { get; set; } = string.Empty;
 | 
							public string SVG { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Parameter]
 | 
							[Parameter]
 | 
				
			||||||
        public string Color { get; set; } = "#000000";
 | 
							public string Color { get; set; } = "#000000";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Parameter]
 | 
							[Parameter]
 | 
				
			||||||
        public int Width { get; set; } = 24;
 | 
							public int Width { get; set; } = 24;
 | 
				
			||||||
        [Parameter]
 | 
							[Parameter]
 | 
				
			||||||
        public int Height { get; set; } = 24;
 | 
							public int Height { get; set; } = 24;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		  private string WidthString
 | 
							private string WidthString
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								get
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				get
 | 
									return Width.ToString() + "px";
 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					return Width.ToString() + "px";
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private string HeightString
 | 
							private string HeightString
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@ -34,17 +34,17 @@ namespace Connected.Components
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[Parameter]
 | 
							[Parameter]
 | 
				
			||||||
			public string Class { get; set; } = string.Empty;
 | 
							public string Class { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			private string GlyphClassList
 | 
							private string GlyphClassList
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								get
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				get
 | 
									return new CssBuilder()
 | 
				
			||||||
				{
 | 
										 .AddClass(Class)
 | 
				
			||||||
					return new CssBuilder()
 | 
										 .Build();
 | 
				
			||||||
						 .AddClass(Class)
 | 
					 | 
				
			||||||
						 .Build();
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[Parameter]
 | 
							[Parameter]
 | 
				
			||||||
		/// <summary>
 | 
							/// <summary>
 | 
				
			||||||
@ -54,7 +54,6 @@ namespace Connected.Components
 | 
				
			|||||||
		protected async Task OnClick(MouseEventArgs e)
 | 
							protected async Task OnClick(MouseEventArgs e)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			await Click.InvokeAsync(e);
 | 
								await Click.InvokeAsync(e);
 | 
				
			||||||
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -4,46 +4,48 @@ using Microsoft.AspNetCore.Components;
 | 
				
			|||||||
namespace Connected.Components;
 | 
					namespace Connected.Components;
 | 
				
			||||||
public partial class Link
 | 
					public partial class Link
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
    public string Url { get; set; } = string.Empty;
 | 
						public string Url { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
    public string Text { get; set; } = string.Empty;
 | 
						public string Text { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
    public string Target { get; set; } = "_self";
 | 
						public string Target { get; set; } = "_self";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter]
 | 
						[Parameter]
 | 
				
			||||||
    public string Class { get; set; } = string.Empty;
 | 
						public string Class { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private string LinkClassList
 | 
						private string LinkClassList
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
        get
 | 
							get
 | 
				
			||||||
        {
 | 
							{
 | 
				
			||||||
            return new CssBuilder()
 | 
								return new CssBuilder()
 | 
				
			||||||
                .AddClass(Class)
 | 
									 .AddClass(Class)
 | 
				
			||||||
                .Build();
 | 
									 .Build();
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter]
 | 
						[Parameter]
 | 
				
			||||||
    public string Style { get; set; } = string.Empty;
 | 
						public string Style { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private string LinkStyleList
 | 
						private string LinkStyleList
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
        get
 | 
							get
 | 
				
			||||||
        {
 | 
							{
 | 
				
			||||||
            return new StyleBuilder()
 | 
								return new StyleBuilder()
 | 
				
			||||||
                .AddStyle(Style)
 | 
									 .AddStyle(Style)
 | 
				
			||||||
                .Build();
 | 
									 .Build();
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected override async Task OnParametersSetAsync()
 | 
						protected override async Task OnParametersSetAsync()
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
        if (string.IsNullOrEmpty(Text)) Text = Url;
 | 
							if (string.IsNullOrEmpty(Text))
 | 
				
			||||||
        await base.OnParametersSetAsync();
 | 
								Text = Url;
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
							await base.OnParametersSetAsync();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -5,45 +5,36 @@ using Microsoft.AspNetCore.Components.Web;
 | 
				
			|||||||
using System.Numerics;
 | 
					using System.Numerics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Connected.Components;
 | 
					namespace Connected.Components;
 | 
				
			||||||
public partial class NumberInput<NumberType>:InputBase where NumberType : INumber<NumberType>
 | 
					public partial class NumberInput<NumberType> : InputBase where NumberType : INumber<NumberType>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					 | 
				
			||||||
	private double _step =1;
 | 
					 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public double Step { 
 | 
						public double Step { get; set; } = 1;
 | 
				
			||||||
		get
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return _step;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		set
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			_step=value;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool DisableMouseWheel
 | 
						public bool DisableMouseWheel { get; set; } = false;
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get;
 | 
					 | 
				
			||||||
		set;
 | 
					 | 
				
			||||||
	} = false;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private async Task StepUp()
 | 
						private async Task StepUp()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		try
 | 
							try
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double num = (double)Convert.ChangeType(Value, typeof(double));
 | 
								var num = (double)Convert.ChangeType(Value, typeof(double));
 | 
				
			||||||
			num += _step;
 | 
					
 | 
				
			||||||
 | 
								num += Step;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (DecimalPlaces > 0)
 | 
								if (DecimalPlaces > 0)
 | 
				
			||||||
				num = Math.Round(num, DecimalPlaces);
 | 
									num = Math.Round(num, DecimalPlaces);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Value = (NumberType)Convert.ChangeType(num, typeof(NumberType));
 | 
								Value = (NumberType)Convert.ChangeType(num, typeof(NumberType));
 | 
				
			||||||
			if (IsError) ErrorText = string.Empty;
 | 
					
 | 
				
			||||||
 | 
								if (IsError)
 | 
				
			||||||
 | 
									ErrorText = string.Empty;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		catch
 | 
							catch
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ErrorText = "Error with step up!";
 | 
								ErrorText = "Error with step up!";
 | 
				
			||||||
			Value = default(NumberType);
 | 
								Value = default;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		await ValueChanged.InvokeAsync(Value);
 | 
							await ValueChanged.InvokeAsync(Value);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -51,96 +42,101 @@ public partial class NumberInput<NumberType>:InputBase where NumberType : INumbe
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		try
 | 
							try
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			double num = (double)Convert.ChangeType(Value, typeof(double));
 | 
								var num = (double)Convert.ChangeType(Value, typeof(double));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								num -= Step;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			num -= _step;
 | 
					 | 
				
			||||||
			if (DecimalPlaces > 0)
 | 
								if (DecimalPlaces > 0)
 | 
				
			||||||
				num = Math.Round(num, DecimalPlaces);
 | 
									num = Math.Round(num, DecimalPlaces);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Value = (NumberType)Convert.ChangeType(num, typeof(NumberType));
 | 
								Value = (NumberType)Convert.ChangeType(num, typeof(NumberType));
 | 
				
			||||||
			if (IsError) ErrorText = string.Empty;
 | 
					
 | 
				
			||||||
		} catch
 | 
								if (IsError)
 | 
				
			||||||
 | 
									ErrorText = string.Empty;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							catch
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ErrorText = "Error with step down!";
 | 
								ErrorText = "Error with step down!";
 | 
				
			||||||
			Value = default(NumberType);
 | 
								Value = default;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		await ValueChanged.InvokeAsync(Value);
 | 
							await ValueChanged.InvokeAsync(Value);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	protected async Task OnMouseWheel(WheelEventArgs args)
 | 
						protected async Task OnMouseWheel(WheelEventArgs args)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (DisableMouseWheel == false)
 | 
							if (DisableMouseWheel)
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (args.ShiftKey || Disabled || Readonly)
 | 
					 | 
				
			||||||
				return;
 | 
					 | 
				
			||||||
			if (args.DeltaY >= 0)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				await StepDown();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				await StepUp();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		} else
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (args.ShiftKey || Disabled || Readonly)
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (args.DeltaY >= 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								await StepDown();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								await StepUp();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private string _value;
 | 
						private string? _value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public NumberType? Value
 | 
						public NumberType? Value
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		get
 | 
							get
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (string.IsNullOrEmpty(_value)) return default(NumberType);
 | 
								if (string.IsNullOrEmpty(_value))
 | 
				
			||||||
 | 
									return default;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return (NumberType)Convert.ChangeType(_value, typeof(NumberType));
 | 
								return (NumberType)Convert.ChangeType(_value, typeof(NumberType));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		set
 | 
							set
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			_value = value.ToString();
 | 
								_value = value?.ToString();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public int DecimalPlaces { get; set; } =0;
 | 
						public int DecimalPlaces { get; set; } = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
   public EventCallback<NumberType> ValueChanged { get; set; }
 | 
						public EventCallback<NumberType> ValueChanged { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public async Task GetValueAsync(ChangeEventArgs args)
 | 
						public async Task GetValueAsync(ChangeEventArgs args)
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
		if (args.Value is not null)
 | 
							if (args.Value is not null)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			string newVal = args.Value.ToString();
 | 
								var newVal = args.Value.ToString()!;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!newVal.Equals("0"))
 | 
								if (!newVal.Equals("0"))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if (newVal.ToString().Contains("-"))
 | 
									if (newVal.ToString().Contains("-"))
 | 
				
			||||||
					newVal = "-" + newVal.ToString().Replace("-", "");
 | 
										newVal = "-" + newVal.ToString().Replace("-", "");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (newVal.ToString().ToLower().Contains("e"))
 | 
									if (newVal.ToString().ToLower().Contains("e"))
 | 
				
			||||||
					newVal = "e" + newVal.ToString().Replace("e", "");
 | 
										newVal = "e" + newVal.ToString().Replace("e", "");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (string.IsNullOrEmpty(newVal))
 | 
								if (string.IsNullOrEmpty(newVal))
 | 
				
			||||||
			{
 | 
									await ValueChanged.InvokeAsync(default);
 | 
				
			||||||
				await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType((NumberType)Convert.ChangeType(null, typeof(NumberType)), typeof(NumberType)));
 | 
					
 | 
				
			||||||
			}
 | 
								if (!newVal.Equals(_value))
 | 
				
			||||||
			else
 | 
									await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType(newVal, typeof(NumberType)));
 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				if (!newVal.Equals(_value))
 | 
					 | 
				
			||||||
					await ValueChanged.InvokeAsync((NumberType)Convert.ChangeType((NumberType)Convert.ChangeType(newVal, typeof(NumberType)), typeof(NumberType)));
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public async Task Change(ChangeEventArgs args)
 | 
						public async Task Change(ChangeEventArgs args)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (args.Value is not null)
 | 
							if (args.Value is not null)
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Value = AdjustDecimalPlaces((NumberType)Convert.ChangeType(args.Value, typeof(NumberType)));
 | 
								Value = AdjustDecimalPlaces((NumberType)Convert.ChangeType(args.Value, typeof(NumberType)));
 | 
				
			||||||
		}
 | 
					
 | 
				
			||||||
		ValueChanged.InvokeAsync(Value);
 | 
							await ValueChanged.InvokeAsync(Value);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter] public EventCallback<KeyboardEventArgs> OnKeyDown { get; set; }
 | 
						[Parameter]
 | 
				
			||||||
 | 
						public EventCallback<KeyboardEventArgs> OnKeyDown { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private bool CheckKey(string key)
 | 
						private bool CheckKey(string key)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@ -172,17 +168,19 @@ public partial class NumberInput<NumberType>:InputBase where NumberType : INumbe
 | 
				
			|||||||
	private bool _preventDefaultAction = true;
 | 
						private bool _preventDefaultAction = true;
 | 
				
			||||||
	public async Task ChangeValue(KeyboardEventArgs args)
 | 
						public async Task ChangeValue(KeyboardEventArgs args)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		_preventDefaultAction= true;
 | 
							_preventDefaultAction = true;
 | 
				
			||||||
		if (args is not null)
 | 
							if (args is not null)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			var key = args.Key.ToString().ToLower();
 | 
								var key = args.Key.ToString().ToLower();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (CheckKey(key))
 | 
								if (CheckKey(key))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				_preventDefaultAction = false;
 | 
									_preventDefaultAction = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				await OnKeyDown.InvokeAsync(args);
 | 
									await OnKeyDown.InvokeAsync(args);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			args.Key = null;
 | 
								args.Key = null;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -222,11 +220,13 @@ public partial class NumberInput<NumberType>:InputBase where NumberType : INumbe
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		if (typeof(NumberType).Name.ToLower().Contains("int"))
 | 
							if (typeof(NumberType).Name.ToLower().Contains("int"))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (Step - (int)Step > 0) Step = (int)Step;
 | 
								if (Step - (int)Step > 0)
 | 
				
			||||||
			if (Step < 1) Step = 1;
 | 
									Step = (int)Step;
 | 
				
			||||||
 | 
								if (Step < 1)
 | 
				
			||||||
 | 
									Step = 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		await base.OnParametersSetAsync();
 | 
							await base.OnParametersSetAsync();
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected override async Task OnInitializedAsync()
 | 
						protected override async Task OnInitializedAsync()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
@inherits InputBase;
 | 
					@inherits InputBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<label class="radio-group" for="@Id">
 | 
					<label class="radio-group" for="@Id">
 | 
				
			||||||
    <input class="radio-input" id="@Id" name="@ParentRadioGroup.Name" type="radio" @onchange="OnChange" @attributes=@InputAttributes>
 | 
					    <input class="radio-input" id="@Id" name="@ParentRadioGroup.Name" type="radio" @onchange="OnChange" @attributes=@InputAttributes disabled="@Disabled" checked="@Checked">
 | 
				
			||||||
    <div class="radio-fill"></div>
 | 
					    <div class="radio-fill"></div>
 | 
				
			||||||
    <label for="@Id" class="radio-label">@Label</label>
 | 
					    <label for="@Id" class="radio-label">@Label</label>
 | 
				
			||||||
</label>
 | 
					</label>
 | 
				
			||||||
@ -7,17 +7,11 @@ public partial class Radio : InputBase
 | 
				
			|||||||
	[CascadingParameter]
 | 
						[CascadingParameter]
 | 
				
			||||||
	public RadioGroup? ParentRadioGroup { get; set; }
 | 
						public RadioGroup? ParentRadioGroup { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private bool _checked { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool? Checked
 | 
						public bool Checked { get; set; }
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		get => _checked;
 | 
					 | 
				
			||||||
		set => _checked = (bool)value;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
	public string Id { get; set; }
 | 
						public string? Id { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public EventCallback<bool> CheckedChanged { get; set; }
 | 
						public EventCallback<bool> CheckedChanged { get; set; }
 | 
				
			||||||
@ -25,14 +19,6 @@ public partial class Radio : InputBase
 | 
				
			|||||||
	public async Task OnChange()
 | 
						public async Task OnChange()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Checked = !Checked;
 | 
							Checked = !Checked;
 | 
				
			||||||
		CheckedChanged.InvokeAsync((bool)Checked);
 | 
							await CheckedChanged.InvokeAsync(Checked);
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	protected override async Task OnInitializedAsync()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		await base.OnInitializedAsync();
 | 
					 | 
				
			||||||
		if (ParentRadioGroup.Disabled) Disabled = true;
 | 
					 | 
				
			||||||
		if (!InputAttributes.ContainsKey("disabled"))
 | 
					 | 
				
			||||||
			InputAttributes.Add("disabled", Disabled);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,14 @@
 | 
				
			|||||||
@using Connected.Models;
 | 
					@using Connected.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<CascadingValue Value="this">
 | 
					<CascadingValue Value="this">
 | 
				
			||||||
    <div>
 | 
					   <div>
 | 
				
			||||||
        @if (!string.IsNullOrEmpty(Name))
 | 
					      @if (!string.IsNullOrEmpty(Name))
 | 
				
			||||||
        {
 | 
					      {
 | 
				
			||||||
            <h5>@Name</h5>
 | 
					         <h5>@Name</h5>
 | 
				
			||||||
        }
 | 
					      }
 | 
				
			||||||
        <div class="container">
 | 
					
 | 
				
			||||||
            @ChildContent
 | 
					      <div class="container">
 | 
				
			||||||
        </div>
 | 
					         @ChildContent
 | 
				
			||||||
    </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					   </div>
 | 
				
			||||||
</CascadingValue>
 | 
					</CascadingValue>
 | 
				
			||||||
@ -4,12 +4,12 @@ namespace Connected.Components;
 | 
				
			|||||||
public partial class RadioGroup
 | 
					public partial class RadioGroup
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	[Parameter, EditorRequired]
 | 
						[Parameter, EditorRequired]
 | 
				
			||||||
	public string Name { get; set; }
 | 
						public string? Name { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool Disabled { get; set; }
 | 
						public bool Disabled { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public RenderFragment ChildContent { get; set; }
 | 
						public RenderFragment? ChildContent { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
using Connected.Models;
 | 
					using Connected.Models;
 | 
				
			||||||
using Microsoft.AspNetCore.Components;
 | 
					using Microsoft.AspNetCore.Components;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Connected.Components;
 | 
					namespace Connected.Components;
 | 
				
			||||||
public partial class SimpleSelect<ValueType> : InputBase
 | 
					public partial class SimpleSelect<ValueType> : InputBase
 | 
				
			||||||
@ -10,7 +11,7 @@ public partial class SimpleSelect<ValueType> : InputBase
 | 
				
			|||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public IEnumerable<ValueType> Items { get; set; }
 | 
						public IEnumerable<ValueType> Items { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public IEnumerable<ValueType> OriginalItems { get; set; }
 | 
						public ObservableCollection<ValueType> OriginalItems { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool EnableSearch { get; set; } = true;
 | 
						public bool EnableSearch { get; set; } = true;
 | 
				
			||||||
@ -60,17 +61,19 @@ public partial class SimpleSelect<ValueType> : InputBase
 | 
				
			|||||||
	protected override async Task OnParametersSetAsync()
 | 
						protected override async Task OnParametersSetAsync()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		OriginalItems = Items;
 | 
							OriginalItems = new ObservableCollection<ValueType>(Items);
 | 
				
			||||||
		if (_searchText.Length>0) FilterItems();
 | 
					
 | 
				
			||||||
 | 
							if (_searchText.Length > 0)
 | 
				
			||||||
 | 
								FilterItems();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		await base.OnParametersSetAsync();
 | 
							await base.OnParametersSetAsync();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected override async Task OnInitializedAsync()
 | 
						protected override async Task OnInitializedAsync()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		await base.OnInitializedAsync();
 | 
							await base.OnInitializedAsync();
 | 
				
			||||||
		if (Required)
 | 
					
 | 
				
			||||||
		{
 | 
							if (Required && InputAttributes.ContainsKey("required"))
 | 
				
			||||||
			if (InputAttributes.ContainsKey("required")) InputAttributes.Add("required", true);
 | 
								InputAttributes.Add("required", true);
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
<div class="@InputFieldClassList">
 | 
					<div class="@InputFieldClassList">
 | 
				
			||||||
    @if (NumOfRows==1)
 | 
					    @if (NumOfRows==1)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        <input type="@inputType"
 | 
					        <input type="@InputType"
 | 
				
			||||||
        value="@Value"
 | 
					        value="@Value"
 | 
				
			||||||
        placeholder="@Placeholder"
 | 
					        placeholder="@Placeholder"
 | 
				
			||||||
        disabled="@Disabled"
 | 
					        disabled="@Disabled"
 | 
				
			||||||
 | 
				
			|||||||
@ -2,67 +2,50 @@
 | 
				
			|||||||
using Microsoft.AspNetCore.Components;
 | 
					using Microsoft.AspNetCore.Components;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Connected.Components;
 | 
					namespace Connected.Components;
 | 
				
			||||||
public partial class TextInput: InputBase
 | 
					public partial class TextInput : InputBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool IsPassword { get; set; } = false;
 | 
						public bool IsPassword { get; set; } = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter]
 | 
						[Parameter]
 | 
				
			||||||
    public int NumOfRows
 | 
						public int NumOfRows
 | 
				
			||||||
    {
 | 
						{
 | 
				
			||||||
		get
 | 
							get
 | 
				
			||||||
        {
 | 
							{
 | 
				
			||||||
            return _numberOfLines;
 | 
								return _numberOfLines;
 | 
				
			||||||
        }
 | 
							}
 | 
				
			||||||
        set
 | 
							set
 | 
				
			||||||
        {
 | 
							{
 | 
				
			||||||
            if (value < 1)
 | 
								_numberOfLines = Math.Max(1, value);
 | 
				
			||||||
            {
 | 
							}
 | 
				
			||||||
                _numberOfLines = 1;
 | 
						}
 | 
				
			||||||
            }
 | 
						private int _numberOfLines = 1;
 | 
				
			||||||
            else
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                _numberOfLines = value;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    private int _numberOfLines = 1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public string Value { get; set; } = string.Empty;
 | 
						public string Value { get; set; } = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private string inputType
 | 
						private string InputType => IsPassword ? "password" : "text";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[Parameter]
 | 
				
			||||||
 | 
						public EventCallback<string> ValueChanged { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private async Task ChangeValueAsync(ChangeEventArgs args)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		get
 | 
							await ValueChanged.InvokeAsync(args?.Value?.ToString());
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (IsPassword) return "password";
 | 
					 | 
				
			||||||
			return "text";
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Parameter]
 | 
					 | 
				
			||||||
    public EventCallback<string> ValueChanged { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private async Task ChangeValueAsync(ChangeEventArgs args)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        await ValueChanged.InvokeAsync(args.Value.ToString());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private async Task Clear()
 | 
						private async Task Clear()
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		await ValueChanged.InvokeAsync(string.Empty);
 | 
							await ValueChanged.InvokeAsync(string.Empty);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected override async Task OnInitializedAsync()
 | 
						protected override async Task OnInitializedAsync()
 | 
				
			||||||
   {
 | 
						{
 | 
				
			||||||
		await base.OnInitializedAsync();
 | 
							await base.OnInitializedAsync();
 | 
				
			||||||
		if (Required)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (!InputAttributes.ContainsKey("required")) InputAttributes.Add("required", true);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (Required && !InputAttributes.ContainsKey("required"))
 | 
				
			||||||
 | 
								InputAttributes.Add("required", true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -30,7 +30,7 @@ public class InputBase : ComponentBase
 | 
				
			|||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool Required { get; set; } = false;
 | 
						public bool Required { get; set; } = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public Dictionary<string, object> InputAttributes { get; set; }
 | 
						public Dictionary<string, object> InputAttributes { get; set; } = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// <summary>
 | 
						/// <summary>
 | 
				
			||||||
	/// Show clear button.
 | 
						/// Show clear button.
 | 
				
			||||||
@ -50,18 +50,11 @@ public class InputBase : ComponentBase
 | 
				
			|||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public bool ShowCharacterCounter { get; set; }
 | 
						public bool ShowCharacterCounter { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private string _errorText = string.Empty;
 | 
						/// <summary>
 | 
				
			||||||
 | 
						/// 
 | 
				
			||||||
 | 
						/// </summary>
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public string ErrorText {
 | 
						public string ErrorText { get; set; } = string.Empty;
 | 
				
			||||||
		get
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return _errorText;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		set
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			_errorText = value;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public bool IsError
 | 
						public bool IsError
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@ -79,15 +72,16 @@ public class InputBase : ComponentBase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	protected virtual async Task SetTextAsync(string text)
 | 
						protected virtual async Task SetTextAsync(string text)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if (Text != text)
 | 
							if (Text == text)
 | 
				
			||||||
		{
 | 
								return;
 | 
				
			||||||
			Text = text;
 | 
					
 | 
				
			||||||
			await TextChanged.InvokeAsync(text);
 | 
							Text = text;
 | 
				
			||||||
		}
 | 
							await TextChanged.InvokeAsync(text);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private string _helperText = string.Empty;
 | 
						private string _helperText = string.Empty;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[Parameter]
 | 
						[Parameter]
 | 
				
			||||||
	public string HelperText
 | 
						public string HelperText
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user