Command
StablePaleta de comandos: uma busca sobre coisas a fazer e lugares aonde ir, conduzida pelo teclado — digitar estreita, as setas percorrem, Enter executa. É um Autocomplete sempre aberto que lista no lugar, com o primeiro resultado sempre destacado, e vive dentro de um dialog (CommandDialog, sobre Base UI Dialog) ou inline na página, com grupos, atalhos por linha e rodapé. Use o Command para executar ações e navegar; para escolher um valor de formulário, use o Combobox ou o Autocomplete.
Instalação
npx up-web-ds add commandGera search para a biblioteca de ícones do projeto (components.json → iconLibrary).
Preview
Basic
Default
Nenhuma ação executada ainda.
Inline
Nenhuma ação executada ainda.
Empty
All states
Basic
Default
Nenhuma ação executada ainda.
Inline
Nenhuma ação executada ainda.
Empty
Usage
Props
CommandDialog
Estende DialogRoot.Props<Payload>.
CommandDialogPortal
Estende P. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandDialogTrigger
Estende CommandDialogPrimitive.Trigger.Props. Aceita também os atributos padrão de um elemento React (284 não listados).
CommandDialogClose
Estende CommandDialogPrimitive.Close.Props. Aceita também os atributos padrão de um elemento React (285 não listados).
CommandDialogBackdrop
Estende CommandDialogPrimitive.Backdrop.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandDialogViewport
Estende CommandDialogPrimitive.Viewport.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandDialogPopup
Estende CommandDialogPrimitive.Popup.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
Command
Estende React.ComponentProps<typeof Autocomplete>.
CommandInput
Estende React.ComponentProps<typeof AutocompleteInput>. Aceita também os atributos padrão de um elemento React (303 não listados).
CommandList
Estende React.ComponentProps<typeof AutocompleteList>. Aceita também os atributos padrão de um elemento React (274 não listados).
CommandEmpty
Estende React.ComponentProps<typeof AutocompleteEmpty>. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandPanel
Estende React.ComponentProps<'div'>. Aceita também os atributos padrão de um elemento React (280 não listados).
CommandGroup
Estende React.ComponentProps<typeof AutocompleteGroup>. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandGroupLabel
Estende React.ComponentProps<typeof AutocompleteGroupLabel>. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandCollection
Estende ComboboxCollection.Props.
CommandItem
Estende React.ComponentProps<typeof AutocompleteItem>. Aceita também os atributos padrão de um elemento React (272 não listados).
CommandSeparator
Estende React.ComponentProps<typeof AutocompleteSeparator>. Aceita também os atributos padrão de um elemento React (275 não listados).
CommandShortcut
Estende React.ComponentProps<'kbd'>. Aceita também os atributos padrão de um elemento React (280 não listados).
prop obrigatória.
Composition
No dialog, o Command vai dentro do CommandDialogPopup; inline, direto na página. O campo fica fora do painel, e o rodapé, quando existe, segue o painel.
Metadata
Notas de acessibilidade
Teclado verificado por teste, em jsdom e em navegador: o gatilho abre o dialog por clique e por Enter, o campo de busca recebe o foco ao abrir, digitar estreita a lista mantendo um resultado destacado, as setas percorrem sem tirar o foco do campo, Enter executa o comando destacado, e Escape fecha e devolve o foco ao gatilho. Na forma inline o campo não toma o foco ao carregar a página (autoFocus={false} no exemplo). O campo de busca não desenha anel de foco, como na origem: é o único alvo de foco da paleta, o cursor de texto e a linha destacada carregam a posição. Leitor de tela verificado por teste: o dialog é nomeado por aria-label em CommandDialogPopup (uma paleta não tem título visível), o campo é um combobox cujo aria-activedescendant acompanha o destaque, os grupos são nomeados pelo rótulo e somem quando nada neles casa, o estado vazio é anunciado por role="status", e o atalho de cada linha é um <kbd> que faz parte do nome da opção — o glifo (⌘) fica aria-hidden ao lado do nome falado. O restante da página sai da árvore de acessibilidade enquanto o dialog está aberto. CommandDialogClose foi acrescentado à API como saída para leitor de tela em toque, que não tem Escape nem clique fora. Touch verificado em navegador com emulação de toque em viewport de 375px: gatilho, opções e o botão de fechar ficam acima do mínimo de 24x24, o popup cabe na viewport, tocar numa opção a executa e tocar no scrim fecha. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — a escala de entrada e saída e o deslocamento do empilhamento saem (motion-reduce:), e sob reduce a transition fica só na opacidade, que é o transitionend que o Base UI espera para desmontar; o dialog abre e fecha normalmente. Light e dark verificados pela varredura axe do catálogo e com o dialog aberto.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- action
- Status
- Stable
Origem e distribuição
- Fonte
- coss registry / command
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- @base-ui/react
- Ícones
- search
- Construído sobre
- Autocomplete
- Usado por
- Roadmap Calendar