@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 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; } } }