@using LANCommander.SDK.Enums
@code {
[Parameter] public RuntimePlatform Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public string Placeholder { get; set; } = "All platforms";
[Parameter] public string Style { get; set; } = "min-width: 180px";
record PlatformOption(RuntimePlatform Value, string Label);
static readonly PlatformOption[] Options =
{
new(RuntimePlatform.Windows, "Windows"),
new(RuntimePlatform.Linux, "Linux"),
new(RuntimePlatform.macOS, "macOS"),
};
IEnumerable SelectedFlags =>
Options.Where(o => Value.HasFlag(o.Value)).Select(o => o.Value);
async Task OnValuesChanged(IEnumerable values)
{
var combined = RuntimePlatform.None;
if (values != null)
{
foreach (var value in values)
combined |= value;
}
Value = combined;
await ValueChanged.InvokeAsync(combined);
}
}