Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Datetime picker

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.

Visão Geral

Design System

Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o Design System do GovBR.

Exemplo(s)

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
Compartilhar URL
Mudar fundo
Abrir no StackBlitz
Tela cheia
HTML
Controles
JS
CSS
Console
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Formatar código
Resetar código para o estado inicial
Copiar para a área de transferência

Propriedades

disabled

Atributodisabled
DescriçãoDesabilita toda a interação do componente.

Quando true, impede abrir o picker, alterar valores e navegar entre datas/horários.
Tipoboolean
Valor padrãofalse

disabledDates

Atributodisabled-dates
DescriçãoDefine um conjunto de datas indisponíveis para seleção.

Aceita uma lista de Date e/ou strings analisáveis, ou uma string com datas
separadas por espaço em branco. Datas inválidas são ignoradas com warning.
A comparação considera apenas o dia (ano/mês/dia), ignorando hora.
TipoDatetimePickerDisabledDate[] | string
Valor padrãonull

fixedRowCount

Atributofixed-row-count
DescriçãoDefine se o calendário deve manter um número fixo de linhas (6 semanas = 42 dias)
ou variar conforme o mês.

Quando true, o calendário sempre exibe 6 semanas completas.
Quando false, o calendário adapta-se ao mês, exibindo apenas as semanas necessárias.
Tipoboolean
Valor padrãofalse

initialMoment

Atributoinitial-moment
DescriçãoDefine a seleção inicial do componente.

Aceita:
- 'now': seleciona o momento atual.
- Date ou string: seleciona uma data arbitrária.
- null: inicia sem seleção.

Reativo em runtime: mudanças na prop atualizam estado e subcomponentes.
TipoDate | string
Valor padrãonull

locale

Atributolocale
DescriçãoDefine o locale usado pelos subcomponentes para formatar datas e rótulos.
Tipostring
Valor padrão'pt-BR'

max

Atributomax
DescriçãoMaior data/horário aceito, interpretado conforme mode.
TipoDate | string
Valor padrãonull

min

Atributomin
DescriçãoMenor data/horário aceito, interpretado conforme mode.
TipoDate | string
Valor padrãonull

mode

Atributomode
DescriçãoDefine o modo de seleção exibido pelo componente: data, horário ou ambos.

Valores aceitos: date, time ou datetime.
Valores inválidos são corrigidos automaticamente para o valor padrão,
mantendo o atributo refletido sempre consistente com o modo exibido.
Tipo"date" | "datetime" | "time"
Valor padrão'datetime'

name

Atributoname
DescriçãoNome do campo para submissão em formulários nativos.
Tipostring
Valor padrão''

placeholder

Atributoplaceholder
DescriçãoDefine o placeholder exibido no campo de entrada do datetime picker.
Tipostring
Valor padrão''

rangeValue

Atributo---
DescriçãoIntervalo controlado quando selectionMode="range".
Tipo{ start: Date; end: Date; }
Valor padrão---

required

Atributorequired
DescriçãoIndica se o campo deve ter valor antes do envio do formulário.
Tipoboolean
Valor padrãofalse

selectionMode

Atributoselection-mode
DescriçãoDefine o tipo de seleção de datas para o calendário: única ou intervalo.

range só funciona em conjunto com mode="date".
Se selectionMode="range" for informado, o componente ajusta automaticamente
mode para date. Se mode mudar para time ou datetime, o componente
normaliza selectionMode para single quando necessário.
Tipo"range" | "single"
Valor padrão'single'

serializedValue

Atributoserialized-value
DescriçãoRepresentação serializada compatível com os formatos de controles HTML (YYYY-MM-DD, HH:mm
ou ISO local, conforme mode). Em intervalos, usa início/fim.

Quando informada, tem precedência sobre o valor legado value durante a inicialização.
Tipostring
Valor padrão---

validator

Atributo---
DescriçãoRegra síncrona ou assíncrona aplicada à data ou intervalo selecionado.
Tipo(value: Date | DatetimePickerDateRange) => string | Promise<string>
Valor padrão---

value

Atributo---
DescriçãoValor selecionado pelo usuário. Pode ser controlado externamente e é atualizado
pelo evento valueChange.
TipoDate
Valor padrãonull

valueAsDate

Atributo---
DescriçãoEspelho tipado da seleção atual, equivalente ao padrão valueAsDate dos controles HTML.
TipoDate
Valor padrão---

weekStartsOn

Atributoweek-starts-on
DescriçãoDefine o dia inicial da semana exibida no calendário.

Valores suportados: 0 (domingo) a 6 (sábado).
Tipo0 | 1 | 2 | 3 | 4 | 5 | 6
Valor padrão0

Eventos

EventoDescriçãoDepreciaçãoPropagação
brDatetimePickerValidationChangeEmitido ao iniciar e concluir a validação customizada.---true
dateStateChangeEvento público emitido quando a data de referência ou a seleção mudam.---true
valueChange Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.Evento emitido quando o valor selecionado muda.Use input/change e leia event.target.value.true

Métodos

checkValidity

DescriçãoPermite que consumidores acionem validação nativa do formulário via host.
AssinaturacheckValidity() => Promise<boolean>
Parâmetros---

clear

DescriçãoLimpa valor e intervalo selecionados.
Assinaturaclear() => Promise<void>
Parâmetros---

close

DescriçãoFecha o picker.
Assinaturaclose() => Promise<void>
Parâmetros---

focusInput

DescriçãoMove o foco para o input nativo interno.
AssinaturafocusInput() => Promise<void>
Parâmetros---

getRange

