diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 498b9a5fc30..ec2a6eb5a4e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.8.0-beta07 + 9.8.0 diff --git a/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs b/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs index efca43cdadc..679fd8a1b22 100644 --- a/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs +++ b/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs @@ -23,7 +23,7 @@ public partial class Dialog : IDisposable [NotNull] private Func? _onCloseAsync = null; - private readonly Dictionary, (bool IsKeyboard, bool IsBackdrop)> DialogParameters = []; + private readonly Dictionary, (bool IsKeyboard, bool IsBackdrop, Func? OnCloseCallback)> DialogParameters = []; private Dictionary? _currentParameter; private bool _isKeyboard = false; private bool _isBackdrop = false; @@ -72,16 +72,14 @@ private async Task Show(DialogOption option) _onCloseAsync = async () => { - // Callback OnCloseAsync - if (option.OnCloseAsync != null) - { - await option.OnCloseAsync(); - } - // Remove current DialogParameter if (_currentParameter != null) { - DialogParameters.Remove(_currentParameter); + DialogParameters.Remove(_currentParameter, out var v); + if (v.OnCloseCallback != null) + { + await v.OnCloseCallback(); + } // Support for multiple dialogs var p = DialogParameters.LastOrDefault(); @@ -162,7 +160,7 @@ private async Task Show(DialogOption option) _currentParameter = parameters; // Add ModalDialog to the container - DialogParameters.Add(parameters, (_isKeyboard, _isBackdrop)); + DialogParameters.Add(parameters, (_isKeyboard, _isBackdrop, option.OnCloseAsync)); await InvokeAsync(StateHasChanged); }