Alerts

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.

Overview

Alerts are available for any length of text, as well as an optional dismiss button (and optional auto-dismissing).

<template>
  <div>
    <b-alert show>Default Alert</b-alert>

    <b-alert variant="success" show>Success Alert</b-alert>

    <b-alert v-model="showDismissibleAlert" variant="danger" dismissible>
      Dismissible Alert!
    </b-alert>

    <b-alert
      :show="dismissCountDown"
      dismissible
      variant="warning"
      @dismissed="dismissCountDown=0"
      @dismiss-count-down="countDownChanged"
    >
      <p>This alert will dismiss after {{ dismissCountDown }} seconds...</p>
      <b-progress
        variant="warning"
        :max="dismissSecs"
        :value="dismissCountDown"
        height="4px"
      ></b-progress>
    </b-alert>

    <b-button @click="showAlert" variant="info" class="m-1">
      Show alert with count-down timer
    </b-button>
    <b-button @click="showDismissibleAlert=true" variant="info" class="m-1">
      Show dismissible alert ({{ showDismissibleAlert ? 'visible' : 'hidden' }})
    </b-button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        dismissSecs: 10,
        dismissCountDown: 0,
        showDismissibleAlert: false
      }
    },
    methods: {
      countDownChanged(dismissCountDown) {
        this.dismissCountDown = dismissCountDown
      },
      showAlert() {
        this.dismissCountDown = this.dismissSecs
      }
    }
  }
</script>

<!-- b-alert.vue -->

Visible state

Use the show prop to control the visibility state of the alert. By default alerts are not shown. Set the prop show to explicitly display them.

The show prop accepts boolean true or false to show and hide the alert respectively. It can also be set to a positive integer (representing seconds) to create a self dismissing alert. See the Auto Dismissing Alerts section below for details.

v-model support

You can use the v-model directive to create two-way data bindings on the show prop as in v-model="showDismissibleAlert" above. Useful when you use dismissible because when user closes the alert, your variable will be updated. Do not use the show prop when using v-model.

Contextual variants

For proper styling of <b-alert>, use one of the four required contextual variants by setting the variant prop to one of the following: info, success, warning or danger. The default is info.

<div>
  <b-alert show variant="primary">Primary Alert</b-alert>
  <b-alert show variant="secondary">Secondary Alert</b-alert>
  <b-alert show variant="success">Success Alert</b-alert>
  <b-alert show variant="danger">Danger Alert</b-alert>
  <b-alert show variant="warning">Warning Alert</b-alert>
  <b-alert show variant="info">Info Alert</b-alert>
  <b-alert show variant="light">Light Alert</b-alert>
  <b-alert show variant="dark">Dark Alert</b-alert>
</div>

<!-- b-alert-variants.vue -->

Conveying meaning to assistive technologies

Using color variants to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the .sr-only class.

Additional content inside alerts

<b-alerts> can also contain additional HTML elements like headings and paragraphs, which will be styled with the appropriate color matching the variant.

<div>
  <b-alert show variant="success">
    <h4 class="alert-heading">Well done!</h4>
    <p>
      Aww yeah, you successfully read this important alert message. This example text is going to
      run a bit longer so that you can see how spacing within an alert works with this kind of
      content.
    </p>
    <hr>
    <p class="mb-0">
      Whenever you need to, be sure to use margin utilities to keep things nice and tidy.
    </p>
  </b-alert>
</div>

<!-- b-alert-content.vue -->

Use the .alert-link utility CSS class to quickly provide matching colored links within any alert. Use on <a> or <b-link>.

<div>
  <b-alert show variant="primary"><a href="#" class="alert-link">Primary Alert</a></b-alert>
  <b-alert show variant="secondary"><a href="#" class="alert-link">Secondary Alert</a></b-alert>
  <b-alert show variant="success"><a href="#" class="alert-link">Success Alert</a></b-alert>
  <b-alert show variant="danger"><a href="#" class="alert-link">Danger Alert</a></b-alert>
  <b-alert show variant="warning"><a href="#" class="alert-link">Warning Alert</a></b-alert>
  <b-alert show variant="info"><a href="#" class="alert-link">Info Alert</a></b-alert>
  <b-alert show variant="light"><a href="#" class="alert-link">Light Alert</a></b-alert>
  <b-alert show variant="dark"><a href="#" class="alert-link">Dark Alert</a></b-alert>
