import { type EventEmitter } from '../../stencil-public-runtime'; import type { DropdownArrowPosition, DropdownOpenChangeDetail, DropdownPlacement } from './dropdown.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/dropdown?tab=designer). * * @category Ações * @status stable * @slot trigger - Slot para o elemento que aciona a abertura do dropdown. * @slot target - Slot para o conteúdo exibido pelo dropdown. * * @part trigger - Área do acionador do dropdown. * @part target - Área de conteúdo exibida pelo dropdown. * @part trigger-arrow - Indicador visual opcional do acionador do 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; /** * Identificador único do componente. * Quando omitido, um valor é gerado automaticamente. * * > **Padrão:** valor único gerado por generateUniqueId(). * * > **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `customId`. */ customId: string; /** * 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; /** * Define o posicionamento do target (alvo) em relação ao trigger (acionador). */ placement: DropdownPlacement; /** * Exibe uma seta ao lado do elemento acionador. * O valor padrão é falso para preservar a apresentação dos triggers existentes. */ showArrow: boolean; /** * Define o posicionamento da seta ('left' ou 'right') em relação ao elemento acionador. * O valor padrão é 'right'. */ arrowPosition: DropdownArrowPosition; /** * 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; /** * Desabilita a interação com o componente. * * > **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `disabled`. */ disabled: boolean; /** * Define o rótulo acessível usado por tecnologias assistivas. * * > **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `ariaLabel`. */ ariaLabel: string; /** * Método chamado sempre que a propriedade `isOpen` muda. * Emite um evento com o novo estado do dropdown. */ private pendingOpenInit; private clickListenerAttached; isOpenChanged(newValue: boolean): void; /** * Aplica o novo valor de z-index ao elemento target. */ targetZIndexChanged(): void; /** * Evento emitido quando o dropdown é aberto. * Este evento é usado para implementar o auto-dismiss de outros dropdowns. * * @internal */ placementChanged(): void; /** * Fecha o dropdown se for desabilitado enquanto estiver aberto. */ disabledChanged(newValue: boolean): void; /** * Emitido quando o dropdown abre. */ brDidOpen: EventEmitter<{ id: string; }>; /** * Emitido quando o dropdown fecha. */ brDidClose: EventEmitter<{ id: string; }>; /** @deprecated Use `brDropdownOpenChange`. */ brDropdownChange: EventEmitter<{ isOpen: boolean; }>; /** Evento canônico emitido quando o estado aberto muda. */ brDropdownOpenChange: EventEmitter; connectedCallback(): void; disconnectedCallback(): void; componentDidLoad(): void; private attachClickListener; private detachClickListener; private attachOpenListeners; private detachOpenListeners; componentDidRender(): void; /** * Esconde o dropdown. * Define a propriedade `isOpen` como falsa e retorna o novo estado. * Este método pode ser chamado externamente. * @deprecated Use `close`. */ hide(): Promise<{ isOpen: boolean; }>; /** Fecha o dropdown e mantém o formato de retorno legado. */ close(): Promise<{ isOpen: boolean; }>; /** * 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; }>; /** * 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; private triggerElement; private targetElement; private dropdownItems; private dropdownLinks; private focusableElement; private floatingManager; private cleanupBlockingSurfaceDismissal?; private clickHandler; private triggerKeydownHandler; private targetKeydownHandler; private dropdownOpenHandler; /** * Alterna o estado do dropdown entre aberto e fechado. */ private readonly toggle; /** * Limpa o posicionamento do Floating UI */ private cleanupPositioning; private clearDropdownItemListeners; /** * 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; private getCssClassMap; /** * 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; /** * Handler específico para links */ private handleLinkKeydown; /** * 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; /** * Método que lida com cliques fora do dropdown. * * @param {MouseEvent} event - O evento de clique que ocorreu. */ private onClickOutside; /** * 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; /** * Posiciona o dropdown usando Floating UI */ private positionDropdown; /** * Configura os comportamentos de interação do dropdown */ private setBehavior; /** * Atualiza o z-index do target conforme a propriedade targetZIndex */ private updateTargetZIndex; render(): any; }