import { AnchoredRegion, ListboxOption, SelectPosition } from '@ni/fast-foundation'; import { DropdownAppearance, type ListOptionOwner } from '../patterns/dropdown/types'; import type { ListOption } from '../list-option'; import { FilterMode } from './types'; import { FormAssociatedSelect } from './models/select-form-associated'; declare global { interface HTMLElementTagNameMap { 'nimble-select': Select; } } type BooleanOrVoid = boolean | void; declare const Select_base: (abstract new (...args: any[]) => { errorText?: string; errorVisible: boolean; errorHasOverflow: boolean; readonly $fastController: import("@ni/fast-element").Controller; $emit(type: string, detail?: any, options?: Omit): boolean | void; connectedCallback(): void; disconnectedCallback(): void; attributeChangedCallback(name: string, oldValue: string, newValue: string): void; }) & (abstract new (...args: any[]) => { requiredVisible: boolean; readonly $fastController: import("@ni/fast-element").Controller; $emit(type: string, detail?: any, options?: Omit): boolean | void; connectedCallback(): void; disconnectedCallback(): void; attributeChangedCallback(name: string, oldValue: string, newValue: string): void; }) & typeof FormAssociatedSelect; /** * A nimble-styled HTML select. */ export declare class Select extends Select_base implements ListOptionOwner { appearance: DropdownAppearance; appearanceReadOnly: boolean; fullBleed: boolean; /** * Reflects the placement for the listbox when the select is open. * * @public */ positionAttribute?: SelectPosition; filterMode: FilterMode; clearable: boolean; loadingVisible: boolean; /** * @internal */ displayPlaceholder: boolean; /** * @internal */ open: boolean; /** * Holds the current state for the calculated position of the listbox. * * @public */ position?: SelectPosition; /** * The ref to the internal `.control` element. * * @internal */ control: HTMLElement; /** * Reference to the internal listbox element. * * @internal */ listbox: HTMLDivElement; /** * The unique id for the internal listbox element. * * @internal */ listboxId: string; /** * @internal */ scrollableRegion: HTMLElement; /** * @internal */ filterInput?: HTMLInputElement; /** * @internal */ anchoredRegion: AnchoredRegion; /** @internal */ hasOverflow: boolean; /** * @internal */ filteredOptions: ListboxOption[]; /** * @internal */ filter: string; /** * The space available in the viewport for the listbox when opened. * * @internal */ availableViewportHeight: number; /** * The component is collapsible when in single-selection mode with no size attribute. * * @internal */ get collapsible(): boolean; /** @internal */ labelSlot: HTMLSlotElement; /** @internal */ get labelContent(): string; private _value; private forcedPosition; private openActiveIndex?; private readonly selectedOptionObserver?; /** * @internal */ connectedCallback(): void; disconnectedCallback(): void; get value(): string; set value(next: string); /** * @internal */ get displayValue(): string; /** * @internal */ anchoredRegionChanged(_prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void; /** * @internal */ controlChanged(_prev: HTMLElement | undefined, _next: HTMLElement | undefined): void; /** * @internal */ slottedOptionsChanged(prev: Element[] | undefined, next: Element[] | undefined): void; /** * @internal */ clickHandler(e: MouseEvent): BooleanOrVoid; /** * Updates the value when an option's value changes. * * @param source - the source object * @param propertyName - the property to evaluate * * @internal * @override */ handleChange(source: unknown, propertyName: string): void; /** * Prevents focus when size is set and a scrollbar is clicked. * * @param e - the mouse event object * * @override * @internal */ mousedownHandler(e: MouseEvent): BooleanOrVoid; /** * @internal */ regionLoadedHandler(): void; /** * Sets the multiple property on the proxy element. * * @param prev - the previous multiple value * @param next - the current multiple value */ multipleChanged(prev: boolean | undefined, next: boolean): void; /** * @internal */ ignoreClickHandler(e: MouseEvent): void; /** * @internal */ clearClickHandler(e: MouseEvent): void; /** * @internal */ updateDisplayValue(): void; /** * Handle content changes on the control input. * * @param e - the input event * @internal */ inputHandler(e: InputEvent): boolean; /** * @internal */ focusoutHandler(e: FocusEvent): BooleanOrVoid; /** * @internal */ keydownHandler(e: KeyboardEvent): BooleanOrVoid; /** * Updates the proxy value when the selected index changes. * * @param prev - the previous selected index * @param next - the next selected index * * @internal */ selectedIndexChanged(_: number | undefined, __: number): void; /** * @internal * Fork of Listbox implementation, so that the selectedIndex is not changed while the dropdown * is open. */ typeaheadBufferChanged(_: string, __: string): void; /** * Synchronize the `aria-disabled` property when the `disabled` property changes. * * @param prev - The previous disabled value * @param next - The next disabled value * * @internal */ disabledChanged(prev: boolean, next: boolean): void; /** * Reset the element to its first selectable option when its parent form is reset. * * @internal */ formResetCallback(): void; /** * @internal */ selectNextOption(): void; /** * @internal */ selectPreviousOption(): void; /** * @internal */ selectFirstOption(): void; /** * @internal */ selectLastOption(): void; /** * @internal */ registerOption(option: ListOption): void; protected setSelectedOptions(): void; protected focusAndScrollOptionIntoView(): void; protected getTypeaheadMatches(): ListboxOption[]; protected positionChanged(_: SelectPosition | undefined, next: SelectPosition | undefined): void; /** * Updates the proxy's size property when the size attribute changes. * * @param prev - the previous size * @param next - the current size * * @override * @internal */ protected sizeChanged(prev: number | undefined, next: number): void; protected openChanged(): void; /** * Updates the selectedness of each option when the list of selected options changes. * * @param prev - the previous list of selected options * @param next - the current list of selected options * * @override * @internal */ protected selectedOptionsChanged(_prev: ListboxOption[] | undefined, next: ListboxOption[]): void; /** * Sets the selected index to match the first option with the selected attribute, or * the first selectable option. * * @override * @internal */ protected setDefaultSelectedOption(): void; private getSlottedOptions; private setActiveOption; private focusAndScrollActiveOptionIntoView; private getPlaceholderOption; private setPositioning; private updateAdjacentSeparatorState; private setTopSeparatorState; private setBottomSeparatorState; private getPreviousVisibleOptionOrGroup; private getNextVisibleOptionOrGroup; private isOptionHiddenOrFilteredOut; private filterMatchesText; /** * Filter available options by text value. * * @public */ private filterOptions; private getGroupOptions; /** * Sets the value and display value to match the first selected option. * * @param shouldEmit - if true, the input and change events will be emitted * * @internal */ private updateValue; private clearSelect; /** * Resets and fills the proxy to match the component's options. * * @internal */ private setProxyOptions; private filterChanged; private emitFilterInputEvent; private initializeOpenState; private observeSelectedOptionTextContent; } export declare const selectTag = "nimble-select"; export {};