keepcalculator

06 Numbers and Powers

React Blueprint UI: Popovers, Alerts, Toasts

Card No. 06·8306 · Updated · Standard formula, shown below

Average pace 5.00 min/km
Average speed
12.00 km/h
Result
Finish time
50 min
You entered
Distance
10 km
You entered
You enter
Finish time, Distance
You get
Average pace, Average speed
Rounding
2 dp

React Blueprint provides three distinct user feedback components: Popover for hover/click content, Alert for modal confirmations, and Toast for transient notifications. You import each from the @blueprintjs/core package and control their visibility with React state, making them straightforward to integrate into any Blueprint-based app.

Formula

The calculator above is a pace converter, not part of the Blueprint UI topic, but it follows the same pattern: you input two numbers, and the output is computed by a simple formula. For pace: pace = time / distance, where time is in minutes and distance is in kilometers, giving minutes per kilometer. For speed: speed = distance / (time / 60), giving kilometers per hour.

Worked Example

Using the default values: time = 50 minutes, distance = 10 km. Pace = 50 / 10 = 5.00 min/km. Speed = 10 / (50/60) = 10 / 0.8333 = 12.00 km/h. The calculator shows 5.00 min/km and 12.00 km/h.

Background: Blueprint’s Feedback Components

Blueprint is Palantir’s open-source React UI toolkit, designed for data-dense desktop applications. Its feedback components—Popover, Alert, and Toast—solve different UX problems. Popovers are for contextual actions or info on hover or click. Alerts are for blocking confirmations that require a user decision. Toasts are for non-blocking updates that appear briefly and disappear. All three share the same design language, making them feel cohesive.

How Popover Works

The Popover component wraps a trigger element. You control its open state with the isOpen prop and the onInteraction callback. The content goes inside the popover’s children. A common pattern:

<Popover isOpen={isOpen} onInteraction={setIsOpen}>
  <Button>Click me</Button>
  <div>Popover content</div>
</Popover>

You can also use PopoverInteractionKind to set hover, click, or focus triggers. The placement prop controls where it appears relative to the target, such as "top" or "bottom-start". Popovers are ideal for tooltips, dropdown menus, or inline editing.

How Alert Works

Alert is a modal dialog that blocks interaction until the user responds. It requires isOpen and onConfirm (and optionally onCancel). The confirm button text is set via confirmButtonText. A typical usage:

<Alert isOpen={isOpen} onConfirm={handleConfirm} onCancel={handleCancel} confirmButtonText="Delete" />

Alerts are for destructive actions, like deleting a record, or for important confirmations. They are not for routine notifications—use a Toast for those.

How Toast Works

Toasts are managed by a Toaster instance. You create one with Toaster.create() and call its show() method. The toast can have an intent (primary, success, warning, danger), a message, and an action button. Example:

const toaster = Toaster.create();
toaster.show({ message: "File saved", intent: "success" });

Toasts auto-dismiss after a timeout, and you can set timeout per toast. They are perfect for confirming background actions, like saving or uploading, without interrupting the user.

Choosing the Right Component

  • Use Popover for supplementary content that appears on hover or click, like a help icon or a settings menu.
  • Use Alert when you need a decision before proceeding, especially for irreversible actions.
  • Use Toast for passive feedback that doesn’t require immediate action.

Common Problems and Solutions

One frequent issue is popovers not closing when clicking outside. Set canEscapeKeyClose and onClose properly. Another is toasts not appearing because the Toaster instance is created before the DOM is ready—create it inside a useEffect or after the component mounts. Alerts may trap focus; ensure you use Blueprint’s built-in focus management.

Comparison with Other Libraries

Compared to Material-UI or Ant Design, Blueprint’s components are more opinionated and less customizable. They are built for desktop, not mobile, so touch interactions may feel off. However, they are highly accessible and visually consistent. If you need a mobile-first design, consider alternatives.

Safety and Best Practices

Always provide a way to dismiss alerts and toasts via keyboard (Esc or close button). For popovers, ensure the trigger is a button or has a tabindex for keyboard users. Don’t nest popovers inside alerts—it breaks focus. Test with screen readers.

Frequently Asked Questions

Can I use Blueprint Popover with a custom trigger?

Yes, wrap any element as a child. The popover attaches event handlers to that element. For custom components, forward refs to the DOM node.

How do I make a toast persist until the user closes it?

Set timeout: 0 on the toast options. The toast will stay until the user clicks the close button or you programmatically dismiss it with toaster.dismiss(key).

Why is my Alert not showing?

Check that isOpen is true and that the component is mounted. Also ensure you are not conditionally rendering the Alert itself—use isOpen instead of unmounting it.

Can I style the Popover content?

Yes, add a className to the popover content div and use CSS. Blueprint also provides popover-content class for default styling.

Are these components compatible with React 18?

Yes, Blueprint v4+ supports React 16.8 to 18. For React 18, use the latest Blueprint version.

What is the difference between Popover and Tooltip?

Tooltip is a specialized popover with a simpler API and default hover interaction. Popover is more flexible for complex content.

Related

Formula used
in t | Finish time | min | 50 | 0
in d | Distance | km | 10 | 0 | 100000
out pace | Average pace | min/km | t / d | 2
out speed | Average speed | km/h | d / (t / 60) | 2

Each line is one input (in, sel, list) or one result (out: label, unit, formula, decimals). How the calculators work

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.

More cards in this drawer

The whole Numbers and Powers drawer →