/** * Focus management strategy when an interactive popover closes. * * - `restore-trigger`: Move focus back to the trigger element (default, WCAG-compliant). * - `release`: Blur the active element without restoring focus (hover mode pointer dismiss). */ export type PopoverCloseFocus = 'restore-trigger' | 'release'; export interface PopoverInterface { hostElement: HTMLElement; closeOnClickOutside: boolean; getNestedPopoverIds(): string[]; getId(): string; isPresent(): boolean; willPresent?(): boolean; willDismiss?(): boolean; present(): Promise; /** * @param closeFocus How to handle focus when the popover has focusable content. */ dismiss(closeFocus?: PopoverCloseFocus): void; } declare class PopoverController { private readonly stack; /** LIFO order of popovers opened through {@link presentAndWait}. */ private readonly presentationOrder; private isWindowListenerActive; connected(popover: PopoverInterface): void; disconnected(popover: PopoverInterface): void; removeFromNestedPopoverIds(id: string): void; /** Keeps stack parent→child links aligned with host {@link PopoverInterface.getNestedPopoverIds}. */ syncNestedPopoverIds(popover: PopoverInterface): void; present(popover: PopoverInterface): void; presentAndWait(popover: PopoverInterface): Promise; dismissChildren(uid: string): void; dismiss(popover: PopoverInterface, closeFocus?: PopoverCloseFocus): void; private dismissChildrenWithFocus; dismissAll(ignoreCloseOnClickOutside?: boolean): void; dismissTopmost(): void; dismissOthers(uid: string): void; pathIncludesTrigger(eventTargets: EventTarget[]): HTMLElement | undefined; private recordPresented; private removeFromPresentationOrder; /** Whether this host is the active (topmost) popover for keyboard focus. */ isTopmostPresentedHost(host: HTMLElement): boolean; private getTopmostForEscape; private getPopoverDialog; private pathIncludesPopover; private dismissAllFromOutsideClick; private addOverlayListeners; } export { PopoverController }; export declare const popoverController: PopoverController;