import { type Readable } from '@vielzeug/ripple'; import { type ListNavigationAction, type ListNavigationChange, type ListNavigationTypeaheadOptions } from './nav'; import { type DropdownCloseReason, type OverlayOpenReason } from './overlay'; import { type DropdownPositionerOptions } from './positioner'; export type ListboxItem = object; /** Placement-only options for the listbox dropdown positioner. */ export type ListboxDropdownPlacementOptions = Omit; export type ListboxDropdownOptions = { getBoundary: () => HTMLElement | null; getFocusedOptionElement?: () => HTMLElement | null; getItems: () => readonly T[]; getOptionId?: (index: number) => string; getPanel: () => HTMLElement | null; getReference: () => HTMLElement | null; getTrigger?: () => HTMLElement | null; isDisabled?: () => boolean; isItemDisabled?: (item: T, index: number) => boolean; keys?: Partial>; loop?: boolean; onClose?: (reason: DropdownCloseReason) => void; onNavigate?: (change: ListNavigationChange) => void; onOpen?: (reason: OverlayOpenReason) => void; orientation?: 'both' | 'horizontal' | 'vertical'; positioning?: ListboxDropdownPlacementOptions; restoreFocus?: boolean | (() => boolean); signal: AbortSignal; typeahead?: ListNavigationTypeaheadOptions; }; export type ListboxDropdown = { [Symbol.dispose](): void; readonly ariaActiveDescendant: Readable; readonly ariaExpanded: Readable; close(reason?: DropdownCloseReason): void; /** Closes the dropdown (without restoring focus) and disposes list navigation state. */ dispose(): void; /** `true` after `dispose()` has been called. */ readonly disposed: boolean; readonly focusedIndex: Readable; getActiveItem(): T | undefined; handleKeydown(event: KeyboardEvent): boolean; readonly isOpen: Readable; navigate(action: ListNavigationAction): number; open(reason?: OverlayOpenReason): void; scrollFocusedIntoView(): void; set(index: number): number; toggle(openReason?: OverlayOpenReason, closeReason?: DropdownCloseReason): void; updatePosition(): void; }; /** * Internal listbox dropdown behavior for select and combobox. It owns only * listbox interactions; menu and other overlay families keep their own logic. */ export declare const createListboxDropdown: (options: ListboxDropdownOptions) => ListboxDropdown; //# sourceMappingURL=option-list.d.ts.map