@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 label";
[Parameter] public string? Description { get; set; }
[Parameter] public string KeyLabel { get; set; } = "Key";
[Parameter] public string ValueLabel { get; set; } = "Value";
[Parameter] public string? KeyPlaceholder { get; set; }
[Parameter] public string? ValuePlaceholder { get; set; }
[Parameter] public string? Key { get; set; }
[Parameter] public string? Value { get; set; }
[Parameter] public EventCallback<(string Key, string Value)> OnSubmit { get; set; }
[Parameter] public string? TestIdPrefix { get; set; }
private string BaseTestId =>
string.IsNullOrWhiteSpace(TestIdPrefix)
? "key-value-modal"
: $"{TestIdPrefix}-key-value-modal";
private FormModel _model = new();
private string? _error;
protected override void OnParametersSet()
{
if (IsOpen)
{
_error = null;
_model = new FormModel
{
Key = Key ?? string.Empty,
Value = Value ?? string.Empty
};
}
}
private async Task HandleValidSubmit()
{
_error = null;
try
{
var key = (_model.Key ?? string.Empty).Trim();
var value = (_model.Value ?? string.Empty).Trim();
if (string.IsNullOrWhiteSpace(key))
{
_error = "Key is required.";
return;
}
if (string.IsNullOrWhiteSpace(value))
{
_error = "Value is required.";
return;
}
await OnSubmit.InvokeAsync((key, value));
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
{
public string? Key { get; set; }
public string? Value { get; set; }
}
}