import { ChangeDetectorRef, EventEmitter } from '@angular/core';
import { AbstractControl, ControlValueAccessor, Validator } from '@angular/forms';
import { PoRadioGroupOption } from './po-radio-group-option.interface';
import { PoHelperOptions } from '../../po-helper';
/**
* @description
*
* O componente `po-radio-group` deve ser utilizado para disponibilizar múltiplas opções ao usuário, permitindo a ele que
* selecione apenas uma delas. Seu uso é recomendado para um número pequeno de opções, caso contrário, recomenda-se o uso
* do [**po-combo**](/documentation/po-combo) ou [**po-select**](/documentation/po-select).
*
* Este não é um componente de multiseleção, se for este o caso, deve-se utilizar o
* [**po-checkbox-group**](/documentation/po-checkbox-group).
*
* > Ao passar um valor para o *model* que não esteja na lista de opções, o mesmo será definido como `undefined`.
*
* #### Acessibilidade tratada no componente interno `po-radio`:
*
* Algumas diretrizes de acessibilidade já são tratadas no componente, internamente, e não podem ser alteradas pelo proprietário do conteúdo. São elas:
*
* - O componente foi desenvolvido utilizando controles padrões HTML para permitir a identificação do mesmo na interface por tecnologias assistivas. [WCAG 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value)
* - A cor não deve ser o único meio para diferenciar o radio button normal do selecionado, por isso deve-se manter uma diferença visual entre os estados. [WGAG 1.4.1: Use of Color, 3.2.4: Consistent Identification](https://www.w3.org/WAI/WCAG21/Understanding/use-of-color)
* - Quando em foco, o componente é ativado usando as teclas de Espaço e Enter do teclado. [W3C WAI-ARIA 3.5 Button - Keyboard Interaction](https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-3)
* - A área do foco precisar ter uma espessura de pelo menos 2 pixels CSS e o foco não pode ficar escondido por outros elementos da tela. [(WCAG 2.4.12: Focus Appearance](https://www.w3.org/WAI/WCAG22/Understanding/focus-appearance-enhanced)
*
* Conforme documentação em: https://doc.animaliads.io/docs/components/radio
*
* #### Tokens customizáveis
*
* É possível alterar o estilo do componente usando os seguintes tokens (CSS):
* Obs: No componente Radio Group, a customização ocorre principalmente nos elementos `po-radio` que compõem o grupo de opções.
* Portanto, ao aplicar estilos customizados, é importante focar na customização dos elementos `po-radio` em vez do próprio `po-radio-group`.
*
* > 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** | | |
* | `--border-color` | Cor da borda | `var(--color-neutral-dark-70)` |
* | `--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** | | |
* | `--shadow-color-hover` | Cor da sombra no estado hover | `var(--color-brand-01-lighter)` |
* | `--color-hover` | Cor principal no estado hover | `var(--color-brand-01-dark)` |
* | **Focused** | | |
* | `--outline-color-focused` | Cor do outline do estado de focus | `var(--color-brand-01-darkest)` |
* | **checked** | | |
* | `--color-unchecked` | Cor quando não selecionado | `var(--color-neutral-light-00)` |
* | `--color-checked` | Cor quando selecionado | `var(--color-action-default)` |
* | **Disabled** | | |
* | `--color-unchecked-disabled` | Cor pricipal quando não selecionado no estado disabled | `var(--color-neutral-light-30)` |
* | `--color-checked-disabled` | Cor pricipal quando selecionado no estado disabled | `var(--color-neutral-dark-70)` |
*
*/
export declare abstract class PoRadioGroupBaseComponent implements ControlValueAccessor, Validator {
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
*
* Define que o popover (`p-helper` e/ou `p-error-limit`) será incluído 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 do tooltip 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;
/**
* @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;
/** Nome das opções. */
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;
/**
* @optional
*
* @description
*
* Exibe a mensagem setada se o campo estiver vazio e for requerido.
*
* > Necessário que a propriedade `p-required` esteja habilitada.
*
*/
fieldErrorMessage: 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
*
* 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;
/**
*
* @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 ao alterar valor do campo.
*/
change: 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;
displayAdditionalHelp: boolean;
mdColumns: number;
value: any;
protected readonly cd: ChangeDetectorRef;
protected onTouched: any;
private _columns;
private _disabled?;
private _options;
private _required?;
private _size?;
private _initialSize?;
private onChangePropagate;
private validatorChange;
/**
* @optional
*
* @description
*
* Define a quantidade de colunas para exibição das opções.
*
* **Considerações:**
* - É possível exibir as opções entre `1` e `4` colunas.
* - O número máximo de colunas é invariável nas seguintes resoluções:
* + `sm`: `1`
* + `md`: `2`
*
* @default `2`
*/
set columns(value: number);
get columns(): number;
/**
* @optional
*
* @description
*
* Indica que o campo será desabilitado.
*
* @default `false`
*/
set disabled(disabled: boolean);
get disabled(): boolean;
/**
* @optional
*
* @description
*
* Define que o campo será obrigatório.
*
* @default `false`
*/
set required(required: boolean);
get required(): boolean;
/**
* 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;
/**
* Lista de opções que serão exibidas.
* Nesta propriedade deve ser definido um array de objetos que implementam a interface PoRadioGroupOption.
*/
set options(value: Array);
get options(): Array;
/**
* @optional
*
* @description
*
* Define o tamanho dos radios do componente:
* - `small`: 16x16 (disponível apenas para acessibilidade AA).
* - `medium`: 24x24.
*
* > 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;
protected onThemeChange(): void;
changeValue(changedValue: any): void;
setDisabledState(isDisabled: boolean): void;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
registerOnValidatorChange(fn: any): void;
validate(abstractControl: AbstractControl): {
[key: string]: any;
};
writeValue(modelValue: any): void;
private checkColumnsRange;
private getGridSystemColumns;
private validateModel;
private applySizeBasedOnA11y;
abstract getElementByValue(value: any): any;
}