using AIStudio.Settings;
using Microsoft.AspNetCore.Components;
namespace AIStudio.Components;
///
/// Configuration component for selecting many values from a list.
///
/// The type of the value to select.
public partial class ConfigurationMultiSelect : ConfigurationBase
{
///
/// The data to select from.
///
[Parameter]
public IEnumerable> Data { get; set; } = [];
///
/// The selected values.
///
[Parameter]
public Func> SelectedValues { get; set; } = () => [];
///
/// An action that is called when the selection changes.
///
[Parameter]
public Action> SelectionUpdate { get; set; } = _ => { };
private async Task OptionChanged(IEnumerable? updatedValues)
{
if(updatedValues is null)
this.SelectionUpdate([]);
else
this.SelectionUpdate(updatedValues.Where(n => n is not null).ToHashSet()!);
await this.SettingsManager.StoreSettings();
await this.InformAboutChange();
}
private static string GetClass => $"{MARGIN_CLASS} rounded-lg";
private string GetMultiSelectionText(List? selectedValues)
{
if(selectedValues is null || selectedValues.Count == 0)
return "No preview features selected.";
if(selectedValues.Count == 1)
return $"You have selected 1 preview feature.";
return $"You have selected {selectedValues.Count} preview features.";
}
}