Added InputLabelComponent
This commit is contained in:
parent
7774f046e4
commit
8726e00f73
43
Wave/Components/InputLabelComponent.razor
Normal file
43
Wave/Components/InputLabelComponent.razor
Normal file
|
@ -0,0 +1,43 @@
|
|||
@using System.Linq.Expressions
|
||||
@using System.Reflection
|
||||
@using System.ComponentModel
|
||||
@using System.ComponentModel.DataAnnotations
|
||||
|
||||
<label class="form-control w-full">
|
||||
<div class="label">
|
||||
@if (Label is not null) {
|
||||
@Label
|
||||
} else if (!string.IsNullOrWhiteSpace(LabelText)) {
|
||||
<span class="label-text">@LabelText</span>
|
||||
} else {
|
||||
<span class="label-text">@GetDisplayName()</span>
|
||||
}
|
||||
</div>
|
||||
@ChildContent
|
||||
@if (For is not null) {
|
||||
<div class="label">
|
||||
<span class="label-text-alt text-error">
|
||||
<ValidationMessage For="For"/>
|
||||
</span>
|
||||
</div>
|
||||
}
|
||||
</label>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public string? LabelText { get; set; }
|
||||
[Parameter]
|
||||
public RenderFragment? Label { get; set; }
|
||||
[Parameter]
|
||||
public required RenderFragment ChildContent { get; set; }
|
||||
[Parameter]
|
||||
public Expression<Func<object?>>? 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;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue