import { EventEmitter } from '../../stencil-public-runtime'; /** * Tipo que representa os modos disponíveis no componente datetime-picker. */ type DatetimePickerMode = 'date' | 'time' | 'datetime'; /** * Índice do dia da semana. * 0 representa domingo, 1 representa segunda-feira, e assim por diante até 6 que representa sábado. */ type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6; /** * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/datetime-picker?tab=designer). */ export declare class DatetimePicker { /** * Referência ao elemento host do componente. * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente. */ el: HTMLBrDatetimePickerElement; /** * Internals do elemento para manipulação de formulários. */ elementInternals: ElementInternals; /** * Define se a data atual deve ser selecionada automaticamente ao abrir o datetime-picker. * O padrão é false */ autoSelectToday: boolean; /** * Define se o datetime-picker está desabilitado. */ disabled: boolean; /** * Define o modo do datetime-picker. * Os valores possíveis são: * - "date": Permite selecionar apenas a data. * - "time": Permite selecionar apenas o horário. * - "datetime": Permite selecionar tanto a data quanto o horário. */ mode: DatetimePickerMode; /** * Define o nome do campo do datetime-picker. * Este nome será utilizado ao submeter o formulário que contém o datetime-picker. */ name: string; /** * Define o placeholder do campo de entrada do datetime-picker. */ placeholder: string; /** * Define o valor inicial do datetime-picker. * Pode ser uma instância de Date ou null. * Se não for fornecido, o valor padrão será null. */ value?: Date | null; /** * Define o dia da semana em que a semana começa. * Os valores possíveis são: * 0 - Domingo * 1 - Segunda-feira * 2 - Terça-feira * 3 - Quarta-feira * 4 - Quinta-feira * 5 - Sexta-feira * 6 - Sábado */ weekStartsOn: WeekDayIndex; /** * Data base atual para o calendário. */ currentBaseDate: Date; /** * Data selecionada no componente datetime-picker. */ currentSelectedDate: Date | null; /** * Valor do campo de entrada. */ private inputValue; /** * Indica se o calendário está aberto ou fechado. */ private isOpen; /** * Rascunho dos valores de tempo (hora e minuto) durante a edição. */ private timeDraft; /** * Evento disparado quando a data selecionada é alterada, tanto por interação do usuário quanto por métodos programáticos. * @returns Data selecionada ou null se nenhuma data estiver selecionada */ brDateTimeChange: EventEmitter; /** * Manipulador de mudanças na data selecionada. * @param newValue Nova data selecionada * @internal Used by Stencil's @Watch decorator */ private handleSelectedDateChange; /** * Manipulador de mudanças na propriedade `disabled`. * @param disabled Indica se o componente está desabilitado * @internal Used by Stencil's @Watch decorator */ handleDisabledChange(disabled: boolean): void; /** * Manipulador de mudanças no estado de abertura do calendário. * @param open Indica se o calendário está aberto * @internal Used by Stencil's @Watch decorator */ private handleOpenChange; /** * Manipulador de mudanças na propriedade `mode`. * @internal Used by Stencil's @Watch decorator */ handleModeChange(): void; /** * Manipulador de mudanças no valor da propriedade `value`. */ protected handleValueChange(newValue: Date | null): void; /** * Registro de mapeamentos de classes CSS para diferentes partes do componente. * Cada entrada no registro é uma função que retorna um objeto de mapeamento de classes CSS. */ private cssMapRegistry; /** * Array com os nomes dos meses do ano em português. */ private readonly MONTHS; /** * Array com os nomes dos dias da semana abreviados em português. */ private readonly WEEKDAYS; /** * Getter: baseDate * Retorna a data base para o calendário, que é a data atual. * @returns Data atual */ private get baseDate(); /** * Mapeamento de manipuladores de clique para cada dia. * Utiliza WeakMap para associar cada data a sua respectiva função de clique. */ private dayClickHandlers; /** * Mapeamento de manipuladores de mudança para os campos de tempo (hora e minuto). * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de mudança. */ private timeInputChangeHandlers; /** * Mapeamento de manipuladores de commit para os campos de tempo (hora e minuto). * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de commit. */ private timeInputCommitHandlers; /** * Mapeamento de manipuladores de keydown para os campos de tempo (hora e minuto). * Utiliza Map para associar cada campo de tempo ao seu respectivo manipulador de keydown. */ private timeInputKeydownHandlers; /** * Ciclo de vida do componente: Executado antes do componente ser carregado. */ componentWillLoad(): void; /** * Ciclo de vida do componente: Executado quando o componente é desconectado do DOM. */ disconnectedCallback(): void; /** * Fecha o dropdown do calendário. */ close(): Promise; /** * Retorna a data atualmente selecionada no datetime-picker. */ getValue(): Promise; /** * Abre o dropdown do calendário. */ open(): Promise; /** * Reseta o estado interno do componente para os valores iniciais. */ reset(): Promise; /** * Define a data selecionada no datetime-picker. * @param value Data a ser definida ou null para resetar o valor */ setValue(value: Date | null): Promise; /** * Alterna o estado do dropdown do calendário entre aberto e fechado. */ toggle(): Promise; /** * Manipulador de reset do formulário. */ formResetCallback(): void; /** * Manipulador de clique para um dia específico. * @param event Evento de clique * @param date Data do dia clicado */ private handleDayClick; /** * Manipulador de evento blur do campo de entrada. */ private handleInputBlur; /** * Manipulador de mudança do campo de entrada. * @param event Evento de mudança */ private handleInputChange; /** * Manipulador de evento keydown do campo de entrada. * @param event Evento de keydown */ private handleInputKeydown; /** * Manipulador de evento keydown global para fechar o calendário com a tecla Escape. */ private handkeKeydown; /** * Manipulador de mudança de mês. * @param event Evento de mudança */ private handleMonthChange; /** * Manipulador de clique para os botões de navegação do calendário. * @param event Evento de clique */ private handleNavigationClick; /** * Manipulador de clique fora do componente para fechar o dropdown. * @param event Evento de clique */ private handleOutsideClick; /** * Manipulador de mudança do campo de tempo (hora ou minuto). * @param event Evento de mudança * @param type Tipo de campo de tempo (hora ou minuto) */ private handleTimeInputChange; /** * Manipulador de commit do campo de tempo (hora ou minuto). * @param event Evento de commit * @param type Tipo de campo de tempo (hora ou minuto) */ private handleTimeInputCommit; /** * Manipulador de alternância do dropdown do calendário. * @param event Evento de clique */ private handleToggleDropdown; /** * Manipulador de mudança de ano. * @param event Evento de mudança */ private handleYearChange; /** * Atualiza o valor do input com base no valor atual selecionado. */ private commitInputValue; /** * Navega para a hora anterior no timer. */ private decreaseHour; /** * Navega para o minuto anterior no timer. */ private decreaseMinute; /** * Navega para o mês anterior no calendário. */ private decreaseMonth; /** * Retorna o valor do campo de entrada formatado. * @returns Valor formatado do campo de entrada */ private formatDateForInput; /** * Retorna o mapeamento de classes CSS para um determinado nome. * @param name Nome da parte do componente para a qual o mapeamento de classes será obtido * @param args Argumentos adicionais que podem ser necessários para a função de mapeamento de classes * @returns Objeto contendo o mapeamento de classes CSS */ private getCss; /** * Retorna o manipulador de clique para um dia específico. * Se o manipulador ainda não existir, ele é criado e armazenado no WeakMap. * @param date Data do dia para o qual o manipulador será obtido * @returns Função manipuladora de clique para o dia especificado */ private getDayClickHandler; /** * Retorna o dia do mês com zero à esquerda, se necessário. * @param date Data para a qual o dia do mês será obtido * @returns String representando o dia do mês com dois dígitos */ private getDayWithLeadingZero; /** * Retorna o ícone correspondente a uma ação de navegação. * @param action Ação de navegação para a qual o ícone será obtido * @returns Nome do ícone correspondente à ação de navegação */ private getIconForAction; /** * Resolve o placeholder do campo de entrada com base no modo atual. */ private getInputIcon; /** * Retorna as datas que serão exibidas na visualização do mês. * @returns */ private getMonthViewDates; /** * Retorna o rótulo do mês e ano para uma determinada data. * @param date Data para a qual o rótulo será obtido * @returns Rótulo do mês e ano no formato "MMMM yyyy" */ private getMonthYearLabel; /** * Retorna o rótulo aria para um botão de navegação específico. * @param action Ação de navegação para a qual o rótulo será obtido * @returns Rótulo aria correspondente à ação de navegação */ private getNavigationAriaLabel; /** * Retorna o rótulo aria para um campo de tempo específico. * @param type Tipo de campo de tempo (hora ou minuto) * @returns Rótulo aria correspondente ao campo de tempo */ private getTimeFieldAriaLabel; /** * Retorna a configuração do campo de tempo com base no tipo especificado. * @param type Tipo de campo de tempo (hora ou minuto) * @returns Objeto contendo o valor atual e as ações de navegação para o campo de tempo */ private getTimeFieldConfig; /** * Retorna o valor do campo de tempo formatado com dois dígitos. * @param type Tipo de campo de tempo (hora ou minuto) * @returns Valor formatado do campo de tempo */ private getTimeFieldValue; /** * Retorna o manipulador de commit para um campo de tempo específico. */ private getTimeInputChangeHandler; /** * Retorna o manipulador de commit para um campo de tempo específico. */ private getTimeInputCommitHandler; /** * Retorna o manipulador de keydown para um campo de tempo específico. */ private getTimeInputKeydownHandler; /** * Retorna os rótulos dos dias da semana, ajustados conforme o dia de início da semana. * @returns */ private getWeekdayLabels; /** * Navega para a próxima hora no timer. */ private increaseHour; /** * Navega para o próximo minuto no timer. */ private increaseMinute; /** * Navega para o próximo mês no calendário. */ private increaseMonth; /** * Inicializa o estado interno do componente com base no valor da propriedade `value`. * Se `value` estiver definido, usa esse valor. * Caso contrário, se `autoSelectToday` for verdadeiro, seleciona a data/hora atual. * Caso contrário, inicializa com estado vazio. */ private initializeFromValue; /** * Analisa o valor de entrada de data e retorna um objeto Date ou null se inválido. * @param value Valor de entrada a ser analisado * @param base Data base para análise * @returns Objeto Date válido ou null se inválido */ private parseDateInput; /** * Analisa o valor de entrada de data e hora e retorna um objeto Date ou null se inválido. * @param value Valor de entrada a ser analisado * @param base Data base para análise * @returns Objeto Date válido ou null se inválido */ private parseDateTimeInput; /** * Analisa o valor de entrada e retorna um objeto Date ou null se inválido. * @param value Valor de entrada a ser analisado * @returns Objeto Date válido ou null se inválido */ private parseInputValue; /** * Analisa o valor de entrada de tempo e retorna um objeto Date ou null se inválido. * @param value Valor de entrada a ser analisado * @param base Data base para análise * @returns Objeto Date válido ou null se inválido */ private parseTimeInput; /** * Reseta o estado interno do componente para os valores iniciais. */ private resetInternal; /** * Resolve o placeholder padrão com base no modo atual, se nenhum placeholder personalizado for fornecido. */ private resolvePlaceholderFromMode; /** * Renderiza um dia específico (uma célula no calendário). * @param date Data do dia a ser renderizado * @returns Elemento JSX representando o dia */ private renderDayCell; /** * Renderiza o calendário completo (dias da semana e grade de dias do mês). * @returns Elemento JSX representando o calendário */ private renderCalendar; /** * Renderiza o barra de navegação do cabeçalho. * @returns Elemento JSX representando a barra de navegação do cabeçalho. */ private renderCalendarHeader; /** * Renderiza um divisor visual entre o calendário e o time picker. * @returns Elemento JSX representando o divisor */ private renderDivider; private renderInputField; /** * Renderiza a grade de dias do mês. * @returns Elemento JSX representando os dias do mês */ private renderMonthGrid; /** * Renderiza uma opção de mês para seleção. * @param month Nome do mês * @param index Índice do mês (0-11) * @returns Elemento JSX representando a opção de mês */ private renderMonthOption; /** * Renderiza a seleção de mês no cabeçalho do calendário. * @returns Elemento JSX representando a seleção de mês */ private renderMonthSelection; /** * Renderiza um botão de navegação no cabeçalho. * @param action Ação de navegação associada ao botão * @returns Elemento JSX representando o botão de navegação */ private renderNavigationButton; /** * Renderiza a seção de time picker (hora e minuto). * @returns Elemento JSX representando a seção de time picker */ private renderTimePicker; /** * Renderiza um campo de tempo (hora ou minuto). * @param type Tipo de campo de tempo (hora ou minuto) * @returns Elemento JSX representando o campo de tempo */ private renderTimeField; /** * Renderiza os rótulos dos dias da semana. * @returns Elemento JSX representando os rótulos dos dias da semana */ private renderWeekdays; private renderYearSelection; /** * Renderiza o componente datetime-picker * @returns Elemento JSX representando o componente */ render(): any; } export {};