Prism Docs

Popover

A floating component that displays additional information when an element is clicked or hovered.

Basic Usage

The most basic popover, which appears on hover.

Title
This is popover content.
<prism-button [prismPopoverTrigger]="popover" placement="top" variant="primary">Hover Me</prism-button>
<prism-popover #popover="prismPopover" title="Title" content="This is popover content."></prism-popover>

Click Trigger

Click the button to toggle the popover. Clicking anywhere outside closes it.

Title
This popover opens on click.
<prism-button [prismPopoverTrigger]="popover2" trigger="click" placement="bottom" variant="secondary">Click Me</prism-button>
<prism-popover #popover2="prismPopover" title="Title" content="This popover opens on click."></prism-popover>

Focus Trigger

Use focus to show the popover on input fields.

Focus triggers this popover
<prism-input>
   <input prismInput placeholder="Focus me" [prismPopoverTrigger]="popover3" trigger="focus" placement="right" />
</prism-input>
<prism-popover #popover3="prismPopover" content="Focus triggers this popover"></prism-popover>

Content Only

A popover without a title.

This is popover content without a title.
<prism-button [prismPopoverTrigger]="contentOnlyPopover" placement="top" variant="primary">Hover Me</prism-button>
<prism-popover #contentOnlyPopover="prismPopover" content="This is popover content without a title."></prism-popover>

Placement

There are 12 placement options available.

Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
Title
Content
<!-- 12 Placments Example -->
<div style="margin-left: 70px; display: flex; gap: 8px;">
  <prism-button [prismPopoverTrigger]="topLeft" placement="topLeft">TL</prism-button>
  <prism-popover #topLeft="prismPopover" title="Title" content="Content"></prism-popover>
  <prism-button [prismPopoverTrigger]="top" placement="top">Top</prism-button>
  <prism-popover #top="prismPopover" title="Title" content="Content"></prism-popover>
  <prism-button [prismPopoverTrigger]="topRight" placement="topRight">TR</prism-button>
  <prism-popover #topRight="prismPopover" title="Title" content="Content"></prism-popover>
</div>
<!-- ... Left and Right Placements ... -->
<!-- ... Bottom Placements ... -->

Complex Content

You can use templates for title and content to render complex forms inside a popover.

Quick SettingsClose

Adjust your settings below.

<prism-button [prismPopoverTrigger]="popover4" trigger="click" placement="bottomRight" variant="primary">Complex Content</prism-button>
<prism-popover #popover4="prismPopover" [title]="titleTemplate" [content]="contentTemplate"></prism-popover>

<ng-template #titleTemplate>
  <div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
    <span>Quick Settings</span>
    <a href="javascript:void(0)" (click)="popover4.hide()">Close</a>
  </div>
</ng-template>

<ng-template #contentTemplate>
  <div>
    <p>Adjust your settings below.</p>
    <prism-input>
       <input prismInput placeholder="Email" />
    </prism-input>
    <div style="margin-top: 12px; display: flex; justify-content: flex-end;">
       <prism-button variant="primary" size="sm" (click)="popover4.hide()">Save</prism-button>
    </div>
  </div>
</ng-template>

API Overview

PrismPopoverTriggerDirective

NameTypeDefaultDescription
[prismPopoverTrigger]PrismPopoverComponent-The popover instance to control
trigger'click' | 'hover' | 'focus''hover'Trigger mode
placementPrismPopoverPlacement'top'Position of the popover (12 options)

PrismPopoverComponent

NameTypeDefaultDescription
titlestring | TemplateRef<unknown>-Title of the popover
contentstring | TemplateRef<unknown>-Content of the popover
visibleSignal<boolean>falseReadonly current visibility state
show() => void-Programmatically open popover
hide() => void-Programmatically close popover