Message Box

A set of modal boxes simulating system message box, mainly for alerting information, confirm operations and prompting messages.

TIP

By design MessageBox provides simulations of system's alert, confirm and prompt,so it's content should be simple. For more complicated contents, please use Dialog.

Alert

Alert interrupts user operation until the user confirms.

Open an alert by calling the $alert method. It simulates the system's alert, and cannot be closed by pressing ESC or clicking outside the box. In this example, two parameters message and title are received. It is worth mentioning that when the box is closed, it returns a Promise object for further processing. If you are not sure if your target browsers support Promise, you should import a third party polyfill or use callbacks instead like this example.

Confirm

Confirm is used to ask users' confirmation.

Call $confirm method to open a confirm, and it simulates the system's confirm. We can also highly customize Message Box by passing a third attribute options which is a literal object. The attribute type indicates the message type, and it's value can be success, error, info and warning. Note that the second attribute title must be a string, and if it is an object, it will be handled as the attribute options. Here we use Promise to handle further processing.

Prompt

Prompt is used when user input is required.

Call $prompt method to open a prompt, and it simulates the system's prompt. You can use inputPattern parameter to specify your own RegExp pattern. Use inputValidator to specify validation method, and it should return Boolean or String. Returning false or String means the validation has failed, and the string returned will be used as the inputErrorMessage. In addition, you can customize the placeholder of the input box with inputPlaceholder parameter.

Customization

Can be customized to show various content.

The three methods mentioned above are repackagings of the $msgbox method. This example calls $msgbox method directly using the showCancelButton attribute, which is used to indicate if a cancel button is displayed. Besides we can use cancelButtonClass to add a custom style and cancelButtonText to customize the button text (the confirm button also has these fields, and a complete list of fields can be found at the end of this documentation). This example also uses the beforeClose attribute. It is a method and will be triggered when the MessageBox instance will be closed, and its execution will stop the instance from closing. It has three parameters: action, instance and done. Using it enables you to manipulate the instance before it closes, e.g. activating loading for confirm button; you can invoke the done method to close the MessageBox instance (if done is not called inside beforeClose, the instance will not be closed).

TIP

The content of MessageBox can be VNode, allowing us to pass custom components. When opening the MessageBox, Vue compares new VNode with old VNode, then figures out how to efficiently update the UI, so the components may not be completely re-rendered. In this case, you can add a unique key to VNode each time MessageBox opens.

Use HTML String

message supports HTML string.

Set dangerouslyUseHTMLString to true and message will be treated as an HTML string.

WARNING

Although message property supports HTML strings, dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS attacksopen in new window. So when dangerouslyUseHTMLString is on, please make sure the content of message is trusted, and never assign message to user-provided content.

Distinguishing cancel and close

In some cases, clicking the cancel button and close button may have different meanings.

By default, the parameters of Promise's reject callback and callback are 'cancel' when the user cancels (clicking the cancel button) and closes (clicking the close button or mask layer, pressing the ESC key) the MessageBox. If distinguishCancelAndClose is set to true, the parameters of the above two operations are 'cancel' and 'close' respectively.

Customized Icon

The icon can be customized to any Vue component or render function (JSX)open in new window.

Draggable

MessageBox can be draggable. Setting draggable to true allows user to drag MessageBox.

Global method

If Bigin UI is fully imported, it will add the following global methods for app.config.globalProperties: $msgbox, $alert, $confirm and $prompt. So in a Vue instance you can call MessageBox like what we did in this page. The parameters are:

  • $msgbox(options)
  • $alert(message, title, options) or $alert(message, options)
  • $confirm(message, title, options) or $confirm(message, options)
  • $prompt(message, title, options) or $prompt(message, options)

Example

import { getCurrentInstance } from 'vue'

// in your setup method
const { appContext } = getCurrentInstance()!
const { $msgbox, $alert, $confirm, $prompt } =
  appContext.config.globalProperties

// You can use it like:
$msgbox({})

// or using variants
$alert('Hello world!', 'Title', { showClose: true })

App context inheritance

Now message box accepts a context as second (forth if you are using message box variants) parameter of the message constructor which allows you to inject current app's context to message which allows you to inherit all the properties of the app.

import { getCurrentInstance } from 'vue'
import { BMessageBox } from 'bigin-ui'
// in your setup method
const { appContext } = getCurrentInstance()!
// You can pass it like:
BMessageBox({}, appContext)
// or if you are using variants
BMessageBox.alert('Hello world!', 'Title', {}, appContext)

Local import

If you prefer importing MessageBox on demand:

import { BMessageBox } from 'bigin-ui'

The corresponding methods are: BMessageBox, BMessageBox.alert, BMessageBox.confirm and BMessageBox.prompt. The parameters are the same as above.

Options

AttributeDescriptionTypeAccepted ValuesDefault
autofocusauto focus when open MessageBoxbooleantrue
titletitle of the MessageBoxstring
messagecontent of the MessageBoxstring
dangerouslyUseHTMLStringwhether message is treated as HTML stringbooleanfalse
typemessage type, used for icon displaystringsuccess / info / warning / error
iconcustom icon component, overrides typestring / Component
custom-classcustom class name for MessageBoxstring
custom-stylecustom inline style for MessageBoxCSSProperties
callbackMessageBox closing callback if you don't prefer Promisefunction(action, instance), where action can be 'confirm', 'cancel' or 'close', and instance is the MessageBox instance. You can access to that instance's attributes and methods
showClosewhether to show close icon of MessageBoxbooleantrue
before-closecallback before MessageBox closes, and it will prevent MessageBox from closingfunction(action, instance, done), where action can be 'confirm', 'cancel' or 'close'; instance is the MessageBox instance, and you can access to that instance's attributes and methods; done is for closing the instance
distinguish-cancel-and-closewhether to distinguish canceling and closing the MessageBoxbooleanfalse
lock-scrollwhether to lock body scroll when MessageBox promptsbooleantrue
show-cancel-buttonwhether to show a cancel buttonbooleanfalse (true when called with confirm and prompt)
show-confirm-buttonwhether to show a confirm buttonbooleantrue
cancel-button-texttext content of cancel buttonstringCancel
confirm-button-texttext content of confirm buttonstringOK
cancel-button-classcustom class name of cancel buttonstring
confirm-button-classcustom class name of confirm buttonstring
close-on-click-modalwhether MessageBox can be closed by clicking the maskbooleantrue (false when called with alert)
close-on-press-escapewhether MessageBox can be closed by pressing the ESCbooleantrue (false when called with alert)
close-on-hash-changewhether to close MessageBox when hash changesbooleantrue
show-inputwhether to show an inputbooleanfalse (true when called with prompt)
input-placeholderplaceholder of inputstring
input-typetype of inputstringtext
input-valueinitial value of inputstring
input-patternregexp for the inputregexp
input-validatorvalidation function for the input. Should returns a boolean or string. If a string is returned, it will be assigned to inputErrorMessagefunction
input-error-messageerror message when validation failsstringIllegal input
centerwhether to align the content in centerbooleanfalse
draggablewhether MessageBox is draggablebooleanfalse
round-buttonwhether to use round buttonbooleanfalse
button-sizecustom size of confirm and cancel buttonsstringsmall / default / largedefault
Last Updated:
Contributors: Tam Mai