diff --git a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor
index 9979dd35f..5c9c3aceb 100644
--- a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor
+++ b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor
@@ -41,7 +41,7 @@
}
@if (!string.IsNullOrWhiteSpace(yesButtonText))
{
-
+
}
diff --git a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs
index 3324cb8d6..d488ac7d1 100644
--- a/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs
+++ b/blazorbootstrap/Components/ConfirmDialog/ConfirmDialog.razor.cs
@@ -5,11 +5,9 @@ public partial class ConfirmDialog : BlazorBootstrapComponentBase
#region Fields and Constants
private Type? childComponent;
-
private string? dialogCssClass;
private bool dismissable;
private string? headerCssClass;
-
private bool isVisible;
private string? message1;
private string? message2;
@@ -18,13 +16,12 @@ public partial class ConfirmDialog : BlazorBootstrapComponentBase
private string? noButtonText;
private Dictionary? parameters;
private string? scrollable;
-
+ private bool shouldAutoFocusYesButton;
private bool showBackdrop;
-
private TaskCompletionSource? taskCompletionSource;
-
private string? title;
private string? verticallyCentered;
+ private ElementReference yesButtonElement;
private string? yesButtonColor;
private string? yesButtonText;
@@ -32,6 +29,14 @@ public partial class ConfirmDialog : BlazorBootstrapComponentBase
#region Methods
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ if(isVisible && shouldAutoFocusYesButton)
+ await yesButtonElement.FocusAsync();
+
+ await base.OnAfterRenderAsync(firstRender);
+ }
+
///
/// Shows confirm dialog.
///
@@ -116,13 +121,13 @@ private Task Show(string title, string? message1, string? message2, Type?
modalSize = confirmDialogOptions.Size.ToDialogSizeClass();
yesButtonColor = $"{BootstrapClass.Button} {confirmDialogOptions.YesButtonColor.ToButtonColorClass()}";
yesButtonText = confirmDialogOptions.YesButtonText;
-
+ shouldAutoFocusYesButton = confirmDialogOptions.AutoFocusYesButton;
isVisible = true;
showBackdrop = true;
StateHasChanged();
- Task.Run(async () => await SafeInvokeVoidAsync("window.blazorBootstrap.confirmDialog.show", Id, confirmDialogOptions.AutoFocusYesButton));
+ Task.Run(async () => await SafeInvokeVoidAsync("window.blazorBootstrap.confirmDialog.show", Id));
return task;
}
diff --git a/blazorbootstrap/wwwroot/blazor.bootstrap.js b/blazorbootstrap/wwwroot/blazor.bootstrap.js
index 952776f28..7d86c7fda 100644
--- a/blazorbootstrap/wwwroot/blazor.bootstrap.js
+++ b/blazorbootstrap/wwwroot/blazor.bootstrap.js
@@ -223,7 +223,7 @@ window.blazorBootstrap = {
}
},
confirmDialog: {
- show: (elementId, autoFocusYesButton) => {
+ show: (elementId) => {
let confirmDialogEl = document.getElementById(elementId);
if (confirmDialogEl != null)
setTimeout(() => confirmDialogEl.classList.add('show'), 90); // added delay for server
@@ -231,13 +231,6 @@ window.blazorBootstrap = {
let bodyEl = document.getElementsByTagName('body');
if (bodyEl.length > 0)
bodyEl[0].style['overflow'] = 'hidden';
-
- if (!autoFocusYesButton)
- return;
-
- let yesButtonEl = document.getElementById(`bb-confirm-${elementId}`);
- if (yesButtonEl)
- yesButtonEl.focus();
},
hide: (elementId) => {
let confirmDialogEl = document.getElementById(elementId);