UNPKG

slim-select

Version:

Slim advanced select dropdown

62 lines (61 loc) 2.53 kB
import { default as CssClasses } from './classes'; import { default as Lifecycle } from './lifecycle'; import { default as Render, CloseInfo } from './render'; import { default as Select } from './select'; import { default as Settings, MODAL_MOBILE_BREAKPOINT } from './settings'; import { default as Store, Option, Optgroup } from './store'; import { default as SyncCoordinator } from './sync'; export { Settings, Option, Optgroup, MODAL_MOBILE_BREAKPOINT }; export type { ModalSetting } from './settings'; export type { Main, Content, Search, CloseInfo, CloseSource } from './render'; export interface Config { select: string | Element; data?: (Partial<Option> | Partial<Optgroup>)[]; settings?: Partial<Settings>; cssClasses?: Partial<CssClasses>; events?: Events; } export interface Events { search?: (searchValue: string, selected: Option[], catalog?: (Option | Optgroup)[]) => Promise<(Partial<Option> | Partial<Optgroup>)[]> | (Partial<Option> | Partial<Optgroup>)[]; searchFilter?: (option: Option, search: string) => boolean; addable?: (value: string) => Promise<Partial<Option> | string> | Partial<Option> | string | false | null | undefined | Error; beforeChange?: (newVal: Option[], oldVal: Option[]) => boolean | void; afterChange?: (newVal: Option[]) => void; beforeOpen?: () => void; afterOpen?: () => void; beforeClose?: (info: CloseInfo) => boolean | void; afterClose?: () => void; error?: (err: Error) => void; } export default class SlimSelect { selectEl: HTMLSelectElement; settings: Settings; cssClasses: CssClasses; select: Select; store: Store; render: Render; sync: SyncCoordinator; lifecycle: Lifecycle; private globalEvents; /** Invalidates in-flight API search responses when the query changes or clears. */ private searchGeneration; events: Events; constructor(config: Config); enable(): void; disable(): void; getData(): Option[] | Optgroup[]; setData(data: (Partial<Option> | Partial<Optgroup>)[]): void; getSelected(): string[]; setSelected(values: string | string[], runAfterChange?: boolean): void; addOption(option: Partial<Option>): void; open(): void; close(info?: CloseInfo): void; /** Sync close — invoked by lifecycle after beforeClose approves. */ private applyClose; search(value: string): void; private clearSearch; private runLocalSearch; private runApiSearch; destroy(): void; private documentClick; }