DescriçãoRetorna o intervalo de datas selecionado quando em modo selectionMode="range".
AssinaturagetRange() => Promise<{ start: Date | null; end: Date | null; } | null>
Parâmetros---

getValidationState

DescriçãoRetorna um snapshot serializável da Constraint Validation API.
AssinaturagetValidationState() => Promise<FormValidationState>
Parâmetros---

getValue

DescriçãoRetorna uma cópia do valor selecionado atualmente.
AssinaturagetValue() => Promise<Date | null>
Parâmetros---

isOpen

DescriçãoConsulta se o picker está atualmente aberto.
AssinaturaisOpen() => Promise<boolean>
Parâmetros---

open

DescriçãoAbre o picker quando o componente estiver habilitado.
Assinaturaopen() => Promise<void>
Parâmetros---

reportValidity

DescriçãoPermite exibir mensagens nativas de validação no host.
AssinaturareportValidity() => Promise<boolean>
Parâmetros---

resetToInitial

DescriçãoRestaura o estado inicial atualmente registrado para reset.
AssinaturaresetToInitial() => Promise<void>
Parâmetros---

setCustomValidity

DescriçãoDefine ou limpa uma mensagem de validade customizada.
AssinaturasetCustomValidity(message: string) => Promise<void>
Parâmetrosmessage:

setDisabledDates

DescriçãoDefine programaticamente as datas desabilitadas por meio de array.

Útil quando o componente é usado via HTML e o consumidor precisa enviar
uma lista tipada em runtime.
AssinaturasetDisabledDates(dates: DatetimePickerDisabledDate[] | null) => Promise<void>
Parâmetrosdates: - Lista de datas (Date|string) a bloquear.

setRange

DescriçãoDefine intervalo de datas de forma imperativa, forçando modo date e selectionMode range.
AssinaturasetRange(start: Date | string | null, end: Date | string | null) => Promise<void>
Parâmetrosstart:
end:

setValue

DescriçãoDefine o valor atual de forma imperativa aceitando Date, string serializada ou null.
AssinaturasetValue(value: Date | string | null) => Promise<void>
Parâmetrosvalue:

toggle

DescriçãoAlterna o estado de abertura do picker.
Assinaturatoggle() => Promise<void>
Parâmetros---

validate

DescriçãoExecuta o validator do picker e retorna se a seleção atual é válida.
Assinaturavalidate() => Promise<boolean>
Parâmetros---

CSS Shadow Parts

NomeDescrição
"container"Parte para o container base do seletor.
"feedback"Contêiner da mensagem de validação.
"input-container"Container base do campo de entrada interno.
"input-field"Campo textual interno.
"input-icon"Ícone de ação (calendário/relógio).
"panel"Parte para o painel em forma de card que engloba o seletor.

Dependências

Subcomponentes

Depende de

Gráfico

Validação

Para o contrato geral e a matriz de componentes, consulte o guia de formulários. Esta seção documenta o contrato específico do br-datetime-picker.

Use required, min e max para datas/horários escalares. Em intervalos, range-value deve conter início e fim completos, válidos e ordenados. input acompanha edição e change representa o commit.

Use setCustomValidity() para regras de agenda da aplicação e getValidationState() para integrar Constraint Validation com seu framework.

A mensagem é renderizada como br-message quando não existe feedback. Use o slot feedback para fornecer o conteúdo e manter a referência ARIA.

Para regras de domínio síncronas ou assíncronas, use validator. Ele recebe Date | null no modo simples ou { start, end } no modo de intervalo. A validação também pode ser acionada por await picker.validate() e emite brDatetimePickerValidationChange.

Acessibilidade

Forneça label visível ou aria-label descritivo e associe ajuda/erro por aria-describedby. O campo, o botão de abrir o calendário e os dias precisam ter nomes e estados determináveis.

O calendário deve ser operável por teclado: Tab para entrar, setas para navegar, Enter/Espaço para escolher e Escape para fechar, com retorno do foco ao acionador.

Eventos nativos

Elemento HTML de referência

br-datetime-picker referencia inputs de data/hora, mas combina campo textual, calendário e seletor de horário. O host é o controle público.

Como ouvir os eventos

const picker = document.querySelector('br-datetime-picker');
picker.addEventListener('change', () => console.log(picker.serializedValue));

Eventos nativos suportados

EventoQuando ocorreBubblesComposedCancelableHostObservações
changealteração válida é confirmadaSimSimNãoSimImediatamente depois de input.
inputedição/seleção válida altera o valorSimSimNãoSimApós sincronizar value.
teclado, click e focointeração com campo/pickersconforme o tipoSimconforme o tipoSimO navegador ajusta o alvo externo para o host.

Eventos não suportados ou ainda não caracterizados

O componente não promete todos os eventos específicos de <input type="date">, pois a interface é composta. Digitação, calendário, hora e intervalo ainda precisam de uma matriz única de ordem/duplicação nos três engines.

Eventos customizados

valueChange é alias depreciado. Eventos dateStateChange dos subcomponentes são protocolo interno e não substituem input/change no host.

Valor, frameworks e acessibilidade

Leia value, serializedValue, valueAsDate e, no modo intervalo, rangeValue. FormData e validade pertencem ao host. Wrappers usam eventos padrão. Foco e teclado dependem do modo e dos controles internos documentados.

Evidência de teste

src/shared/platform-contract.e2e.tsx cobre API comum, FormData e constraints em Chromium; _tests/datetime-picker.e2e.tsx cobre silêncio programático e emissão após interação. A matriz completa permanece pendente.