Pular para o conteúdo

ListView

Lista de uma coluna com teclado, seleção e ações por item.

O ListView é a lista rica de uma coluna: tentativas de Webhook, Pedidos no celular, Fontes. Ele traz navegação por teclado, busca por inicial, seleção e ações por item. Para dados em colunas use DataGrid; para linhas-cartão fixas, sem seleção, ItemCard.

import { ListView } from "@rastreio-x/ui";

Padrão

Passe items e um render function. Cada ListView.Item tem id e textValue; o conteúdo vai em ListView.ItemContent com ListView.Title e ListView.Description. O aria-label é obrigatório.

Variante secundária

primary (padrão) tem fundo cinza com itens em superfície; secondary não tem fundo e é a escolha dentro de Widget e Sheet.

Seleção

selectionMode="multiple" (ou single) mostra as caixas de seleção. Use selectedKeys e onSelectionChange para controlar. Combine com ActionBar para ações em lote.

Ações por item

ListView.ItemAction reúne o estado e os botões à direita. onAction trata o clique na linha.

Itens desabilitados

disabledKeys impede seleção e foco. Explique o motivo no texto do item.

Lista vazia

renderEmptyState mostra o que fazer quando não há itens.

Anatomia

  • ListView.Item: a linha, com id e textValue.
  • ListView.ItemContent: ícone ou avatar mais texto.
  • ListView.Title e ListView.Description: texto principal e de apoio, truncados.
  • ListView.ItemAction: o espaço de ações à direita.

Propriedades

ListView:

ListView.Item:

Animações

O ListView não anima entradas nem saídas; só o estado de hover, seleção e foco muda de cor. Com prefers-reduced-motion, a folha global da fachada reduz qualquer transição a 0,01 ms.

Acessibilidade

  • Baseado em GridList do React Aria: papel grid, linhas com row, seleção anunciada.
  • Teclado: setas movem entre itens, Espaço seleciona, Enter dispara a ação, Home e End vão às pontas, digitar a inicial salta ao item.
  • aria-label obrigatório no ListView; textValue em cada item.
  • Botões dentro de ListView.ItemAction precisam do próprio aria-label.
  • Estado em ícone mais texto, nunca só cor.

Boas práticas

Faça

Título curto, uma linha de descrição e no máximo duas ações por item.

Evite

Dados tabulares com várias colunas dentro do ListView, ou botões sem rótulo acessível.
  • Use secondary dentro de painéis para não somar duas superfícies.
  • Para mais de 200 itens, ligue virtualized.
  • Para dados em colunas e ordenação, use DataGrid.

Relacionados