LANCommander/LANCommander.Server/UI/Components/RenderOptionInput.razor

48 lines
1.3 KiB
Text
Raw Permalink Normal View History

2026-05-18 22:04:03 +00:00
@using LANCommander.SDK.Models
@if (Definition.Type == "bool")
{
var isChecked = Value == "true";
<Checkbox Checked="@isChecked" CheckedChanged="OnBoolChanged" />
}
else if ((Definition.Type == "enum" || Definition.Type == "choice") && Definition.Choices != null)
{
<Select TItem="OptionChoice"
TItemValue="string"
DataSource="Definition.Choices"
ValueName="@nameof(OptionChoice.Value)"
LabelName="@nameof(OptionChoice.Label)"
Value="@Value"
ValueChanged="(string v) => OnStringChanged(v)"
Placeholder="@(Placeholder ?? "")" />
}
else
{
<Input Value="@Value"
ValueChanged="(string v) => OnStringChanged(v)"
Placeholder="@Placeholder" />
}
@code {
[Parameter] public OptionDefinition Definition { get; set; }
[Parameter] public string Value { get; set; }
[Parameter] public string Placeholder { get; set; }
[Parameter] public EventCallback<string> ValueChanged { get; set; }
async Task OnBoolChanged(bool value)
{
await Emit(value ? "true" : "false");
}
async Task OnStringChanged(string value)
{
await Emit(value);
}
async Task Emit(string value)
{
if (ValueChanged.HasDelegate)
await ValueChanged.InvokeAsync(value);
}
}