import { type EventEmitter } from '../../stencil-public-runtime'; import { type FormValidationState } from '../../shared/utils/form'; import { type FormValidationChangeDetail } from '../../shared/utils/validator'; import type { RadioGroupOrientation, RadioGroupValidator } from './radio-group.types'; /** * O `br-radio-group` agrupa opções de múltipla escolha onde apenas uma pode ser selecionada. * * Adicione os elementos `br-radio` no slot padrão. Defina o rótulo do grupo em `label` e o valor selecionado em `value`. * * ```html * * * * * * ``` * * Em formulários HTML, o grupo integra-se via `ElementInternals`, controlando validação nativa com `required`. * * ### Quando usar * * - Entre 2 e 5 opções mutuamente exclusivas que devem permanecer visíveis. * * ### Quando evitar * * - Mais de 6 opções: use `br-select` para economizar espaço de tela. * - Seleção de múltiplas opções ao mesmo tempo: use `br-checkbox-group`. * - Liga/desliga imediato: use `br-switch`. * * Consulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/radio-group?tab=designer). * * @category Formulários, Seleção * @see br-radio * @slot default - Radios pertencentes ao grupo. * @slot label - Legenda do grupo, como alternativa à propriedade `label`. * @slot description - Texto auxiliar do grupo. * @slot feedback - Mensagem de validação do grupo. * @slot validation-loading - Indicador exibido durante validação assíncrona. * @part group - Fieldset semântico do grupo. * @part legend - Legenda e nome acessível do grupo. * @part options - Contêiner das opções. * @part description - Área de texto auxiliar. * @part feedback - Área de mensagem de validação. * @part validation-loading - Área do indicador de validação assíncrona. */ export declare class RadioGroup { elementInternals: ElementInternals; el: HTMLElement; formDisabled: boolean; customValidationMessage: string; validatorMessage: string | null; isValidating: boolean; hasFeedbackSlot: boolean; hasInteracted: boolean; hasDescriptionSlot: boolean; hasLabelSlot: boolean; hasValidationLoadingSlot: boolean; /** Nome do campo enviado pelo formulário. */ readonly name: string; /** Valor atualmente selecionado; `null` representa nenhuma seleção. */ value: string | null; /** Valor restaurado por `form.reset()` e usado como seleção inicial. */ readonly defaultValue?: string; /** Exige uma opção habilitada selecionada. */ readonly required: boolean; /** Desabilita o grupo e seus radios. */ readonly disabled: boolean; /** Orientação visual das opções. Valores inválidos usam `vertical`. */ readonly orientation: RadioGroupOrientation; /** Texto visível usado como legenda do grupo. */ readonly label?: string; /** Nome acessível usado quando não há uma legenda visível. */ readonly ariaLabel: string | null; /** Estado visual opcional do feedback. Valores inválidos não aplicam estado. A validade real vem de ElementInternals. */ readonly feedbackState?: 'valid' | 'invalid'; /** * Regra síncrona ou assíncrona aplicada ao valor do grupo. * Recebe a string selecionada ou `null` quando nenhuma opção está marcada. * * @example * ```js * const group = document.querySelector('br-radio-group'); * group.validator = (value) => value ? null : 'Escolha uma alternativa'; * ``` */ readonly validator?: RadioGroupValidator; /** Identificador usado nas relações acessíveis internas. */ readonly customId: string; /** Emitido ao iniciar e concluir uma validação customizada. */ brRadioGroupValidationChange: EventEmitter; private initialValue; private validationRunId; private syncingChildren; private checkingValidity; private ready; private originalNames; private readonly reconciler; formDisabledCallback(disabled: boolean): void; formResetCallback(): void; formStateRestoreCallback(state: string | File | FormData | null): void; componentWillLoad(): void; componentDidLoad(): void; connectedCallback(): void; disconnectedCallback(): void; handleValueChange(): void; handleNameChange(): void; handleDisabledChange(disabled: boolean): void; handleValidatorChange(): void; handleDefaultValueChange(value?: string): void; handleRequiredChange(): void; handleCustomValidityChange(): void; handleChildInput(event: globalThis.Event): void; handleChildChange(event: globalThis.Event): void; handleFocusOut(event: FocusEvent): void; handleInvalid(): void; handleChildChecked(event: globalThis.Event): void; handleChildStateChange(event: CustomEvent<{ property?: string; }>): void; handleKeyDown(event: KeyboardEvent): void; /** Verifica a validade do grupo. */ checkValidity(): Promise; /** Verifica a validade e apresenta a mensagem do grupo. */ reportValidity(): Promise; /** Define a mensagem de validade customizada do grupo. */ setCustomValidity(message: string): Promise; /** Executa o validator do grupo. */ validate(): Promise; /** Retorna o snapshot de validade do grupo. */ getValidationState(): Promise; /** Move o foco para o radio marcado ou para o primeiro radio habilitado. */ setFocus(): Promise; private readonly handleSlotChange; private getChildren; private getRadioValue; private isDisabled; private isWithinGroup; private markAsInteracted; private clearInteraction; private handleChildFormEvent; private syncManagedState; private manageRadio; private releaseRadio; private syncNamedSlots; private applyValueToChildren; private reconcileChildren; private getValidityMessage; private getNativeValidityMessage; private cancelValidation; private getCssClassMap; private get effectiveOrientation(); private get effectiveState(); private syncFormState; private renderDefaultFeedback; render(): any; }