Popover
Componente standalone não modal com CDK Overlay/Portal, posicionamento, dismiss e retorno de foco.
Design
Anatomia
Título do Popover
Conteúdo contextual breve.
- Trigger — Button que controla abertura e
aria-expanded. - Panel — superfície elevada com
role="dialog". - Header — title opcional e close absoluto.
- Body — Content Text e Content Slot independentes.
- Actions — até dois Buttons substituíveis e ocultáveis separadamente.
- Arrow — Shape fechada que aponta para o trigger.
Exemplo interativo · Angular
Executado pelo componente Angular nativo com @angular/cdk/overlay + portal + a11y.
Carregando preview funcional…
Content Slot adicional · Angular
Executado pelo componente Angular nativo com CDK Overlay/Portal e content projection.
Carregando preview funcional…
Placements
| Modifier | Posição do panel |
|---|---|
ds-popover--bottom | Abaixo do trigger |
ds-popover--top | Acima do trigger |
ds-popover--left | À esquerda do trigger |
ds-popover--right | À direita do trigger |
Mapeamento de tokens
| Parte | Component tokens |
|---|---|
| Panel | component.popover.panel.{bg,border-color,border-width,gap,max-width,padding-x,padding-y,radius,shadow}.default |
| Title / Body | component.popover.title.color.default, component.popover.body.{color,gap,padding-bottom}.default |
| Close | component.popover.close.{size,icon-size,padding,color}.default, component.popover.close.icon.stroke-width.default |
| Content Slot | component.popover.content-slot.gap.default |
| Actions | component.popover.actions.{gap,padding-top}.default |
| Arrow | component.popover.arrow.{base,fill}.default |
Uso
Quando usar
Use Popover quando
O conteúdo contextual precisa de ações, links, um campo simples ou explicação mais rica que Tooltip, sem bloquear o restante da página.
Não use Popover quando
O conteúdo é somente um label curto (use Tooltip), exige decisão bloqueante ou fluxo longo (use Modal), ou representa uma lista de comandos (use Menu).
Relacionados
Quando escolher esta saída
Adote esta saída Angular nativa quando a aplicação já usa Angular. Ela consome o mesmo CSS do DS e não depende do runtime Web nem dos adapters React.
Implementação
- Status
- Beta
- Distribuição
- Tarball Angular validado
Instalação
npm install ./dist/tis-angular-0.0.0-beta.0.tgz ds-tispnpm add ./dist/tis-angular-0.0.0-beta.0.tgz ds-tisyarn add ./dist/tis-angular-0.0.0-beta.0.tgz ds-tisbun add ./dist/tis-angular-0.0.0-beta.0.tgz ds-tisEstilos do DS
@import "ds-tis/css";Importações Angular
import {
TisPopover,
TisPopoverActions,
TisPopoverContent,
} from '@tis/angular/popover'Template
<tis-popover
#popover
title="Preferências do projeto"
triggerLabel="Abrir preferências"
placement="bottom"
>
<div tisPopoverContent>Conteúdo contextual breve.</div>
<div tisPopoverActions>
<button type="button" (click)="popover.close('api')">Aplicar</button>
</div>
</tis-popover>Contrato público
- Pacote
@tis/angular- Entrypoint
@tis/angular/popover- Primitive
@angular/cdk/overlay + portal + a11y- Status
- Beta
Acessibilidade
Acessibilidade e teclado
| Entrada | Comportamento |
|---|---|
| Enter / Space | O Button trigger abre ou fecha pelo comportamento nativo de click. |
| Escape | Fecha o Popover e retorna foco ao trigger. |
| Tab | Segue a ordem natural; não há focus trap. |
role="dialog" | Use aria-labelledby para title visível ou aria-label quando não houver header. |
Responsabilidade da saída
Preserve o contrato de dialog não modal e valide Escape, interação externa, relações ARIA e retorno de foco.
Evidência de validação
Coberta pelo Storybook da saída independente e por verificações de browser, responsividade, teclado, Axe e bundle.