</div>

<!-- b-alert-links.vue -->

Dismissible alerts

Using the dismissible prop it's possible to dismiss any <b-alert> inline. This will add a close X button. Use the dismiss-label prop to change the hidden label text associated with the dismiss button.

<div>
  <b-alert show dismissible>
    Dismissible Alert! Click the close button over there <b>&rArr;</b>
  </b-alert>
</div>

<!-- b-alert-dismiss.vue -->

Auto dismissing alerts

To create a <b-alert> that dismisses automatically after a period of time, set the show prop (or the v-model) to the number of seconds you would like the <b-alert> to remain visible for. Only integer number of seconds are supported.

<template>
  <div>
    <b-alert
      :show="dismissCountDown"
      dismissible
      variant="warning"
      @dismissed="dismissCountDown=0"
      @dismiss-count-down="countDownChanged"
    >
      This alert will dismiss after {{ dismissCountDown }} seconds...
    </b-alert>
    <b-button @click="showAlert" variant="info" class="m-1">
      Show alert with count-down timer
    </b-button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        dismissSecs: 5,
        dismissCountDown: 0
      }
    },
    methods: {
      countDownChanged(dismissCountDown) {
        this.dismissCountDown = dismissCountDown
      },
      showAlert() {
        this.dismissCountDown = this.dismissSecs
      }
    }
  }
</script>

<!-- b-alert-auto-dismissing.vue -->

Fading alerts

Use the fade prop to enable animation. By default alerts are not animated.

<template>
  <div>
    <b-alert show dismissible fade>Dismissible Alert!</b-alert>

    <b-alert
      variant="danger"
      dismissible
      fade
      :show="showDismissibleAlert"
      @dismissed="showDismissibleAlert=false"
    >
      Dismissible Alert!
    </b-alert>

    <b-alert
      :show="dismissCountDown"
      dismissible
      fade
      variant="warning"
      @dismiss-count-down="countDownChanged"
    >
      This alert will dismiss after {{ dismissCountDown }} seconds...
    </b-alert>

    <b-button @click="showAlert" variant="info" class="m-1">
      Show alert with count-down timer
    </b-button>
    <b-button @click="showDismissibleAlert=true" variant="info" class="m-1">
      Show dismissible alert ({{ showDismissibleAlert ? 'visible' : 'hidden' }})
    </b-button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        dismissSecs: 5,
        dismissCountDown: 0,
        showDismissibleAlert: false
      }
    },
    methods: {
      countDownChanged(dismissCountDown) {
        this.dismissCountDown = dismissCountDown
      },
      showAlert() {
        this.dismissCountDown = this.dismissSecs
      }
    }
  }
</script>

<!-- b-alert-fade.vue -->

Component reference

<b-alert>

Properties

PropertyTypeDefaultDescription
variant
Settings
String'info'Applies one of the Bootstrap theme color variants to the component
dismissible
BooleanfalseWhen set, enables the dismiss close button
dismiss-label
Settings
String'Close'Value for the 'aria-label' attribute on the dismiss button
show
v-model
Boolean or Number or StringfalseWhen set, shows the alert. Set to a number (seconds) to show and automatically dismiss the alert after the number of seconds has elapsed
fade
BooleanfalseWhen set to 'true', enables the fade animation/transition on the component

v-model

PropertyEvent
showinput

Slots

Slot NameDescription
dismiss Content for the dismiss button.

Events

EventArgumentsDescription
dismissed Alert dismissed either via the dismiss close button or when the dismiss countdown has expired
dismiss-count-down
  1. dismissCountDown - Time remaining to dismissed
When prop show is a number, this event emits every second on countdown.
input
  1. show - Boolean state of alert, or Number for current countdown value
Used to update the v-model show value

Importing individual components

You can import individual components into your project via the following named exports:

ComponentNamed ExportImport Path
<b-alert>BAlertbootstrap-vue

Example:

import { BAlert } from 'bootstrap-vue'
Vue.component('b-alert', BAlert)

Importing as a Vue.js plugin

This plugin includes all of the above listed individual components. Plugins also include any component aliases.

Named ExportImport Path
AlertPluginbootstrap-vue

Example:

import { AlertPlugin } from 'bootstrap-vue'
Vue.use(AlertPlugin)