refactorrr
This commit is contained in:
		| @@ -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> | ||||
|   | ||||
| @@ -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(); | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user