/** * Copyright Aquera Inc 2025 * * This source code is licensed under the BSD-3-Clause license found in the * LICENSE file in the root directory of this source tree. */ import { CSSResultArray, PropertyValues } from 'lit'; import NileElement from '../internal/nile-element'; /** * Nile floating-panel component. * * A popover that supports rich content (title, body, actions). * * **Wrapper mode** (default): first child element is the trigger. * **For mode**: set `for="elementId"` to attach to an external element. * * @tag nile-floating-panel * * @fires nile-init - Component initialized. * @fires nile-destroy - Component destroyed. * @fires nile-show - Panel opened. * @fires nile-hide - Panel closed. * @fires nile-after-show - Panel fully visible after animation. * @fires nile-after-hide - Panel fully hidden after animation. * @fires nile-toggle - Open/close transition (detail.open). * @fires nile-visibility-change - Hidden by scroll/tab change. */ export declare class NileFloatingPanel extends NileElement { private static _groups; private static _reducedMotionQuery; private static get prefersReducedMotion(); static get styles(): CSSResultArray; protected createRenderRoot(): this; placement: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'auto' | 'auto-start' | 'auto-end'; trigger: string; distance: number; skidding: number; arrow: 'round' | 'default' | 'none'; animation: string; duration: string | number | [number, number]; delay: number | [number, number]; interactive: boolean; interactiveBorder: number; maxWidth: string | number; zIndex: number; followCursor: boolean | 'initial' | 'horizontal' | 'vertical' | 'true' | 'false'; hideOnClick: boolean | 'toggle'; inertia: boolean; allowHTML: boolean; flip: boolean; for: string | null; open: boolean; preventOverlayClose: boolean; title: string; disabled: boolean; width?: string; height?: string; /** When set, only one panel in the same group can be open at a time. */ group: string | null; /** Close the panel when Escape is pressed. */ closeOnEscape: boolean; /** Custom CSS class(es) added to the Tippy popper element, allowing per-instance styling from the host. */ panelClass: string; enableVisibilityEffect: boolean; enableTabClose: boolean; private tippyInstance; private visibilityManager?; private panelContainer; private anchorEl; private _suppressOpenWatch; private _panelId; private _boundEscHandler; private _pendingShowListener; private _pendingHideListener; protected firstUpdated(): void; disconnectedCallback(): void; updated(changed: PropertyValues): void; /** Programmatically shows the panel. Returns a promise that resolves after the show animation. */ show(): Promise; /** Programmatically hides the panel. Returns a promise that resolves after the hide animation. */ hide(): Promise; private _cleanupPendingShowListener; private _cleanupPendingHideListener; toggle(): void; refresh(): void; /** Returns the current resolved placement from Tippy/Popper. */ getCurrentPlacement(): string; /** Returns true if the resolved placement matches the requested placement. */ isPositioningOptimal(): boolean; private _joinGroup; private _leaveGroup; private _hideGroupSiblings; private _addEscListener; private _removeEscListener; private _handleEscapeKey; private _applyAria; private _syncAriaExpanded; private _buildDOM; private _resolveArrow; private _setOpen; private _getEffectiveDuration; private _getEffectiveAnimation; private _attachTippy; private _destroyTippy; } export default NileFloatingPanel; declare global { interface HTMLElementTagNameMap { 'nile-floating-panel': NileFloatingPanel; } }