import { EventEmitter } from '../../stencil-public-runtime'; /** * ## 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/dropdown?tab=designer). * * @slot trigger - Slot para o elemento que aciona a abertura do dropdown. * @slot target - Slot para o conteúdo exibido pelo dropdown. */ export declare class Dropdown { /** * Referência ao elemento host do componente. * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente. */ el: HTMLBrDropdownElement; elementInternals: ElementInternals; /** * Indica se o dropdown está aberto ou fechado. * Esta propriedade é refletida no DOM e pode ser alterada externamente. * O valor padrão é falso (fechado). */ isOpen: boolean; /** * Identificador único. * Caso não seja fornecido, um ID gerado automaticamente será usado. */ readonly customId: string; /** * Define o posicionamento do target (alvo) em relação ao trigger (acionador). */ placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left' | 'right' | 'bottom' | 'top'; /** * Define se o dropdown deve permanecer aberto quando outro dropdown é aberto. * Quando definido como false (padrão), o dropdown será fechado automaticamente quando outro dropdown for aberto. * Quando definido como true, o dropdown permanecerá aberto mesmo quando outro dropdown for aberto. */ preventAutoDismiss: boolean; /** * Define o z-index do elemento target (alvo) do dropdown. * Permite customizar a ordem de sobreposição do painel dropdown em relação aos demais elementos da página. * O valor padrão utiliza a variável CSS do design system: var(--z-index-layer-1). */ targetZIndex: string; private triggerElement; private targetElement; private dropdownItems; private dropdownLinks; private focusableElement; private floatingManager; private clickHandler; private triggerKeydownHandler; private targetKeydownHandler; private dropdownOpenHandler; /** * Evento emitido quando o estado do dropdown muda. */ brDropdownChange: EventEmitter<{ isOpen: boolean; }>; /** * Evento emitido quando o dropdown é aberto. * Este evento é usado para implementar o auto-dismiss de outros dropdowns. */ brDidOpen: EventEmitter<{ id: string; }>; /** * Método chamado sempre que a propriedade `isOpen` muda. * Emite um evento com o novo estado do dropdown. */ isOpenChanged(newValue: boolean): void; /** * Aplica o novo valor de z-index ao elemento target. */ targetZIndexChanged(): void; connectedCallback(): void; disconnectedCallback(): void; /** * Método que lida com o evento brDidOpen de outros dropdowns * Fecha este dropdown se não for o emissor do evento e preventAutoDismiss=false */ private onDropdownDidOpen; private clearDropdownItemListeners; componentDidLoad(): void; /** * Posiciona o dropdown usando Floating UI */ private positionDropdown; /** * Limpa o posicionamento do Floating UI */ private cleanupPositioning; /** * Atualiza o z-index do target conforme a propriedade targetZIndex */ private updateTargetZIndex; /** * Configura os comportamentos de interação do dropdown */ private setBehavior; /** * Lida com o comportamento no trigger */ private handleTriggerBehavior; /** * Inicializa os itens do dropdown com comportamentos de navegação com teclado, * separando claramente entre elementos navegáveis por Tab e elementos navegáveis por setas */ private initializeDropdownItems; /** * Handler específico para links */ private handleLinkKeydown; /** * Handler para eventos de keydown nos itens não-link * Implementa navegação completa por setas, Tab não navega entre estes itens */ private handleItemKeydown; private getCssClassMap; /** * Alterna o estado do dropdown entre aberto e fechado. */ private readonly toggle; /** * Método que lida com cliques fora do dropdown. * * @param {MouseEvent} event - O evento de clique que ocorreu. */ private onClickOutside; /** * Abre o dropdown. * Define a propriedade `isOpen` como verdadeira e retorna o novo estado. * Este método pode ser chamado externamente. */ open(): Promise<{ isOpen: boolean; }>; /** * Esconde o dropdown. * Define a propriedade `isOpen` como falsa e retorna o novo estado. * Este método pode ser chamado externamente. */ hide(): Promise<{ isOpen: boolean; }>; /** * Foca em um elemento específico com suporte a componentes personalizados * @param targetElement Elemento a receber o foco */ private focusOnElement; /** * Foca no elemento interativo dentro do slot trigger * Esta função procura pelo elemento dentro do slot trigger e aplica o foco nele */ private focusOnTriggerElement; /** * Auxiliar para focar no elemento trigger */ private focusTrigger; /** * Define o foco no elemento interno do componente. * Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto. */ setFocus(): Promise; render(): any; }