Quick start guide and documentation
<head>)
Popover Title
Your popover content goes here!
We'll never share your email
Active Users
Active Users
Total users who logged in this month
Are you sure?
This action cannot be undone.
// Show programmatically for tour
const trigger = document.getElementById('feature-button');
RSL.Popover.show(trigger, {
placement: 'bottom',
animation: 'scale'
});
Premium Plan
Premium Features
• Unlimited storage
• Priority support
• Advanced analytics
Smart Positioning
This popover automatically chooses the best placement
based on available space. Try scrolling or resizing
the window to see it reposition!
placement="auto" for elements near viewport edges. The popover will automatically choose the best position (top, bottom, left, or right) to stay visible.
| Attribute | Values | Description |
|---|---|---|
data-toggle |
popover | tooltip |
Required. Enables popover/tooltip |
data-placement |
top | bottom | left | right | auto |
Where to show popover |
data-trigger |
click | hover | focus | manual |
How to trigger popover |
aria-describedby |
ID of popover element | Links trigger to popover (required) |
data-animation |
fade | scale | none |
Animation type |
data-offset |
Number (pixels) | Distance from trigger (default: 10) |
| Class | Color | Best For |
|---|---|---|
popover-primary |
Brand Purple | Key actions, brand messaging |
popover-success |
Green | Confirmations, positive feedback |
popover-danger |
Red | Warnings, destructive actions |
popover-warning |
Yellow | Cautions, important notices |
popover-info |
Cyan | Helpful information, tips |
popover-dark |
Dark Gray | Dark mode interfaces |
| Class | Max Width |
|---|---|
rsl-popover-sm |
200px |
rsl-popover |
276px (default) |
rsl-popover-lg |
400px |
// Get trigger element
const trigger = document.getElementById('my-trigger');
// Show popover
RSL.Popover.show(trigger, {
placement: 'top', // 'top', 'bottom', 'left', 'right', 'auto'
offset: 10, // Distance from trigger
animation: 'fade', // 'fade', 'scale', 'none'
onShow: function(popover, trigger) {
console.log('Popover shown');
},
onHide: function(popover, trigger) {
console.log('Popover hidden');
}
});
// Hide popover
RSL.Popover.hide(trigger);
// Toggle popover
RSL.Popover.toggle(trigger);
// Hide all popovers
RSL.Popover.hideAll();
// Update popover position (useful after scroll/resize)
RSL.Popover.updatePosition(trigger);
// Update all active popovers
RSL.Popover.updateAll();
// Re-initialize popovers (useful for dynamically added elements)
RSL.Popover.init();
// Listen for popover show
document.addEventListener('popover:show', function(e) {
const { popover, trigger } = e.detail;
console.log('Popover shown:', popover);
});
// Listen for popover hide
document.addEventListener('popover:hide', function(e) {
const { popover, trigger } = e.detail;
console.log('Popover hidden:', popover);
});
aria-describedby matches popover ID exactlyclass="rsl-popover"popover.js is loaded after DOMdata-toggle="popover"data-placement="auto" for automatic positioningoverflow: hidden or positioning issuesRSL.Popover.updatePosition(trigger) after layout changesz-index: 1060 by defaultposition and z-index of parent elementspopover.js loaded successfullyclick not manualplacement="auto" for popovers near viewport edges—it automatically finds the best position
data-toggle="tooltip" instead of data-toggle="popover" for automatic hover behavior
arrow div—it provides visual connection to the trigger
rsl-popover-lg class for a wider popover
data-offset="20" to increase space between trigger and popover
popover:show and popover:hide events for analytics tracking
Popovers are fully accessible out of the box:
role="tooltip") for screen readersaria-describedby links trigger to contentaria-expanded indicates open/closed stateOpen popover.html in your browser
Use playground.html as a template
Combine with RSL grids, cards, and modals for powerful UIs