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.
Define 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.
Define 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.
Define 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.
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 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.
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.
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.