import type { ElementMap, InputEvents, InputOptions, ValidInputValue } from './Input'; import type { LabeledOption } from '../controllers/Select'; import type { State } from '../shared/state'; import type { Folder } from '../Folder'; import { Select } from '../controllers/Select'; import { Input } from './Input'; export type SelectInputOptions = Omit, 'onChange' | 'value'> & { __type?: 'SelectInputOptions'; onChange?: (value: LabeledOption) => void; } & { labelKey?: string; value?: T; options?: Array; }; export declare const SELECT_INPUT_DEFAULTS: SelectInputOptions; export interface SelectControllerElements extends ElementMap { container: HTMLElement; select: Select['elements']; } export interface SelectInputEvents extends InputEvents> { preview: LabeledOption; open: void; close: void; cancel: void; } export declare class InputSelect extends Input, SelectInputOptions, SelectControllerElements, SelectInputEvents> { #private; readonly __type: "InputSelect"; readonly initialValue: LabeledOption; state: State>; set options(v: SelectInputOptions['options']); get options(): LabeledOption[]; /** * The select controller instance. */ select: Select; /** * The currently selected option as a labeled option. */ labeledSelection: LabeledOption; private _log; constructor(options: Partial>, folder: Folder); resolveOptions(providedOptions: TValueType[]): LabeledOption[]; resolveInitialValue(opts: SelectInputOptions): LabeledOption; resolveInitialLabel(initialValue: this['initialValue'], opts: SelectInputOptions): string; get targetObject(): Record | undefined; get targetKey(): any; get targetValue(): TValueType; set targetValue(v: TValueType); /** * Selects the given {@link LabeledOption} and updates the ui. */ set(value: LabeledOption): this; enable(): this; disable(): this; refresh: () => this; dispose(): void; }