CxJS

MsgBox

import { MsgBox } from 'cx/widgets'; Copied

The MsgBox class provides utility methods for displaying alert and confirmation dialogs. Both methods return Promises, making it easy to handle user responses with async/await.

Alert

Use MsgBox.alert() to display informational messages. The method accepts either a simple string or a configuration object.

<div style={{ display: "flex", flexWrap: "wrap", gap: "8px" }}>
  <Button
    onClick={() => {
      MsgBox.alert("This is a simple alert message.")
    }}
  >
    Simple Alert
  </Button>
  <Button
    onClick={() => {
      MsgBox.alert({
        title: "Information",
        message: "This alert has a custom title.",
      })
    }}
  >
    Alert with Title
  </Button>
  <Button
    onClick={() => {
      MsgBox.alert({
        title: "Custom Button",
        message: "Click the button below to close.",
        okText: "Got it!",
      })
    }}
  >
    Custom OK Text
  </Button>
</div>

Yes/No Confirmation

Use MsgBox.yesNo() to ask the user for confirmation. The returned Promise resolves to "yes" or "no" based on the user’s choice.

<div
  style={{
    display: "flex",
    flexWrap: "wrap",
    gap: "8px",
    alignItems: "center",
  }}
>
  <Button
    onClick={async (e, { store }) => {
      const result = await MsgBox.yesNo("Do you want to proceed?")
      store.set(m.result, result)
    }}
  >
    Simple Yes/No
  </Button>
  <Button
    onClick={async (e, { store }) => {
      const result = await MsgBox.yesNo({
        title: "Confirm Action",
        message: "Are you sure you want to delete this item?",
        yesText: "Delete",
        noText: "Cancel",
        yesButtonMod: "primary",
      })
      store.set(m.result, result)
    }}
  >
    Custom Buttons
  </Button>
  <span
    text={{ expr: `{${m.result}} ? "Last result: " + {${m.result}} : ""` }}
  />
</div>

Rich Content

For messages with formatted content, links, or images, use the children property instead of message.

<div style={{ display: "flex", flexWrap: "wrap", gap: "8px" }}>
  <Button
    onClick={() => {
      MsgBox.alert({
        title: "Terms of Service",
        children: (
          <div>
            <p>Please read the following carefully:</p>
            <ul style={{ marginLeft: "20px", marginTop: "8px" }}>
              <li>You must be 18 or older</li>
              <li>You agree to our privacy policy</li>
              <li>You accept the terms of use</li>
            </ul>
            <p style={{ marginTop: "12px", fontStyle: "italic" }}>
              By clicking OK, you accept these terms.
            </p>
          </div>
        ),
        okText: "I Accept",
      })
    }}
  >
    Rich Content Alert
  </Button>
  <Button
    onClick={() => {
      MsgBox.yesNo({
        title: "Delete Confirmation",
        children: (
          <div>
            <p>
              <strong>Warning:</strong> This action cannot be undone.
            </p>
            <p style={{ marginTop: "8px" }}>
              Are you sure you want to permanently delete this file?
            </p>
          </div>
        ),
        yesText: "Yes, Delete",
        noText: "Keep File",
      })
    }}
  >
    Rich Content Confirm
  </Button>
</div>

Methods

MethodDescription
MsgBox.alert(options)Displays an alert dialog. Returns a Promise<void> that resolves when the user clicks OK.
MsgBox.yesNo(options)Displays a confirmation dialog. Returns a Promise<string> that resolves to "yes" or "no".

Options

Both methods accept either a message string or a configuration object with these properties:

PropertyTypeDescription
messagestringText message to display.
titlestringDialog window title.
headerobjectCustom Cx component for the window header.
childrenanyRich content (Cx components) to display instead of a plain message.
itemsanyAlias for children.
stylestringCSS style for the dialog window.
storeStoreStore instance to use for the dialog.
okTextstringCustom text for the OK button. Default: "OK".
yesTextstringCustom text for the Yes button. Default: "Yes".
noTextstringCustom text for the No button. Default: "No".
yesButtonModstringVisual modifier for the Yes button.
noButtonModstringVisual modifier for the No button.
callbackfunctionOptional callback invoked before closing. Return false to prevent closing.