Popover

Popover - Phlex implementation

Examples

Default

Displays rich content in a portal, triggered by a button.

Dimensions

Set the dimensions for the layer.

<%= render "ui/popover" do %>
  <%= render "ui/popover/trigger" do %>
    <%= render "ui/button", variant: :outline do %>Open popover<% end %>
  <% end %>
  <%= render "ui/popover/content" do %>
    <div class="grid gap-4">
      <div class="space-y-2">
        <h4 class="font-medium leading-none">Dimensions</h4>
        <p class="text-sm text-muted-foreground">Set the dimensions for the layer.</p>
      </div>
    </div>
  <% end %>
<% end %>

With Form

Popover containing a form for input.

Dimensions

Set the dimensions for the layer.

<%= render "ui/popover" do %>
  <%= render "ui/popover/trigger" do %>
    <%= render "ui/button", variant: :outline do %>Open<% end %>
  <% end %>
  <%= render "ui/popover/content", classes: "w-80" do %>
    <div class="grid gap-4">
      <div class="space-y-2">
        <h4 class="font-medium leading-none">Dimensions</h4>
        <p class="text-sm text-muted-foreground">Set the dimensions for the layer.</p>
      </div>
      <div class="grid gap-2">
        <div class="grid grid-cols-3 items-center gap-4">
          <%= render "ui/label", for: "width" do %>Width<% end %>
          <%= render "ui/input", id: "width", value: "100%", classes: "col-span-2 h-8" %>
        </div>
        <div class="grid grid-cols-3 items-center gap-4">
          <%= render "ui/label", for: "max-width" do %>Max. width<% end %>
          <%= render "ui/input", id: "max-width", value: "300px", classes: "col-span-2 h-8" %>
        </div>
        <div class="grid grid-cols-3 items-center gap-4">
          <%= render "ui/label", for: "height" do %>Height<% end %>
          <%= render "ui/input", id: "height", value: "25px", classes: "col-span-2 h-8" %>
        </div>
      </div>
    </div>
  <% end %>
<% end %>

Features

  • Custom styling with Tailwind classes
  • Click outside to close

API Reference

Popover

Container for popover trigger and content.

Parameters

NameTypeDefaultDescription
placementStringbottomThe placement
offsetInteger4The offset
triggerStringclickThe trigger
hover_delayInteger200The hover delay
alignStringnilAlignment within container
side_offsetStringnilThe side offset

Content

The floating content panel.

Parameters

NameTypeDefaultDescription
sideStringbottomWhich side to display on
alignStringcenterAlignment within container

Trigger

Button or element that triggers the popover.

Parameters

NameTypeDefaultDescription
as_childBooleanfalseWhen true, yields attributes to block instead of rendering wrapper

Accessibility

Implements the WAI-ARIA Dialog (Non-modal) pattern with proper roles, states, and keyboard navigation.

Keyboard Shortcuts

KeyDescription
EnterActivates the focused element
EscapeCloses the component

JavaScript

Stimulus Controller

ui--popover

Values

NameTypeDescription
openBooleanControls open state

Actions

teardownKeyboardNavigationtoggleshowfindTriggerElementToFocushide

Events

EventDescriptionDetail
popover:showFired when popover show-
popover:hideFired when popover hide-