Popover
Non-modal floating content triggered by click.
Usage
<w-popover>
<w-slot trigger><button>More info</button></w-slot>
<w-slot body>
<div>
<h3>Details</h3>
<p>Additional information here.</p>
</div>
</w-slot>
</w-popover>
Props
| Prop | Type | Default | Description |
|---|---|---|---|
open | boolean | false | Whether popover is visible |
placement | string | "bottom" | Position relative to trigger |
persistent | boolean | false | Prevent closing via Escape or outside click |
closeOnOutsideClick | boolean | true | Close when clicking outside |
closeOnEscape | boolean | true | Close on Escape key |
portal | boolean | true | Teleport to body |
Slots
| Slot | Element | Description |
|---|---|---|
trigger | Button | Element that opens the popover |
content | Any | Popover content |
close | Button | Optional close button |
Events
| Event | Description |
|---|---|
open | Fired when popover opens |
close | Fired when popover closes |
Methods
| Method | Description |
|---|---|
show() | Open the popover |
hide() | Close the popover |
toggle(force?) | Toggle open state |
Keyboard
| Key | Action |
|---|---|
Enter / Space | Toggle popover (on trigger) |
Escape | Close popover |
Examples
Persistent Popover
A persistent popover stays open until explicitly closed.
<w-popover persistent>
<w-slot trigger><button>Edit Settings</button></w-slot>
<w-slot body>
<div>
<h3>Settings</h3>
<input type="text" placeholder="Name" />
<button onclick="this.closest('w-popover').open = false">Save</button>
</div>
</w-slot>
</w-popover>
Accessibility
- Trigger has
aria-haspopupandaria-expanded - Content has
aria-labeloraria-labelledby - Focus management without full trapping