MenuChevron Down
Popover Janela Flutuante - Docs - Artefact

Popover Janela Flutuante

Overlays
Auto-interativo

Introdução

Um elemento interativo que exibe conteúdo adicional em uma camada sobre sua âncora.

Uso

import { Popover } from "../components/ui/popover";
import { Button } from "../components/ui/button";

<Popover
  placement="right"
  trigger={<Button>Open Popover</Button>}
  title="Title"
  description="Description"
  body="Popover Body"
/>;

Construtor de páginas do CMS

Este componente está disponível como um bloco popover no Construtor de Páginas (content/pages/*.json):

{
  "type": "popover",
  "triggerText": "Open Popover",
  "title": "Title",
  "description": "Description",
  "body": "Popover Body"
}

Propriedades

Root

PropTypeDescription
childrenanySubcomponentes de Popover.
openbooleanSe o popover está aberto (controlado).
defaultOpenbooleanEstado de abertura inicial (não controlado). Padrão false.
onOpenChange(details: { open: boolean }) => voidChamado quando o popover abre ou fecha.

| placement | `"top" \ | "bottom" \ | "left" \ | "right"` | De que lado do disparador o conteúdo se abre. Padrão "bottom". Inverte automaticamente para o lado oposto se não houver espaço suficiente no viewport. |

| interactive | boolean | Força a hidratação como ilha. Padrão true. | | id | string | Identificador único para o popover. | | closeOnEscape | boolean | Fecha ao pressionar Escape. Padrão true. | | closeOnInteractOutside | boolean | Fecha ao interagir com o ponteiro fora, ou quando o foco sai do popover por tabulação. Padrão true. | | onClose | () => void | Callback acionado quando o popover fecha. | | onToggle | () => void | Callback acionado quando o popover alterna de estado. |

Trigger

PropTypeDescription
asChildbooleanSe deve fundir as props no elemento filho imediato.

Limitações

A ilha interativa posiciona e dimensiona o popover em relação ao seu disparador: ele se inverte para o lado oposto (por exemplo, bottomtop) quando o posicionamento solicitado transbordaria o viewport, e limita o eixo transversal para que o conteúdo nunca seja renderizado fora da tela. Ele não rastreia contêineres de rolagem nem observadores de redimensionamento como o Floating UI faz — o reposicionamento só é reexecutado no evento resize da janela enquanto o popover está aberto, e (já que o posicionador é ancorado via position: absolute ao próprio invólucro do disparador) rolar a página o move junto com o disparador de graça.

Aninhar o disparador de um Popover dentro do conteúdo de outro Popover é suportado (a delegação de cliques é delimitada por instância de popover), mas aninhar um Popover dentro do disparador de um Tooltip, ou vice-versa, não é — os dois componentes não coordenam a propriedade de data-part entre tipos de componentes.

A animação de saída _closed (scale-fade-out) é reproduzida antes que o popover seja realmente removido do layout — fechar não o oculta instantaneamente.