@using System.ComponentModel.DataAnnotations @if (IsOpen) {
@Title
@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; } } }