@using System.ComponentModel.DataAnnotations
@if (IsOpen)
{
@if (!string.IsNullOrWhiteSpace(Description))
{
@Description
}
@if (!string.IsNullOrEmpty(_error))
{
@_error
}
}
@code {
[Parameter] public bool IsOpen { get; set; }
[Parameter] public EventCallback IsOpenChanged { get; set; }
[Parameter] public string Title { get; set; } = "Add values";
[Parameter] public string? Description { get; set; }
[Parameter] public string Label { get; set; } = "Values";
[Parameter] public string? Value { get; set; }
[Parameter] public EventCallback> OnSubmit { get; set; }
[Parameter] public string? TestIdPrefix { get; set; }
private string BaseTestId =>
string.IsNullOrWhiteSpace(TestIdPrefix)
? "comma-separated-string-modal"
: $"{TestIdPrefix}-comma-separated-string-modal";
private FormModel _model = new();
private string? _error;
protected override void OnParametersSet()
{
if (IsOpen)
{
_error = null;
_model = new FormModel
{
Value = Value
};
}
}
private async Task HandleValidSubmit()
{
_error = null;
try
{
var values = (_model.Value ?? string.Empty)
.Split(',', StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.Where(x => !string.IsNullOrWhiteSpace(x))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
if (!values.Any())
{
_error = "Please enter at least one value.";
return;
}
await OnSubmit.InvokeAsync(values);
await Close();
}
catch (Exception ex)
{
_error = ex.Message;
}
}
private async Task Cancel()
{
await Close();
}
private async Task Close()
{
_model = new FormModel();
_error = null;
await IsOpenChanged.InvokeAsync(false);
}
private class FormModel
{
[Required]
public string? Value { get; set; }
}
}