import { LitElement } from 'lit'; import { Placement } from '@floating-ui/dom'; /** * Event detail for show event */ export interface PopoverShowEventDetail { visible: boolean; } /** * Event detail for hide event */ export interface PopoverHideEventDetail { visible: boolean; } /** * Custom event dispatched when the popover is shown */ export type PopoverShowEvent = CustomEvent; /** * Custom event dispatched when the popover is hidden */ export type PopoverHideEvent = CustomEvent; /** * Props interface for Popover component including event handlers * * @fires {PopoverShowEvent} show - Fired when the popover becomes visible * @fires {PopoverHideEvent} hide - Fired when the popover becomes hidden * * @csspart ag-popover - The main popover container element that displays the content * @csspart ag-popover-header - The header element of the popover * @csspart ag-popover-body - The body element containing the popover content * @csspart ag-popover-arrow - The arrow element that points to the trigger element * @csspart ag-popover-close - The close button element inside the popover * * @cssproperty --ag-popover-min-width - Minimum width of the popover * @cssproperty --ag-popover-max-width - Maximum width of the popover * @cssproperty --ag-popover-arrow-size - Size of the arrow (width/height) */ export interface PopoverProps { placement?: Placement; distance?: number; skidding?: number; arrow?: boolean; disabled?: boolean; /** * Interaction type for triggering the popover * @default 'click' */ triggerType?: 'click' | 'hover' | 'focus'; /** Match the popover's width to the trigger element */ matchTriggerWidth?: boolean; /** Whether to show the close button in the header */ showCloseButton?: boolean; /** * Whether to show the header section * @default true */ showHeader?: boolean; /** Accessible label for the close button */ closeLabel?: string; /** * Whether to trap focus within the popover when open * @default false */ trapFocus?: boolean; onShow?: (event: PopoverShowEvent) => void; onHide?: (event: PopoverHideEvent) => void; } export declare class Popover extends LitElement implements PopoverProps { static styles: import('lit').CSSResult; placement: Placement; distance: number; skidding: number; arrow: boolean; disabled: boolean; triggerType: 'click' | 'hover' | 'focus'; matchTriggerWidth: boolean; showCloseButton: boolean; showHeader: boolean; closeLabel: string; trapFocus: boolean; onShow?: (event: PopoverShowEvent) => void; onHide?: (event: PopoverHideEvent) => void; private _open; popoverElement: HTMLElement | undefined; arrowElement: HTMLElement | undefined; private _triggerSlot; private _cleanup; private _clickOutsideHandler?; private _contentObserver; private _hoverTimeout; constructor(); connectedCallback(): void; firstUpdated(): void; disconnectedCallback(): void; /** * Sets up ARIA attributes on the trigger element. * @remarks Slot 'trigger' is required; missing it logs a warning and prevents opening. */ private _setupARIA; private get triggerElement(); private get _hasTitleSlot(); private get _hasContentSlot(); private get _hasHeader(); private _updateSlotStates; /** * Sets up content observation for slot changes with limited depth * to prevent performance issues in large applications. */ private _setupContentObservation; private _cleanupContentObservation; private _clearHoverTimeout; updated(changedProperties: Map): void; private _updatePopoverStyles; private _updateARIA; private _handleTriggerClick; private _handleTriggerMouseEnter; private _handleTriggerMouseLeave; private _handleTriggerFocus; private _handleTriggerBlur; private _handleCloseButtonClick; private _handleKeyDown; private _handleClickOutside; private _addTriggerListeners; private _removeTriggerListeners; private _addPopoverListeners; private _removePopoverListeners; private _startPositioning; private _cleanupPositioning; private _updatePosition; show(): void; /** * Helper to get the active element, handling Shadow DOM boundaries. */ private _getActiveElement; hide(): void; toggle(): void; get isOpen(): boolean; get hasContentSlot(): boolean; get hasTitleSlot(): boolean; get hasHeader(): boolean; render(): import('lit').TemplateResult<1>; } //# sourceMappingURL=_Popover.d.ts.map