Snippets Alert

Bootstrap 5 Alert Modals and Toast (SweetAlert Style)

A set of alert patterns built from Bootstrap modals and toasts: a success message, a delete confirmation and a quick toast.

Bootstrap 5 No jQuery Dec 2019 3K views

<section class="wdw-stage">
  <div class="container" style="max-width:1080px">
    <div class="mb-4">
      <span class="wdw-eyebrow">Feedback</span>
      <h2 class="wdw-heading h2 mb-1">SweetAlert-style alerts</h2>
      <p class="wdw-muted mb-0">Success message, delete confirmation and toast, built with Bootstrap modals and toasts.</p>
    </div>
    <div class="row g-4">
      <div class="col-12 col-md-4"><div class="wdw-card p-4 h-100 d-flex flex-column text-center">
        <span class="wdw-icon alert-badge bg-success-subtle text-success mx-auto mb-3"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5 9-10"/></svg></span>
        <h3 class="h5 fw-bold">Good job!</h3>
        <p class="wdw-muted mb-4">Your message was sent successfully.</p>
        <button type="button" class="btn btn-primary rounded-pill mt-auto" data-bs-toggle="modal" data-bs-target="#alertModal">Show message</button>
      </div></div>
      <div class="col-12 col-md-4"><div class="wdw-card p-4 h-100 d-flex flex-column text-center">
        <span class="wdw-icon alert-badge bg-danger-subtle text-danger mx-auto mb-3"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18M8 6V4h8v2M6 6l1 14h10l1-14"/></svg></span>
        <h3 class="h5 fw-bold">Delete this file?</h3>
        <p class="wdw-muted mb-3">You will not be able to undo this.</p>
        <div class="d-flex gap-2 mb-4 justify-content-center" aria-hidden="true"><span class="btn btn-outline-secondary rounded-pill px-3 disabled">Cancel</span><span class="btn btn-danger rounded-pill px-3 disabled">Delete</span></div>
        <button type="button" class="btn btn-outline-primary rounded-pill mt-auto" data-bs-toggle="modal" data-bs-target="#confirmModal">Confirm action</button>
      </div></div>
      <div class="col-12 col-md-4"><div class="wdw-card p-4 h-100 d-flex flex-column">
        <div class="alert-toast-preview d-flex align-items-center gap-3 rounded-4 p-3 mb-4" aria-hidden="true">
          <span class="wdw-icon alert-badge-sm bg-success-subtle text-success"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5 9-10"/></svg></span>
          <div class="text-start"><div class="fw-bold small">Saved</div><div class="small wdw-muted">Changes saved.</div></div>
        </div>
        <h3 class="h5 fw-bold text-center">Toast notification</h3>
        <p class="wdw-muted text-center mb-4">A quick, self-dismissing message.</p>
        <button type="button" class="btn btn-outline-primary rounded-pill mt-auto" id="toastBtn">Show toast</button>
      </div></div>
    </div>
  </div>

  <div class="modal fade" id="alertModal" tabindex="-1" aria-labelledby="alertTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm">
      <div class="modal-content border-0 rounded-4 text-center p-3">
        <div class="modal-body">
          <span class="wdw-icon alert-badge alert-pop bg-success-subtle text-success mb-3"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5 9-10"/></svg></span>
          <h3 class="h5 fw-bold" id="alertTitle">Good job!</h3>
          <p class="wdw-muted mb-4">Your message was sent successfully.</p>
          <button type="button" class="btn btn-primary rounded-pill w-100" data-bs-dismiss="modal">OK</button>
        </div>
      </div>
    </div>
  </div>

  <div class="modal fade" id="confirmModal" tabindex="-1" aria-labelledby="confirmTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm">
      <div class="modal-content border-0 rounded-4 text-center p-3">
        <div class="modal-body">
          <span class="wdw-icon alert-badge alert-pop bg-danger-subtle text-danger mb-3"><svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18M8 6V4h8v2M6 6l1 14h10l1-14"/></svg></span>
          <h3 class="h5 fw-bold" id="confirmTitle">Delete this file?</h3>
          <p class="wdw-muted mb-4">You will not be able to undo this.</p>
          <div class="d-grid gap-2 d-sm-flex">
            <button type="button" class="btn btn-outline-primary rounded-pill flex-fill" data-bs-dismiss="modal">Cancel</button>
            <button type="button" class="btn btn-danger rounded-pill flex-fill" id="confirmDelete" data-bs-dismiss="modal">Delete</button>
          </div>
        </div>
      </div>
    </div>
  </div>

  <div class="toast-container position-fixed bottom-0 end-0 p-3">
    <div id="demoToast" class="toast alert-toast rounded-4" role="status" aria-live="polite" aria-atomic="true">
      <div class="d-flex align-items-start gap-3 p-3">
        <span class="wdw-icon alert-badge-sm" id="toastIcon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5 9-10"/></svg></span>
        <div class="flex-grow-1"><div class="fw-bold" id="toastTitle">Saved</div><div class="small wdw-muted" id="toastText">Changes saved.</div></div>
        <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.

Free to use in personal and commercial projects under the MIT license.