import { ComponentInterface, EventEmitter } from '../../stencil-public-runtime'; import { type Placement } from '@floating-ui/dom'; export type TriggerType = 'hover' | 'click' | 'focus' | 'manual'; /** * @component BcmLinked * @description A flexible linked floating element component that displays contextual content relative to a trigger element. * Built on the native Popover API for top-layer rendering and Floating UI for intelligent positioning. * Supports different trigger types (click, hover, focus, manual) and comprehensive event system. * * @example Basic Click Trigger * * *
Floating content here
*
* * @example Hover Trigger with Delays * * Hover Me *
This appears on hover
*
* * @example Manual Control * * *
Controlled content
*
* * * @slot trigger - The trigger element that controls the floating element visibility * @slot - Default slot for the floating content * * @csspart floating - The floating container element * @csspart arrow - The arrow element pointing to the trigger * @csspart content - The content wrapper element */ export declare class BcmLinked implements ComponentInterface { host: HTMLElement; private floatingRef?; private triggerRef?; private arrowRef?; private cleanupAutoUpdate?; private showTimeout?; private hideTimeout?; private componentId; /** * @prop {boolean} visible - Controls the visibility state of the floating element. * Can be set programmatically or toggled by user interaction. * Default: false */ visible: boolean; /** * @prop {TriggerType} trigger - Defines the interaction type to show/hide the floating element. * 'click' toggles on click, 'hover' shows on mouse enter and hides on mouse leave, * 'focus' shows on focus and hides on blur, 'manual' requires programmatic control. * Default: 'click' */ trigger: TriggerType; /** * @prop {Placement} placement - Defines the position of the floating element relative to the trigger. * Default: 'bottom-start' */ placement: Placement; /** * @prop {number} showDelay - Delay in milliseconds before showing the floating element. * Default: 0 */ showDelay: number; /** * @prop {number} hideDelay - Delay in milliseconds before hiding the floating element. * Default: 0 */ hideDelay: number; /** * @prop {number} offsetDistance - Distance in pixels between the floating element and the trigger. * Default: 8 */ offsetDistance: number; /** * @prop {boolean} showArrow - Whether to show an arrow pointing to the trigger element. * Default: true */ showArrow: boolean; /** * @prop {boolean} disabled - Disables the floating element, preventing it from showing. * Default: false */ disabled: boolean; /** * @prop {boolean} closeOnOutsideClick - Whether to close when clicking outside. * Default: true */ closeOnOutsideClick: boolean; /** * @prop {boolean} closeOnEscape - Whether to close when pressing Escape key. * Default: true */ closeOnEscape: boolean; isVisible: boolean; /** * @event bcmBeforeShow - Emitted before the floating element shows. */ bcmBeforeShow: EventEmitter; /** * @event bcmShow - Emitted when the floating element is shown. */ bcmShow: EventEmitter; /** * @event bcmBeforeHide - Emitted before the floating element hides. */ bcmBeforeHide: EventEmitter; /** * @event bcmHide - Emitted when the floating element is hidden. */ bcmHide: EventEmitter; /** * @event bcmShown - Emitted after the floating element is fully shown (after animation). */ bcmShown: EventEmitter; /** * @event bcmHidden - Emitted after the floating element is fully hidden (after animation). */ bcmHidden: EventEmitter; handleVisibleChange(newValue: boolean): void; handleDisabledChange(isDisabled: boolean): void; handlePositionPropsChange(): void; private showInternal; private hideInternal; /** * Programmatically shows the floating element. * Respects the showDelay prop. */ show(): Promise; /** * Programmatically hides the floating element. * Respects the hideDelay prop. */ hide(): Promise; /** * Toggles the floating element visibility. */ toggle(): Promise; /** * Updates the position of the floating element. * Useful when the trigger element moves or resizes. */ updatePosition(): Promise; private clearTimeouts; private handleTriggerSlotChange; private setupAriaAttributes; private setupTriggerListeners; private removeTriggerListeners; private handleMouseEnter; private handleMouseLeave; private handleFloatingMouseEnter; private handleFloatingMouseLeave; private handleTriggerClick; private handleFocus; private handleBlur; handleKeyDown(event: KeyboardEvent): void; private handleOutsideClick; private addOutsideClickListener; private removeOutsideClickListener; private calculatePosition; private startAutoUpdate; private stopAutoUpdate; private handleToggle; componentDidLoad(): void; disconnectedCallback(): void; private linkedClass; render(): any; }