UNPKG

slim-select

Version:

Slim advanced select dropdown

318 lines (303 loc) 10.2 kB
declare interface Callbacks { open: () => void; close: () => void; addable?: (value: string) => Promise<Partial<Option_2> | string> | Partial<Option_2> | string | false | undefined | null | Error; setSelected: (value: string | string[], runAfterChange: boolean) => void; addOption: (option: Option_2) => void; search: (search: string) => void; beforeChange?: (newVal: Option_2[], oldVal: Option_2[]) => boolean | void; afterChange?: (newVal: Option_2[]) => void; } export declare interface Config { select: string | Element; data?: (Partial<Option_2> | Partial<Optgroup>)[]; settings?: Partial<Settings>; cssClasses?: Partial<CssClasses>; events?: Events; } export declare interface Content { main: HTMLDivElement; search: Search; list: HTMLDivElement; } declare class CssClasses { main: string; placeholder: string; values: string; single: string; max: string; value: string; valueText: string; valueDelete: string; valueOut: string; deselect: string; deselectPath: string; arrow: string; arrowClose: string; arrowOpen: string; content: string; contentOpen: string; dirAbove: string; dirBelow: string; search: string; searchHighlighter: string; searching: string; addable: string; addablePath: string; list: string; optgroup: string; optgroupLabel: string; optgroupLabelText: string; optgroupActions: string; optgroupSelectAll: string; optgroupSelectAllBox: string; optgroupSelectAllCheck: string; optgroupClosable: string; option: string; optionDelete: string; highlighted: string; mainOpen: string; close: string; selected: string; error: string; disabled: string; hide: string; constructor(classes?: Partial<CssClasses>); getFirst(name: keyof Omit<CssClasses, 'getFirst'>): string; } export declare interface Events { search?: (searchValue: string, currentData: (Option_2 | Optgroup)[]) => Promise<(Partial<Option_2> | Partial<Optgroup>)[]> | (Partial<Option_2> | Partial<Optgroup>)[]; searchFilter?: (option: Option_2, search: string) => boolean; addable?: (value: string) => Promise<Partial<Option_2> | string> | Partial<Option_2> | string | false | null | undefined | Error; beforeChange?: (newVal: Option_2[], oldVal: Option_2[]) => boolean | void; afterChange?: (newVal: Option_2[]) => void; beforeOpen?: () => void; afterOpen?: () => void; beforeClose?: () => void; afterClose?: () => void; error?: (err: Error) => void; } export declare interface Main { main: HTMLDivElement; values: HTMLDivElement; deselect: { main: HTMLDivElement; svg: SVGSVGElement; path: SVGPathElement; }; arrow: { main: SVGSVGElement; path: SVGPathElement; }; } export declare class Optgroup { id: string; label: string; selectAll: boolean; selectAllText: string; closable: 'off' | 'open' | 'close'; options: Partial<Option_2>[]; constructor(optgroup: Partial<Optgroup>); } declare class Option_2 { id: string; value: string; text: string; html: string; defaultSelected: boolean; selected: boolean; display: boolean; disabled: boolean; placeholder: boolean; class: string; style: string; data: { [key: string]: string; }; mandatory: boolean; constructor(option: Partial<Option_2>); } export { Option_2 as Option } declare class Render { settings: Settings; store: Store; callbacks: Callbacks; private lastSelectedOption; private closeAnimationTimeout; main: Main; content: Content; classes: CssClasses; constructor(settings: Required<Settings>, classes: Required<CssClasses>, store: Store, callbacks: Callbacks); private addClasses; private removeClasses; enable(): void; disable(): void; open(): void; close(): void; private getAnimationTiming; updateClassStyles(): void; updateAriaAttributes(): void; mainDiv(): Main; mainFocus(eventType: string | null): void; placeholder(): HTMLDivElement; renderValues(): void; private renderSingleValue; private renderMultipleValues; multipleValue(option: Option_2): HTMLDivElement; contentDiv(): Content; moveContent(): void; searchDiv(): Search; searchFocus(): void; getOptions(notPlaceholder?: boolean, notDisabled?: boolean, notHidden?: boolean): HTMLDivElement[]; highlight(dir: 'up' | 'down'): void; listDiv(): HTMLDivElement; renderError(error: string): void; renderSearching(): void; renderOptions(data: (Option_2 | Optgroup)[]): void; option(option: Option_2): HTMLDivElement; destroy(): void; private highlightText; private setContentDirection; private setContentPosition; moveContentAbove(): void; moveContentBelow(): void; ensureElementInView(container: HTMLElement, element: HTMLElement): void; putContent(): 'up' | 'down'; updateDeselectAll(): void; } export declare interface Search { main: HTMLDivElement; input: HTMLInputElement; addable?: { main: HTMLDivElement; svg: SVGSVGElement; path: SVGPathElement; }; } declare class Select { select: HTMLSelectElement; onValueChange?: (value: Option_2[]) => void; onClassChange?: (classes: string[]) => void; onDisabledChange?: (disabled: boolean) => void; onOptionsChange?: (data: (Option_2 | Optgroup)[]) => void; onLabelClick?: () => void; private listen; private observer; private isUpdating; private pendingOptionsChange; private preventNativeSelect; private preventNativeSelectMousedown; private preventNativeSelectFocus; constructor(select: HTMLSelectElement); enable(): void; disable(): void; hideUI(): void; showUI(): void; changeListen(listen: boolean): void; valueChange(ev: Event): boolean; private observeCall; getData(): (Option_2 | Optgroup)[]; getDataFromOptgroup(optgroup: HTMLOptGroupElement): Optgroup; getDataFromOption(option: HTMLOptionElement): Option_2; getSelectedOptions(): Option_2[]; getSelectedValues(): string[]; setSelected(ids: string[]): void; setSelectedByValue(values: string[]): void; updateSelect(id?: string, style?: string, classes?: string[]): void; updateOptions(data: (Option_2 | Optgroup)[]): void; createOptgroup(optgroup: Optgroup): HTMLOptGroupElement; createOption(info: Option_2): HTMLOptionElement; setupLabelHandlers(): void; removeLabelHandlers(): void; destroy(): void; } export declare class Settings { id: string; style: string; class: string[]; isMultiple: boolean; isOpen: boolean; isFullOpen: boolean; intervalMove: ReturnType<typeof setInterval> | null; disabled: boolean; alwaysOpen: boolean; showSearch: boolean; focusSearch: boolean; keepSearch: boolean; ariaLabel: string; searchPlaceholder: string; searchText: string; searchingText: string; searchHighlight: boolean; closeOnSelect: boolean; contentLocation: HTMLElement | null; contentPosition: 'relative' | 'absolute' | 'fixed'; openPosition: 'auto' | 'up' | 'down'; placeholderText: string; allowDeselect: boolean; hideSelected: boolean; keepOrder: boolean; showOptionTooltips: boolean; minSelected: number; maxSelected: number; timeoutDelay: number; maxValuesShown: number; maxValuesMessage: string; addableText: string; constructor(settings?: Partial<Settings>); } declare class SlimSelect { selectEl: HTMLSelectElement; settings: Settings; cssClasses: CssClasses; select: Select; store: Store; render: Render; private openTimeout; private closeTimeout; events: Events; constructor(config: Config); enable(): void; disable(): void; getData(): Option_2[] | Optgroup[]; setData(data: (Partial<Option_2> | Partial<Optgroup>)[]): void; getSelected(): string[]; setSelected(values: string | string[], runAfterChange?: boolean): void; addOption(option: Partial<Option_2>): void; open(): void; close(eventType?: string | null): void; search(value: string): void; destroy(): void; private windowResize; private windowScroll; private documentClick; private windowVisibilityChange; } export default SlimSelect; declare class Store { private selectType; private data; private selectedOrder; constructor(type: 'single' | 'multiple', data: (Partial<Option_2> | Partial<Optgroup>)[]); validateDataArray(data: (Partial<Option_2> | Partial<Optgroup>)[]): Error | null; validateOption(option: Partial<Option_2>): Error | null; partialToFullData(data: (Partial<Option_2> | Partial<Optgroup>)[]): (Option_2 | Optgroup)[]; setData(data: (Partial<Option_2> | Partial<Optgroup>)[], preserveSelected?: boolean): void; getData(): Option_2[] | Optgroup[]; getDataOptions(): Option_2[]; addOption(option: Partial<Option_2>, addToStart?: boolean): void; setSelectedBy(selectedType: 'id' | 'value', selectedValues: string[]): void; getSelected(): string[]; getSelectedValues(): string[]; getSelectedOptions(): Option_2[]; getOptgroupByID(id: string): Optgroup | null; getOptionByID(id: string): Option_2 | null; getSelectType(): string; getFirstOption(): Option_2 | null; search(search: string, searchFilter: (opt: Option_2, search: string) => boolean): (Option_2 | Optgroup)[]; filter(filter: { (opt: Option_2): boolean; } | null, includeOptgroup: boolean): (Option_2 | Optgroup)[]; selectedOrderOptions(options: Option_2[]): Option_2[]; } export { }