import { EventEmitter } from '../../stencil-public-runtime'; interface SelectOptionItem { label: string; value: string; selected?: boolean; sourceElement?: BrSelectOptionElement; } interface BrSelectOptionElement extends HTMLElement { label?: string; value?: string; selected?: boolean; } /** * ## 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/select?tab=designer). */ export declare class Select { /** * Referência ao elemento host do componente. * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente. */ el: HTMLBrSelectElement; elementInternals: ElementInternals; private slotElement?; private isSyncingOptionElements; /** * Rótulo que indica o tipo de informação que deve ser selecionada. */ label: string; /** * Texto auxiliar exibido antes de uma seleção. */ placeholder: string; /** * Habilita o modo múltiplo para selecionar várias opções. */ isMultiple: boolean; /** * Controla se o dropdown permanece aberto após selecionar opções. * Quando `true`, permite seleção sequencial sem reabrir a lista. */ keepOpenOnSelect: boolean; /** * Define as opções disponíveis no componente de seleção. * Se uma string for fornecida, ela será convertida internamente para um array via `JSON.parse`. Caso o formato seja inválido, um erro será registrado e as opções serão definidas como um array vazio. * Exemplo de uso: * ```typescript * options='[{"label": "Sim", "value": "1"}, {"label": "Não", "value": "0"}]' * // ou * options=[{ label: "Sim", value: "1" }, { label: "Não", value: "0" }] * ``` */ options: string | { label: string; value: string; selected?: boolean; }[]; /** * Rótulo para selecionar todas as opções. */ selectAllLabel: string; /** * Rótulo para desmarcar todas as opções. */ unselectAllLabel: string; /** * Exibe o ícone de busca no campo de entrada. */ showSearchIcon: boolean; /** * Indica se a listagem de itens do select está expandida */ isOpen: boolean; /** * Exibe o rótulo e o controle em linha (ao lado), ao invés de empilhados. * Útil para casos contextuais como paginação. */ isInline: boolean; /** * Largura do campo de entrada interno (por exemplo, '88px'). * Quando definido, sobrescreve a largura padrão de 100% do input. */ inputWidth?: string; /** * Desabilita a interação com o componente `br-select`. * Quando `true`, o input e as opções ficam desabilitados e não respondem a cliques ou teclas. */ disabled: boolean; /** * Propaga para o input interno a remoção da borda quando desfocado. */ borderless: boolean; /** * Identificador único. * Caso não seja fornecido, um ID gerado automaticamente será usado. */ readonly customId: string; parsedOptions: SelectOptionItem[]; filteredOptions: SelectOptionItem[]; inputValue: string; searchTerm: string; /** Valor selecionado (string para single, string[] para multiple) */ value?: string | string[]; selectedValue?: string | string[]; isAllSelected: boolean; isIndeterminate: boolean; isExpanded: boolean; focusedIndex: number; optionElements: BrSelectOptionElement[]; /** * Evento emitido sempre que houver atualização nos itens selecionados. * RENOMEADO PARA valueChange para compatibilidade com ngModel. */ valueChange: EventEmitter; /** Emite os dados da opção quando ela recebe foco/hover (antes da seleção). */ optionHover: EventEmitter<{ label: string; value: string; }>; /** Dispara quando o dropdown é aberto. */ opened: EventEmitter; /** Dispara quando o dropdown é fechado. */ closed: EventEmitter; synchronizeSelect(): void; syncValueFromOutside(newVal: string | string[]): void; handleSelectOptionPropsChange(): void; componentWillLoad(): void; handleExpandedChange(isExpanded: boolean): void; componentDidLoad(): void; disconnectedCallback(): void; private registerOptionItems; private getOptionElements; private getSourceOptions; private getOptionsFromProp; private getOptionElementLabel; private updateSelectedValueFromParsedOptions; private syncOptionElementsFromParsedOptions; /** * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente. * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória. * Se a lista estiver aberta (`this.isExpanded`) e o clique ocorrer fora (`!this.el.contains(target)`), ela é fechada. * A reatividade do StencilJS garante a atualização automática da interface. * A arrow function (`=>`) mantém o contexto correto de `this` ao ser usada como callback. * * @param {MouseEvent} event O evento de clique. * @returns {void} */ private readonly handleClickOutside; private handleKeydownOnInput; private handleKeydownOnList; private handleKeydownOnItem; private handleSelectAllKeyDown; private resetFocus; private focusItemInDirection; private focusItem; private emitHoverFromOption; private openSelect; private closeSelect; private handleSelectionByValue; private updateSelectedOptions; private normalizeText; private getFilteredOptions; private getStringValue; private emitSelectedOptions; private updateSelectedAllState; private toggleSelectAll; isFocused: boolean; private renderInput; private renderSelectAllCheckbox; private renderOptions; /** * Determina um id para o radio. */ private getComputedId; /** * Inverte o valor da prop `isOpen` */ toggleOpen(): Promise; /** * Limpa todas as opções selecionadas. */ clear(): Promise; /** * Retorna o valor selecionado. * @returns {Promise} O valor atual. */ getValue(): Promise; /** * Define o valor do componente. * @param {string | string[]} newValue O novo valor a ser definido. */ setValue(newValue: string | string[]): Promise; private getCssClassMap; private handleSearchInput; private handleSearchFocus; private handleSearchBlur; render(): any; } export {};