Componente estável e recomendada para novos projetos.Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.
Para escolher várias datas soltas: o componente aceita uma data ou um intervalo.
O calendário (br-date-picker), os controles de horário (br-time-picker) e o campo de texto (br-datetime-input) são criados pelo próprio componente; não é preciso declará-los.
Evento emitido quando a seleção muda. Payload (DatetimePickerChangeDetail): - mode: DatetimePickerMode — modo atual do componente (date | time | datetime). - selectionMode: DatetimePickerSelectionMode — single ou range. - value: Date | null | DatetimePickerDateRange — seleção atual (tipo depende de selectionMode). - serializedValue: string | undefined — representação serializada para integração com formulários.
---
true
brDatetimePickerValidationChangeComponente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.
Emitido ao iniciar e concluir a validação customizada. Payload (FormValidationChangeDetail): - validating: boolean — indica se a validação está em execução. - valid: boolean | null — resultado da validação (null enquanto valida). - message: string | null — mensagem de validação associada.
---
true
dateStateChange
Evento público emitido quando a data de referência ou a seleção mudam. Payload (DatetimePickerDateState): - referenceDate: Date — data usada para navegação visual (mês/semana exibidos). - value: Date | null — valor selecionado atualmente.
---
true
valueChangeComponente mantido por compatibilidade; prefira a alternativa indicada na documentação.
Evento emitido quando o valor selecionado muda.
Use brDatetimePickerChange para receber a seleção completa e tipada. Payload (legacy): Date | null — valor selecionado.
Use quando scripts externos precisam fornecer uma lista tipada de datas a bloquear no calendário. Substitui a prop disabledDates para atualizações imperativas.
Define um intervalo no modo atual e ativa selectionMode="range".
Valida datas contra bloqueios e sincroniza estado visual e de formulário. Em datetime, mantém os limites informados e sinaliza intervalo inválido quando o término precede o início, sem ajustar datas automaticamente.
Assinatura
setRange(start: Date | string | null, end: Date | string | null) => Promise<void>
Parâmetros
start: Date | string | null — data inicial do intervalo. end: Date | string | null — data final do intervalo.
Atribua uma função a validator. Ela recebe a data (Date ou null) ou, em intervalos, { start, end }, e retorna uma mensagem para invalidar ou null para aceitar.
picker.validator=(data)=>(data && data.getDay()===0?'Não atendemos aos domingos.':null);
O campo interno recebe um nome acessível conforme o modo: data, horário ou data e hora. Apresente também
um texto visível próximo ao componente para explicar o dado solicitado; o placeholder deve servir apenas
como exemplo de formato ou valor.
Instruções e erros precisam ser textuais e associados ao controle, sem depender apenas de cor ou ícone.
Seleciona a data em foco; datas bloqueadas são ignoradas.
Grade de dias
Home / End
Move o foco para o início ou o fim da semana.
Grade de dias
Page Up / Page Down
Move o foco para o mesmo dia do mês anterior ou seguinte.
Grade de dias
Setas
Move o foco um dia ou uma semana.
Grade de dias
Shift+Page Up / Shift+Page Down
Move o foco para o mesmo dia do ano anterior ou seguinte.
Hora e minuto
Enter
Confirma o valor digitado.
Hora e minuto
Seta para cima / para baixo
Incrementa ou decrementa o valor.
Painel
Escape
Fecha o painel e devolve o foco ao campo.
Painel
Tab / Shift+Tab
Percorre campo, navegação de mês e ano, grade e horários.
Datas bloqueadas continuam alcançáveis pelas setas para que o foco não fique preso, mas não podem ser
selecionadas. Ao trocar de mês pelos botões, pelo seletor de mês ou pelo ano, o foco vai para a data
selecionada, quando ela pertence ao mês exibido, ou para o mesmo dia do mês, limitado ao último dia
disponível.
A grade usa os papéis grid, row, columnheader e gridcell. Cada dia informa a data por extenso e o
estado de seleção ou de intervalo; o dia atual recebe aria-current="date" e os cabeçalhos das colunas têm o
nome completo do dia da semana. A troca de mês é anunciada por uma região aria-live="polite".
Mudar o valor pelo código não emite input nem change. Para receber o valor já tipado, inclusive em intervalos, use brDatetimePickerChange. valueChange ainda funciona, mas está depreciado.