import { ReactiveControllerHost } from 'lit'; import { DropdownItem, DropdownPlacement, DropdownTrigger, DropdownAnimation, DropdownSize } from '../dropdown.types.js'; /** * Base dropdown controller interface */ export interface DropdownBaseController { host: DropdownHost; } /** * Dropdown host interface - represents the dropdown component */ export interface DropdownHost extends ReactiveControllerHost { open: boolean; disabled: boolean; placement: DropdownPlacement; trigger: DropdownTrigger; size: DropdownSize; animation: DropdownAnimation; arrow: boolean; autoClose: boolean; closeOnOutsideClick: boolean; closeOnEscape: boolean; offset: number; delay: number; maxHeight: string; minWidth: string; items?: DropdownItem[]; shadowRoot: ShadowRoot | null; requestUpdate(): void; } /** * Error handler interface */ export interface ErrorHandler { handleError(error: Error, context: string): void; } /** * Dropdown positioning information */ export interface DropdownPosition { top: number; left: number; width: number; placement: 'bottom' | 'top' | 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'; } /** * Available space calculation for dropdown positioning */ export interface DropdownSpace { above: number; below: number; left: number; right: number; } /** * Dropdown controller specific interface */ export interface DropdownController extends DropdownBaseController { isOpen: boolean; position: DropdownPosition; open(): void; close(): void; toggle(): void; calculatePosition?(): void; } /** * Event data interfaces */ export interface DropdownOpenEventDetail { dropdown: DropdownHost; } export interface DropdownCloseEventDetail { dropdown: DropdownHost; } export interface DropdownItemClickEventDetail { item: DropdownItem; dropdown: DropdownHost; } //# sourceMappingURL=controller-interfaces.d.ts.map