refactorrr

This commit is contained in:
2024-09-23 22:13:11 +03:00
parent abfa75247d
commit e8fd8523aa
14 changed files with 47 additions and 15 deletions

View File

@@ -12,7 +12,7 @@
<div >
<label >
Password:<br/>
<InputText class="rounded" @bind-Value="AuthData.Password"/>
<InputText type="password" class="rounded" @bind-Value="AuthData.Password"/>
</label><br/>
<ValidationMessage For="() => AuthData.Password"></ValidationMessage>
</div>

View File

@@ -1,51 +0,0 @@
@using System.Linq.Expressions
@using System.Reflection
@using BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers
@typeparam TItem where TItem : class
@typeparam TMember where TMember : struct, Enum
<InputSelect TValue="TMember" @bind-Value="selected">
@foreach (var value in enumValues)
{
<option value="@value.Key">@value.Value</option>
}
</InputSelect><br/>
@code {
[Parameter, EditorRequired] public TItem Model { get; set; } = default!;
[Parameter, EditorRequired] public Expression<Func<TItem, TMember>> EnumProperty { get; set; } = null!;
[Parameter] public Action? OnChanged { get; set; }
private Dictionary<TMember, string> enumValues = new();
private PropertyInfo modelMemberInfo = null!;
private TMember selected;
protected override void OnInitialized()
{
var modelMemberName = ((MemberExpression)EnumProperty.Body).Member.Name;
modelMemberInfo = typeof(TItem).GetProperty(modelMemberName)!;
foreach (var value in Enum.GetValues<TMember>())
{
enumValues.Add(value, value.GetDisplayName());
}
}
protected override void OnAfterRender(bool firstRender)
{
var current = (TMember)modelMemberInfo.GetValue(Model)!;
if (!current.Equals(selected))
{
OnValueChanged();
}
}
private void OnValueChanged()
{
modelMemberInfo.SetValue(Model, selected);
OnChanged?.Invoke();
}
}