import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core'; import { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms'; import { PoMask } from '../po-input/po-mask'; import { Observable } from 'rxjs'; import { PoLanguageService } from '../../../services/po-language/po-language.service'; import { PoDatepickerIsoFormat } from './enums/po-datepicker-iso-format.enum'; import { PoHelperOptions } from '../../po-helper'; /** * @description * * O `po-datepicker` é um componente específico para manipulação de datas permitindo a digitação e / ou seleção. * * O formato de exibição da data, ou seja, o formato que é apresentado ao usuário é o dd/mm/yyyy, * mas podem ser definidos outros padrões (veja mais na propriedade `p-format`). * * O idioma padrão do calendário será exibido de acordo com o navegador, caso tenha necessidade de alterar * use a propriedade `p-locale`. * * O datepicker aceita três formatos de data: o E8601DZw (yyyy-mm-ddThh:mm:ss+|-hh:mm), o E8601DAw (yyyy-mm-dd) e o * Date padrão do Javascript. * * > Por padrão, o formato de saída do *model* se ajustará conforme o formato de entrada. Se por acaso precisar controlar o valor de saída, * a propriedade `p-iso-format` provê esse controle independentemente do formato de entrada. Veja abaixo os formatos disponíveis: * * - Formato de entrada e saída (E8601DZw) - `'2017-11-28T00:00:00-02:00'`; * * - Formato de entrada e saída (E8601DAw) - `'2017-11-28'`; * * - Formato de entrada (Date) - `new Date(2017, 10, 28)` e saída (E8601DAw) - `'2017-11-28'`; * * **Importante:** * * - Para utilizar datas com ano inferior a 100, verificar o comportamento do [`new Date`](https://www.w3schools.com/js/js_dates.asp) * e utilizar o método [`setFullYear`](https://www.w3schools.com/jsref/jsref_setfullyear.asp). * - Caso a data esteja inválida, o `model` receberá **'Data inválida'**. * - Caso o `input` esteja passando um `[(ngModel)]`, mas não tenha um `name`, então irá ocorrer um erro * do próprio Angular (`[ngModelOptions]="{standalone: true}"`). * * Exemplo: * * ``` * * ``` * * > Não esqueça de importar o `FormsModule` em seu módulo, tal como para utilizar o `input default`. * * #### Tokens customizáveis * * É possível alterar o estilo do componente usando os seguintes tokens (CSS):
* Obs: Só é possível realizar alterações ao adicionar a classe `.po-input` * * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization). * * | Propriedade | Descrição | Valor Padrão | * |----------------------------------------|-------------------------------------------------------|--------------------------------------------------| * | **Default Values** | | | * | `--font-family` | Família tipográfica usada | `var(--font-family-theme)` | * | `--font-size` | Tamanho da fonte | `var(--font-size-default)` | * | `--text-color-placeholder`   | Cor principal do texto do placeholder | `var(--color-neutral-light-30)` | * | `--color` | Cor principal do datepicker | `var(--color-neutral-dark-70)` | * | `--background` | Cor de background | `var(--color-neutral-light-05)` | * | `--padding` | Preenchimento | `0 0.5rem` | * | `--text-color` | Cor do texto | `var(--color-neutral-dark-90)` | * | `--field-container-title-justify` | Alinhamento horizontal do título (`justify-content`) | `space-between` | * | `--field-container-title-flex` | Flex do título (`flex`) | `1 auto` | * | **Hover** | | | * | `--color-hover` | Cor principal no estado hover | `var(--color-brand-01-dark)` | * | `--background-hover` | Cor de background no estado hover | `var(--color-brand-01-lightest)` | * | **Focused** | | | * | `--color-focused` | Cor principal no estado de focus | `var(--color-action-default)` | * | `--outline-color-focused` | Cor do outline do estado de focus | `var(--color-action-focus)` | * | **Disabled** | | | * | `--color-disabled` | Cor principal no estado disabled | `var(--color-neutral-light-30)` | * | `--background-disabled` | Cor de background no estado disabled   | `var(--color-neutral-light-20)` | * | `--text-color-disabled` | Cor do texto no estado disabled | `var(--color-neutral-dark-70)` | * */ export declare abstract class PoDatepickerBaseComponent implements ControlValueAccessor, OnInit, OnDestroy, Validator { protected languageService: PoLanguageService; protected cd: ChangeDetectorRef; additionalHelpEventTrigger: string | undefined; /** * * @deprecated v23.x.x use `p-helper` * * @optional * * @description * Exibe um ícone de ajuda adicional, com o texto desta propriedade sendo passado para o popover do componente `po-helper`. * **Como boa prática, indica-se utilizar um texto com até 140 caracteres.** * > Requer um recuo mínimo de 8px se o componente estiver próximo à lateral da tela. * * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade. * */ additionalHelpTooltip?: string; /** * @optional * * @description * * Aplica foco no elemento ao ser iniciado. * * > Caso mais de um elemento seja configurado com essa propriedade, apenas o último elemento declarado com ela terá o foco. * * @default `false` */ autoFocus: boolean; /** * @optional * * @description * Define se o título do campo será exibido de forma compacta. * * Quando habilitado (`true`), o modo compacto afeta o conjunto composto por: * - `po-label` * - `p-requirement (showRequired)` * - `po-helper` * * Ou seja, todos os elementos relacionados ao título do campo * (rótulo, indicador de obrigatoriedade e componente auxiliar) passam * a seguir o comportamento de layout compacto. * * Também é possível definir esse comportamento de forma global, * uma única vez, na folha de estilo geral da aplicação, por meio * da customização dos tokens CSS: * * - `--field-container-title-justify` * - `--field-container-title-flex` * * Exemplo: * * ``` * :root { * --field-container-title-justify: flex-start; * --field-container-title-flex: 0 1 auto; * } * ``` * * Dessa forma, o layout compacto passa a ser o padrão da aplicação, * sem a necessidade de definir a propriedade individualmente em cada campo. * * @default `false` */ compactLabel: import("@angular/core").InputSignalWithTransform; /** * @optional * * @description * * Função executada para realizar a validação assíncrona personalizada. * Executada ao disparar o output `change`. * * @param value Valor atual preenchido no campo. * * @returns Retorna Observable com o valor `true` para sinalizar o erro `false` para indicar que não há erro. */ errorAsync: (value: any) => Observable; name: string; /** * @optional * * @description * * Define se a indicação de campo opcional será exibida. * * > Não será exibida a indicação se: * - O campo conter `p-required`; * - Não possuir `p-help` e/ou `p-label`. * * @default `false` */ optional: boolean; /** * Mensagem apresentada quando a data for inválida ou fora do período. * * > Por padrão, esta mensagem não é apresentada quando o campo estiver vazio, mesmo que ele seja requerido. * Para exibir a mensagem com o campo vazio, utilize a propriedade `p-required-field-error-message` em conjunto. */ errorPattern?: string; /** * @optional * * @description * * Limita a exibição da mensagem de erro a duas linhas e exibe um tooltip com o texto completo. * * > Caso essa propriedade seja definida como `true`, a mensagem de erro será limitada a duas linhas * e um tooltip será exibido ao passar o mouse sobre a mensagem para mostrar o conteúdo completo. * * @default `false` */ errorLimit: boolean; /** * @optional * * @description * * Exibe a mensagem setada na propriedade `p-error-pattern` se o campo estiver vazio e for requerido. * * > Necessário que a propriedade `p-required` esteja habilitada. * * @default `false` */ showErrorMessageRequired: boolean; /** * @deprecated v23.x.x use `p-helper` * * @optional * * @description * Evento disparado ao clicar no ícone de ajuda adicional. * * > Essa propriedade está **depreciada** e será removida na versão `23.x.x`. Recomendamos utilizar a propriedade `p-helper` que oferece mais recursos e flexibilidade. */ additionalHelp: EventEmitter; /** * @optional * * @description * * Evento disparado ao sair do campo. */ onblur: EventEmitter; /** * @optional * * @description * * Evento disparado ao alterar valor do campo. */ onchange: EventEmitter; /** * @optional * * @description * Evento disparado quando uma tecla é pressionada enquanto o foco está no componente. * Retorna um objeto `KeyboardEvent` com informações sobre a tecla. */ keydown: EventEmitter; /** * @optional * * @description * * Define as opções do componente de ajuda (po-helper) que será exibido ao lado do label quando a propriedade `p-label` for definida, ou, ao lado do componente na ausência da propriedade `p-label`. * > Para mais informações acesse: https://po-ui.io/documentation/po-helper. * * > Ao configurar esta propriedade, o antigo ícone de ajuda adicional (`p-additional-help-tooltip` e `p-additional-help`) será ignorado. */ poHelperComponent: import("@angular/core").InputSignal; /** * @optional * * @description * * Habilita a quebra automática do texto da propriedade `p-label`. Quando `p-label-text-wrap` for verdadeiro, o texto que excede * o espaço disponível é transferido para a próxima linha em pontos apropriados para uma * leitura clara. * * @default `false` */ labelTextWrap: import("@angular/core").InputSignal; offset: number; protected firstStart: boolean; protected hour: string; protected isExtendedISO: boolean; protected objMask: any; protected onChangeModel: any; protected validatorChange: any; protected onTouchedModel: any; protected shortLanguage: string; protected isInvalid: boolean; protected hasValidatorRequired: boolean; private _format?; private _isoFormat; private _maxDate; private _minDate; private _noAutocomplete?; private _placeholder?; private _loading?; private previousValue; private _size?; private _initialSize?; private subscription; private _date; /** * @optional * * @description * * Define a propriedade nativa `autocomplete` do campo como `off`. * * @default `false` */ set noAutocomplete(value: boolean); get noAutocomplete(): boolean; /** * @optional * * @description * * Mensagem que aparecerá enquanto o campo não estiver preenchido. */ set placeholder(placeholder: string); get placeholder(): string; /** Desabilita o campo. */ disabled?: boolean; set setDisabled(disabled: string); /** Torna o elemento somente leitura. */ readonly?: boolean; set setReadonly(readonly: string); /** * @optional * * @description * * Define que o campo será obrigatório. * * @default `false` */ required?: boolean; set setRequired(required: string); /** * Define se a indicação de campo obrigatório será exibida. * * > Não será exibida a indicação se: * - Não possuir `p-help` e/ou `p-label`. */ showRequired: boolean; /** * @optional * * @description * * Define o tamanho do componente: * - `small`: altura do input como 32px (disponível apenas para acessibilidade AA). * - `medium`: altura do input como 44px. * * > Caso a acessibilidade AA não esteja configurada, o tamanho `medium` será mantido. * Para mais detalhes, consulte a documentação do [po-theme](https://po-ui.io/documentation/po-theme). * * @default `medium` */ set size(value: string); get size(): string; /** Habilita ação para limpar o campo. */ clean?: boolean; set setClean(clean: string); /** * @optional * * @description * * Define uma data mínima para o `po-datepicker`. */ set minDate(value: string | Date); get minDate(): string | Date; /** * @optional * * @description * * Define uma data máxima para o `po-datepicker`. */ set maxDate(value: string | Date); get maxDate(): string | Date; /** * @optional * * @description * * Formato de exibição da data. * * Valores válidos: * - `dd/mm/yyyy` * - `mm/dd/yyyy` * - `yyyy/mm/dd` * * @default `dd/mm/yyyy` */ set format(value: string); get format(): string; /** * @optional * * @description * * Padrão de formatação para saída do *model*, independentemente do formato de entrada. * * > Veja os valores válidos no *enum* `PoDatepickerIsoFormat`. */ set isoFormat(value: PoDatepickerIsoFormat); get isoFormat(): PoDatepickerIsoFormat; /** * @optional * * @description * * Idioma do Datepicker. * * > O locale padrão sera recuperado com base no [`PoI18nService`](/documentation/po-i18n) ou *browser*. */ _locale?: string; set locale(value: string); get locale(): string; /** * @optional * * @description * Exibe um ícone de carregamento no lado direito do campo para sinalizar que uma operação está em andamento. * * @default `false` */ set loading(value: boolean); get loading(): boolean; get isDisabled(): boolean; /** * @optional * * @description * * Define que o `calendar` e/ou tooltip (`p-additional-help-tooltip` e/ou `p-error-limit`) serão incluídos no body da * página e não dentro do componente. Essa opção pode ser necessária em cenários com containers que possuem scroll ou * overflow escondido, garantindo o posicionamento correto de ambos próximo ao elemento. * * > Quando utilizado com `p-helper`, leitores de tela como o NVDA podem não ler o conteúdo do popover. * * @default `false` */ appendBox: boolean; constructor(languageService: PoLanguageService, cd: ChangeDetectorRef); set date(value: any); get date(): any; ngOnInit(): void; ngOnDestroy(): void; protected onThemeChange(): void; getDateFromString(dateString: string): Date; formatToDate(value: Date): string; controlModel(date: Date): void; callOnChange(value: any, retry?: boolean): void; mapSizeToIcon(size: string): string; setDisabledState(isDisabled: boolean): void; registerOnChange(func: any): void; registerOnTouched(func: any): void; registerOnValidatorChange(fn: () => void): void; validate(c: AbstractControl): { [key: string]: any; }; protected validateModel(model: any): void; protected buildMask(format?: string): PoMask; formatTimezoneAndHour(offset: number): void; private applySizeBasedOnA11y; abstract writeValue(value: any): void; abstract refreshValue(value: Date): void; }