Questionnaire
StableUma pergunta por vez, e o caminho de ida e volta entre elas: posição, alternativas de uma ou de várias escolhas, resposta digitada, atalho de teclado por alternativa e a linha de ações. Guarda as respostas e a posição, cada uma podendo ser do chamador. Não sabe o que é certo — devolve as respostas e quem chamou decide.
Instalação
npx up-web-ds add questionnairePreview
Basic
Multiple Choice
Etapa 1 de 3.
With Choice Descriptions
In English
Graded
Respondidas até agora: 0
All states
Basic
Multiple Choice
Etapa 1 de 3.
With Choice Descriptions
In English
Graded
Respondidas até agora: 0
Usage
Props
Questionnaire
Estende Omit< ComponentProps<'form'>, 'defaultValue' | 'onSubmit' >. Aceita também os atributos padrão de um elemento React (286 não listados).
QuestionnaireProgress
Estende ComponentProps<'p'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnaireItem
Estende Omit<ComponentProps<'div'>, 'title'>. Aceita também os atributos padrão de um elemento React (279 não listados).
QuestionnaireTitle
Estende ComponentProps<'h3'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnaireDescription
Estende ComponentProps<'p'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnaireChoices
Estende HTMLAttributes<HTMLElement>. Aceita também os atributos padrão de um elemento React (278 não listados).
QuestionnaireChoice
Estende Omit< ComponentProps<'label'>, 'onChange' >. Aceita também os atributos padrão de um elemento React (281 não listados).
QuestionnaireChoiceDescription
Estende ComponentProps<'span'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnaireInput
Estende Omit< ComponentProps<typeof Input>, 'value' | 'defaultValue' | 'onChange' >. Aceita também os atributos padrão de um elemento React (303 não listados).
QuestionnaireError
Estende ComponentProps<'p'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnaireActions
Estende ComponentProps<'div'>. Aceita também os atributos padrão de um elemento React (280 não listados).
QuestionnairePrevious
Estende Omit<ComponentProps<typeof Button>, 'onClick'>. Aceita também os atributos padrão de um elemento React (284 não listados).
QuestionnaireSkip
Estende Omit<ComponentProps<typeof Button>, 'onClick'>. Aceita também os atributos padrão de um elemento React (284 não listados).
QuestionnaireNext
Estende Omit<ComponentProps<typeof Button>, 'onClick'>. Aceita também os atributos padrão de um elemento React (284 não listados).
QuestionnaireSubmit
Estende Omit<ActionProps, 'onClick'>. Aceita também os atributos padrão de um elemento React (284 não listados).
prop obrigatória.
Composition
O Questionnaire é o form: guarda as respostas, a posição e as strings fixas. O QuestionnaireProgress diz onde a pessoa está; cada QuestionnaireItem é uma pergunta, e só a atual fica visível; o QuestionnaireActions é a linha de baixo, onde Avançar e Enviar dividem a mesma célula — escreva os dois e aparece o que couber.
Metadata
Notas de acessibilidade
Verificado em tests/e2e/questionnaire.spec.ts no Chromium desktop e mobile, em light e dark, com Axe sem violações WCAG 2.2 AA. Teclado: o grupo de alternativas é uma parada de tabulação só e as setas escolhem dentro dele, com anel de foco lido do navegador; a próxima parada é a linha de ações. O atalho de cada alternativa funciona de qualquer lugar do formulário e se cala enquanto uma resposta de texto está sendo digitada, então um dígito digitado é um dígito. Leitor de tela: uma escolha é um radiogroup e várias são um fieldset, os dois nomeados pela pergunta e descritos pela descrição dela e, quando existe, pelo erro; a posição é um role="status", então avançar é anunciado sem roubar o foco; o atalho entra no nome como atalho e não como parte da resposta, com o keycap aria-hidden ao lado do texto que o diz. A pergunta que não é a atual continua montada — para que a contagem seja a que o autor escreveu — e fica hidden, que é display:none: fora da ordem de tabulação e fora da árvore, verificado em navegador. Toque verificado em 375px com emulação de toque: o controle tem 16px e não é o alvo — o alvo é o cartão, um label de 44px cujas quatro bordas respondem ao toque —, os botões da linha de ações atingem 24x24 e nada rola horizontalmente. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — trocar de pergunta é uma troca de visibilidade e não uma travessia, nada se desloca, e o que transita é cor, que fica.
Classificação
- Layer
- Pattern
- Domínio
- Education
- Categoria
- assessment
- Status
- Stable
Origem e distribuição
- Fonte
- shadcn registry / questionnaire
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- Nenhuma
- Ícones
- Nenhum
- Usado por
- Nenhum ainda