Skip to main content

Popovers

Documentation and examples for adding boodoo popovers — small, overlay content bubbles that sit on top of their reference element.

Overview

Popovers are a small content bubble that sit on top of their reference element. Add data-boodoo-toggle="popover" with a data-boodoo-title, or store the content in the title attribute. Clicking the trigger toggles the popover; it closes on outside tap and with Esc.

boodoo ships a dependency-free positioning engine, so no Popper is required.

Example: enable popovers

<button type="button"
        data-boodoo-toggle="popover" data-boodoo-title="Popover title"
        data-boodoo-content="And here's some amazing content.">
  Click to toggle popover
</button>

Placements

Four placement options are available: top, bottom, start (left), and end (right). Use data-boodoo-placement.

<button type="button" class="btn btn-outline-secondary" data-boodoo-toggle="popover" data-boodoo-placement="top"
  data-boodoo-content="Top popover">Top</button>
<button type="button" class="btn btn-outline-secondary" data-boodoo-toggle="popover" data-boodoo-placement="bottom"
  data-boodoo-content="Bottom popover">Bottom</button>
<button type="button" class="btn btn-outline-secondary" data-boodoo-toggle="popover" data-boodoo-placement="start"
  data-boodoo-title="Start" data-boodoo-content="Start placement">Start</button>
<button type="button" class="btn btn-outline-secondary" data-boodoo-toggle="popover" data-boodoo-placement="end"
  data-boodoo-content="End placement">End</button>

Dismiss on next click

Use the trigger option — data-boodoo-trigger="focus" makes the popover toggle on focus and dismiss on blur (good for toggle buttons).

<a tabindex="0" class="btn btn-lg btn-outline-primary" role="button" data-boodoo-toggle="popover"
  data-boodoo-trigger="focus" data-boodoo-title="Dismissible popover"
  data-boodoo-content="And here's some amazing content. Focus-managed for accessibility.">
  Dismissible popover
</a>

JavaScript

// Enable all popovers on the page
document.querySelectorAll('[data-boodoo-toggle="popover"]').forEach(function (el) {
  if (!boodoo.Popover.getInstance(el)) boodoo.Popover.getOrCreateInstance(el);
});

Native HTML5 Popover API (Zero-JS)

Modern browsers natively support popups using the popover and popovertarget attributes. boodoo styles native popovers out of the box:

HTML5 Popover
Built natively using the browser Popover API without any JavaScript positioning dependencies.
<button type="button" class="btn btn-outline-primary" popovertarget="myPopover">
  <span>Toggle Native Popover</span>
</button>

<div id="myPopover" popover class="popover p-3">
  <strong><span>Native Popover</span></strong>
  <p class="mb-0"><span>Zero JavaScript required.</span></p>
</div>