@inject IJSRuntime JS @code { private TaskCompletionSource? tcs; private string ModalId { get; } = $"modal_{Guid.NewGuid():N}"; [Parameter] public string Title { get; set; } = "Modal"; [Parameter] public string Message { get; set; } = ""; [Parameter] public string UserInput { get; set; } = ""; [Parameter] public string Placeholder { get; set; } = ""; [Parameter] public ModalMode Mode { get; set; } = ModalMode.Message; /// /// Mostra la modale ed aspetta risultato utente /// public async Task ShowAsync() { tcs = new TaskCompletionSource(); await JS.InvokeVoidAsync("bootstrapModalHelper.show", $"#{ModalId}"); var result = await tcs.Task; // Convert result to requested type if (result is null) return default; return (T)result; } private async Task OnOk() { await JS.InvokeVoidAsync("bootstrapModalHelper.hide", $"#{ModalId}"); tcs?.TrySetResult(true); } private async Task OnConfirm() { await JS.InvokeVoidAsync("bootstrapModalHelper.hide", $"#{ModalId}"); tcs?.TrySetResult(true); } private async Task OnPromptOk() { await JS.InvokeVoidAsync("bootstrapModalHelper.hide", $"#{ModalId}"); tcs?.TrySetResult(UserInput); } private async Task OnCancel() { await JS.InvokeVoidAsync("bootstrapModalHelper.hide", $"#{ModalId}"); if (Mode == ModalMode.Prompt) tcs?.TrySetResult(null); else if (Mode == ModalMode.Confirm) tcs?.TrySetResult(false); else tcs?.TrySetResult(null); } /// /// Modalità display componente /// public enum ModalMode { Message, Confirm, Prompt } }