import { type EventEmitter } from '../../stencil-public-runtime'; import type { MultiSelectChangeEventDetail, MultiSelectDropdownDirection, MultiSelectState, MultiSelectTheme, MultiSelectToggleEventDetail } from './types'; /** * @component diwa-multi-select * * A fully accessible multi-select dropdown with built-in text filter, * keyboard navigation, and form integration. * * Based on the Diwa multi-select API contract. * * Design token override API: * --diwa-multi-select-height Trigger button height (default 40px) * --diwa-multi-select-height-sm Trigger height when compact (default 32px) * * Usage: * * Apple * Banana * * * @slot default — diwa-multi-select-option elements * @slot label — Custom label content (overrides the label prop) * @slot description — Custom description content * @slot message — Custom message content * @slot selected — Custom selected-value display in the trigger button * @slot filter — Custom filter input; disables the built-in filter * @slot options-status — Loading / no-results / error content for async patterns */ export declare class DiwaMultiSelect { host: HTMLElement; /** Theme — cascades down to child options. */ theme: MultiSelectTheme; /** Visible label text. */ label?: string; /** Optional description shown below the label. */ description?: string; /** HTML name attribute — identifies the field in form submissions. */ name: string; /** Currently selected values. Mutable — updated on user interaction. */ value: string[]; /** Validation state. */ state: MultiSelectState; /** Helper / validation message shown below the trigger. */ message?: string; /** Hides the label visually while keeping it accessible. */ hideLabel: boolean; /** Disables interaction. */ disabled: boolean; /** Marks the field as required. */ required: boolean; /** Compact variant — reduces the trigger height. */ compact: boolean; /** * Preferred direction for the dropdown panel. * `'auto'` detects viewport space and flips upward if needed. */ dropdownDirection: MultiSelectDropdownDirection; /** Emitted when the selection changes. */ change: EventEmitter; /** Emitted when the dropdown opens or closes. */ toggle: EventEmitter; /** Emitted when the component loses focus (dropdown closes via click-outside). */ blur: EventEmitter; private isOpen; private filterText; private hasFilterResults; private dropdownClass; private internalId; private triggerEl; private filterInputEl?; private options; private highlightedIndex; private hasCustomFilterSlot; private hasCustomSelectedSlot; onThemeChange(): void; onCompactChange(): void; onValueChange(): void; onIsOpenChange(open: boolean): void; connectedCallback(): void; disconnectedCallback(): void; componentWillLoad(): void; componentDidLoad(): void; /** Programmatically opens the dropdown. */ open(): Promise; /** Programmatically closes the dropdown. */ close(): Promise; onOptionUpdate(e: CustomEvent<{ value: string; selected: boolean; }>): void; onSlotChange(): void; private collectOptions; private syncSelectionFromValue; private syncChildThemes; private syncChildCompact; private getVisibleOptions; private getFirstHighlightIndex; private applyHighlight; private clearHighlight; private updateDropdownDirection; private resetFilter; private onClickOutside; private onTriggerClick; private onTriggerKeyDown; private onFilterInput; private onResetClick; private get selectedLabels(); render(): any; } //# sourceMappingURL=diwa-multi-select.d.ts.map