import { type EventEmitter } from '../../stencil-public-runtime'; import { type FormValidationState } from '../../shared/utils/form'; import type { InputValidationChangeDetail, InputValidator } from '../input/input.types'; /** * ## Design System * * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/textarea?tab=designer). * * @category Formulários * @status stable * @slot default - Slot para texto adicional ou instruções a serem exibidos junto ao textarea. * @slot feedback - Mensagem de validação, normalmente um `br-message`. * @slot validation-loading - Indicador exibido durante validação assíncrona. * * @part container - Contêiner visual principal. * @part label - Rótulo do textarea. * @part textarea - Elemento textarea nativo. * @part counter - Contêiner do contador. * @part counter-text - Texto do contador. * @part helper - Contêiner do conteúdo auxiliar do slot default. * @part feedback - Contêiner da mensagem de validação. */ export declare class Textarea { elementInternals: ElementInternals; formDisabledCallback(disabled: boolean): void; formResetCallback(): void; formStateRestoreCallback(state: string | File | FormData | null): void; el: HTMLBrTextareaElement; /** Comprimento atual derivado do valor do textarea. */ private get currentLength(); formDisabled: boolean; /** * Indica se o slot padrão possui conteúdo. */ hasDefaultSlot: boolean; hasFeedbackSlot: boolean; hasValidationLoadingSlot: boolean; isValidating: boolean; validatorMessage: string | null; /** * Valor exibido no textarea. * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa. */ value: string; /** * Texto exibido como rótulo do input. */ readonly label: string; /** * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário. */ readonly placeholder: string; /** * Texto alternativo para acessibilidade quando não há label visível. * Fornece um rótulo para tecnologias assistivas sem exibir visualmente. */ readonly ariaLabel: string; /** * Identificador único. * Caso não seja fornecido, um ID gerado automaticamente será usado. */ readonly customId: string; /** * Nome do campo para identificação no formulário. * Necessário para participação correta no envio de formulários e integração com frameworks. */ readonly name: string; /** * Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo. */ readonly disabled: boolean; /** * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado. */ readonly required: boolean; /** Impede edição sem remover o campo do envio do formulário. */ readonly readonly: boolean; /** Número mínimo de caracteres necessário para o valor ser válido. */ readonly minlength: number; /** * Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite. */ readonly maxlength: number; /** * Mostra o contador com a quantidade máxima de caracteres. */ readonly showCounter: boolean; /** * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'. */ readonly state: 'danger' | 'success' | 'warning'; /** Estado de feedback canônico. Quando informado, tem precedência sobre `state`. */ readonly feedbackState?: 'danger' | 'success' | 'warning'; /** * Regra síncrona ou assíncrona executada no `change` ou por `validate()`. * Pode consultar um serviço remoto; o componente controla apenas loading, * validade e a precedência do resultado mais recente. */ readonly validator?: InputValidator | string; /** * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'. */ readonly density: 'small' | 'medium' | 'large'; /** * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline). * @deprecated Use `inline`. */ readonly isInline: boolean; /** Exibe rótulo e controle em linha. Quando informada, tem precedência sobre `isInline`. */ readonly inline?: boolean; /** * Número de linhas visíveis no textarea. * Define a altura do componente em relação ao número de linhas de texto exibidas. */ readonly rows: number; /** * Número de colunas (caracteres) visíveis no textarea. * Define a largura do componente em relação ao número de caracteres por linha. */ readonly cols: number; valueChanged(): void; /** * Valor atualizado do textarea * @deprecated Use o evento nativo `input` e leia `event.target.value`. */ valueChange: EventEmitter; /** * Informa o início e o resultado do validator; o `detail` contém * `validating`, `valid` e `message`. */ brTextareaValidationChange: EventEmitter; componentWillLoad(): void; componentDidLoad(): void; /** * Retorna `true` se o valor do textarea for válido, caso contrário `false`. * Se o textarea for inválido, dispara um evento 'invalid'. */ checkValidity(): Promise; /** * Retorna `true` se o valor do textarea for válido, caso contrário `false`. * Se for inválido, exibe a mensagem de erro padrão do navegador. */ reportValidity(): Promise; /** * Define uma mensagem de validação customizada para o textarea. * Se a mensagem for uma string vazia, o erro customizado é limpo. */ setCustomValidity(message: string): Promise; /** Executa o validator customizado e retorna se o textarea está válido. */ validate(): Promise; /** Retorna um snapshot serializável da Constraint Validation API. */ getValidationState(): Promise; /** Seleciona todo o texto do controle nativo, conforme HTMLTextAreaElement.select(). */ select(): Promise; /** Substitui um intervalo de texto usando a API nativa do textarea. */ setRangeText(replacement: string, start?: number, end?: number, selectionMode?: SelectionMode): Promise; /** Define o intervalo selecionado no controle nativo. */ setSelectionRange(start: number, end: number, direction?: 'forward' | 'backward' | 'none'): Promise; /** * Define um novo valor para o textarea. * @param newValue - O novo valor a ser definido. */ setValue(newValue: string): Promise; /** * Referência nativa do textarea para acessar a API de validação */ private nativeTextarea?; private initialValue; private manualValidationMessage; private validationRunId; private syncProgrammaticValue; private syncFormState; private isDisabled; private updateValidity; private resolveValidator; private checkSlotContent; private readonly handleInput; private readonly handleChange; /** * Retorna os ids para o atributo aria-describedby do textarea */ private getDescribedBy; private renderFeedback; private renderValidationLoading; /** * Determina o texto a ser usado para acessibilidade quando não há label * Ordem de prioridade: * - aria-label do elemento host * - propriedade ariaLabel do componente * - placeholder * - texto padrão ("Campo de texto") */ private getAccessibilityLabel; private getCssClassMap; render(): any; }