A modal dialog that interrupts the user with important content and expects a response, built on Dialog's static-backdrop option.
This action cannot be undone.
Use a Bootstrap .modal as an alert dialog when the user must acknowledge or confirm a consequential choice before continuing. Open it from a clear trigger with data-bs-toggle="modal" and data-bs-target, label the dialog from its title with aria-labelledby, and connect the supporting explanation with aria-describedby.
.modal
data-bs-toggle="modal"
data-bs-target
aria-labelledby
aria-describedby
Keep the content short and decision-focused: one title, one explanation, and explicit cancel and confirm actions in the footer. For irreversible choices, use a static backdrop with data-bs-backdrop="static" and data-bs-keyboard="false" so the user cannot dismiss the dialog accidentally with backdrop click or Escape.
data-bs-backdrop="static"
data-bs-keyboard="false"
Because Alert Dialog is built on Bootstrap's Modal plugin, it appears above the page, traps interaction while open, and should not be nested inside another modal. Keep dismissal buttons visible, use data-bs-dismiss="modal" on safe exits, and return the user to a sensible place in the workflow after the dialog closes.
data-bs-dismiss="modal"
A title, description, and Cancel/Continue-style actions; the backdrop and Escape key are both disabled.
Any line items you have entered will be lost. This cannot be undone.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-basic">Discard draft</button> <div class="modal fade modal--alert" id="alert-dialog-basic" tabindex="-1" aria-labelledby="alert-dialog-basic-title" aria-describedby="alert-dialog-basic-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-basic-title">Discard this draft invoice?</h1> <p class="modal-description" id="alert-dialog-basic-description">Any line items you have entered will be lost. This cannot be undone.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Discard</button> </div> </div> </div> </div>
<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-basic">Discard draft</button> <div class="modal fade modal--alert" id="alert-dialog-basic" tabindex="-1" aria-labelledby="alert-dialog-basic-title" aria-describedby="alert-dialog-basic-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-basic-title">Discard this draft invoice?</h1> <p class="modal-description" id="alert-dialog-basic-description">Any line items you have entered will be lost. This cannot be undone.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Discard</button> </div> </div> </div> </div>
size="sm" reuses Dialog's existing modal-sm class for compact confirmations.
Your changes to this record will not be kept.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-small">Leave without saving</button> <div class="modal fade modal--alert" id="alert-dialog-small" tabindex="-1" aria-labelledby="alert-dialog-small-title" aria-describedby="alert-dialog-small-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-sm modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-small-title">Leave without saving?</h1> <p class="modal-description" id="alert-dialog-small-description">Your changes to this record will not be kept.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Leave</button> </div> </div> </div> </div>
<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-small">Leave without saving</button> <div class="modal fade modal--alert" id="alert-dialog-small" tabindex="-1" aria-labelledby="alert-dialog-small-title" aria-describedby="alert-dialog-small-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-sm modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-small-title">Leave without saving?</h1> <p class="modal-description" id="alert-dialog-small-description">Your changes to this record will not be kept.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Leave</button> </div> </div> </div> </div>
Use the compact size with a small icon when a short confirmation needs extra signal.
Rows that have not finished processing will stay queued for the next run.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-small-media">Stop import</button> <div class="modal fade modal--alert" id="alert-dialog-small-media" tabindex="-1" aria-labelledby="alert-dialog-small-media-title" aria-describedby="alert-dialog-small-media-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-sm modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <span class="btn btn-icon-sm btn-outline-secondary flex-shrink-0" aria-hidden="true"> <i class="lucide lucide-circle-alert" data-icon="inline-start" aria-hidden="true"></i> </span> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-small-media-title">Stop this import?</h1> <p class="modal-description" id="alert-dialog-small-media-description">Rows that have not finished processing will stay queued for the next run.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Keep running</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Stop import</button> </div> </div> </div> </div>
<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-small-media">Stop import</button> <div class="modal fade modal--alert" id="alert-dialog-small-media" tabindex="-1" aria-labelledby="alert-dialog-small-media-title" aria-describedby="alert-dialog-small-media-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-sm modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <span class="btn btn-icon-sm btn-outline-secondary flex-shrink-0" aria-hidden="true"> <i class="lucide lucide-circle-alert" data-icon="inline-start" aria-hidden="true"></i> </span> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-small-media-title">Stop this import?</h1> <p class="modal-description" id="alert-dialog-small-media-description">Rows that have not finished processing will stay queued for the next run.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Keep running</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Stop import</button> </div> </div> </div> </div>
Add a small decorative icon beside the confirmation title when the action benefits from an extra visual cue.
New records will wait in the import queue until the next manual run.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-media">Pause sync</button> <div class="modal fade modal--alert" id="alert-dialog-media" tabindex="-1" aria-labelledby="alert-dialog-media-title" aria-describedby="alert-dialog-media-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <span class="btn btn-icon-sm btn-outline-secondary flex-shrink-0" aria-hidden="true"> <i class="lucide lucide-cloud-off" data-icon="inline-start" aria-hidden="true"></i> </span> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-media-title">Pause nightly synchronization?</h1> <p class="modal-description" id="alert-dialog-media-description">New records will wait in the import queue until the next manual run.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Keep running</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Pause sync</button> </div> </div> </div> </div>
<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-media">Pause sync</button> <div class="modal fade modal--alert" id="alert-dialog-media" tabindex="-1" aria-labelledby="alert-dialog-media-title" aria-describedby="alert-dialog-media-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <span class="btn btn-icon-sm btn-outline-secondary flex-shrink-0" aria-hidden="true"> <i class="lucide lucide-cloud-off" data-icon="inline-start" aria-hidden="true"></i> </span> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-media-title">Pause nightly synchronization?</h1> <p class="modal-description" id="alert-dialog-media-description">New records will wait in the import queue until the next manual run.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Keep running</button> <button class="btn btn-primary" type="button" data-bs-dismiss="modal">Pause sync</button> </div> </div> </div> </div>
Pair the outline Cancel button with a destructive-variant action for irreversible operations.
This removes their profile and order history permanently.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-destructive">Delete customer</button> <div class="modal fade modal--alert" id="alert-dialog-destructive" tabindex="-1" aria-labelledby="alert-dialog-destructive-title" aria-describedby="alert-dialog-destructive-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-destructive-title">Delete this customer record?</h1> <p class="modal-description" id="alert-dialog-destructive-description">This removes their profile and order history permanently.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">Delete</button> </div> </div> </div> </div>
<button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-destructive">Delete customer</button> <div class="modal fade modal--alert" id="alert-dialog-destructive" tabindex="-1" aria-labelledby="alert-dialog-destructive-title" aria-describedby="alert-dialog-destructive-description" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-destructive-title">Delete this customer record?</h1> <p class="modal-description" id="alert-dialog-destructive-description">This removes their profile and order history permanently.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">Delete</button> </div> </div> </div> </div>
Use tabs to compare Arabic, Hebrew, and English alert dialogs inside the same right-to-left layout.
سيؤدي هذا إلى إزالة ملفه الشخصي وسجل الطلبات نهائيًا.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25<div dir="rtl"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl">حذف بيانات العميل</button> <div class="modal fade modal--alert" id="alert-dialog-rtl" tabindex="-1" aria-labelledby="alert-dialog-rtl-title" aria-describedby="alert-dialog-rtl-description" aria-hidden="true" dir="rtl"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-title">هل تريد حذف بيانات هذا العميل؟</h1> <p class="modal-description" id="alert-dialog-rtl-description">سيؤدي هذا إلى إزالة ملفه الشخصي وسجل الطلبات نهائيًا.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">إلغاء</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">حذف</button> </div> </div> </div> </div> </div>
<div dir="rtl"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl">حذف بيانات العميل</button> <div class="modal fade modal--alert" id="alert-dialog-rtl" tabindex="-1" aria-labelledby="alert-dialog-rtl-title" aria-describedby="alert-dialog-rtl-description" aria-hidden="true" dir="rtl"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-title">هل تريد حذف بيانات هذا العميل؟</h1> <p class="modal-description" id="alert-dialog-rtl-description">سيؤدي هذا إلى إزالة ملفه الشخصي وسجل الطلبات نهائيًا.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">إلغاء</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">حذف</button> </div> </div> </div> </div> </div>
פעולה זו מסירה את פרופיל הלקוח ואת היסטוריית ההזמנות לצמיתות.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25<div dir="rtl"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl-hebrew">מחיקת נתוני לקוח</button> <div class="modal fade modal--alert" id="alert-dialog-rtl-hebrew" tabindex="-1" aria-labelledby="alert-dialog-rtl-hebrew-title" aria-describedby="alert-dialog-rtl-hebrew-description" aria-hidden="true" dir="rtl"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-hebrew-title">למחוק את נתוני הלקוח האלה?</h1> <p class="modal-description" id="alert-dialog-rtl-hebrew-description">פעולה זו מסירה את פרופיל הלקוח ואת היסטוריית ההזמנות לצמיתות.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">ביטול</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">מחיקה</button> </div> </div> </div> </div> </div>
<div dir="rtl"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl-hebrew">מחיקת נתוני לקוח</button> <div class="modal fade modal--alert" id="alert-dialog-rtl-hebrew" tabindex="-1" aria-labelledby="alert-dialog-rtl-hebrew-title" aria-describedby="alert-dialog-rtl-hebrew-description" aria-hidden="true" dir="rtl"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-hebrew-title">למחוק את נתוני הלקוח האלה?</h1> <p class="modal-description" id="alert-dialog-rtl-hebrew-description">פעולה זו מסירה את פרופיל הלקוח ואת היסטוריית ההזמנות לצמיתות.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">ביטול</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">מחיקה</button> </div> </div> </div> </div> </div>
This removes the customer profile and order history permanently.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25<div dir="ltr"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl-english">Delete customer data</button> <div class="modal fade modal--alert" id="alert-dialog-rtl-english" tabindex="-1" aria-labelledby="alert-dialog-rtl-english-title" aria-describedby="alert-dialog-rtl-english-description" aria-hidden="true" dir="ltr"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-english-title">Delete this customer data?</h1> <p class="modal-description" id="alert-dialog-rtl-english-description">This removes the customer profile and order history permanently.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">Delete</button> </div> </div> </div> </div> </div>
<div dir="ltr"> <button class="btn btn-outline-secondary" type="button" data-bs-toggle="modal" data-bs-target="#alert-dialog-rtl-english">Delete customer data</button> <div class="modal fade modal--alert" id="alert-dialog-rtl-english" tabindex="-1" aria-labelledby="alert-dialog-rtl-english-title" aria-describedby="alert-dialog-rtl-english-description" aria-hidden="true" dir="ltr"data-bs-backdrop="static" data-bs-keyboard="false" > <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header modal-header--alert"> <div class="modal-header__content"> <h1 class="modal-title" id="alert-dialog-rtl-english-title">Delete this customer data?</h1> <p class="modal-description" id="alert-dialog-rtl-english-description">This removes the customer profile and order history permanently.</p> </div> </div> <div class="modal-footer"> <button class="btn btn-outline-secondary" type="button" data-bs-dismiss="modal">Cancel</button> <button class="btn btn-danger" type="button" data-bs-dismiss="modal">Delete</button> </div> </div> </div> </div> </div>
For the underlying Modal plugin options, focus management, and accessibility notes, see the Bootstrap Modal documentation.
No matching pages.
Restore the default appearance.