public IDialogReference Show(Type contentComponent, string title, DialogParameters parameters, DialogOptions options) { if (!typeof(ComponentBase).IsAssignableFrom(contentComponent)) { throw new ArgumentException($"{contentComponent.FullName} must be a Blazor Component"); } var DialogInstanceId = Guid.NewGuid(); DialogReference DialogReference = null; var DialogContent = new RenderFragment(builder => { var i = 0; builder.OpenComponent(i++, contentComponent); foreach (var parameter in parameters._parameters) { builder.AddAttribute(i++, parameter.Key, parameter.Value); } builder.CloseComponent(); }); var DialogInstance = new RenderFragment(builder => { builder.OpenComponent <MudDialogInstance>(0); builder.AddAttribute(1, "Options", options); builder.AddAttribute(2, "Title", title); builder.AddAttribute(3, "Content", DialogContent); builder.AddAttribute(4, "Id", DialogInstanceId); builder.CloseComponent(); }); DialogReference = new DialogReference(DialogInstanceId, DialogInstance, this); OnDialogInstanceAdded?.Invoke(DialogReference); return(DialogReference); }
internal async Task DismissInstance(DialogReference dialog, DialogResult result) { if (dialog != null) { dialog.Dismiss(result); Dialogs.Remove(dialog); await InvokeAsync(StateHasChanged); } }
private async void CancelDialogs(object sender, LocationChangedEventArgs e) { foreach (var DialogReference in Dialogs.ToList()) { DialogReference.Dismiss(DialogResult.Cancel()); } Dialogs.Clear(); await InvokeAsync(StateHasChanged); }
internal async void CloseInstance(DialogReference dialog, DialogResult result) { await DismissInstance(dialog, result); }
private async void Update(DialogReference DialogReference) { Dialogs.Add(DialogReference); await InvokeAsync(StateHasChanged); }
internal void Close(DialogReference Dialog) { Close(Dialog, DialogResult.Ok <object>(null)); }
internal void Close(DialogReference Dialog, DialogResult result) { OnDialogCloseRequested?.Invoke(Dialog, result); }