diff --git a/Wave/Components/InputLabelComponent.razor b/Wave/Components/InputLabelComponent.razor new file mode 100644 index 0000000..3232801 --- /dev/null +++ b/Wave/Components/InputLabelComponent.razor @@ -0,0 +1,43 @@ +@using System.Linq.Expressions +@using System.Reflection +@using System.ComponentModel +@using System.ComponentModel.DataAnnotations + + + +@code { + [Parameter] + public string? LabelText { get; set; } + [Parameter] + public RenderFragment? Label { get; set; } + [Parameter] + public required RenderFragment ChildContent { get; set; } + [Parameter] + public Expression>? For { get; set; } + + private string GetDisplayName() { + if (For is null) return string.Empty; + var expression = (MemberExpression)For.Body; + var display = expression.Member.GetCustomAttribute(typeof(DisplayAttribute)) as DisplayAttribute; + var displayName = expression.Member.GetCustomAttribute(typeof(DisplayNameAttribute)) as DisplayNameAttribute; + return display?.GetName() ?? displayName?.DisplayName ?? expression.Member.Name; + } +}