tom-select
Version:
Tom Select is a versatile and dynamic <select> UI control. Forked from Selectize.js to provide a framework agnostic autocomplete widget with native-feeling keyboard navigation, it's useful for tagging, contact lists, country selectors, etc.
82 lines (81 loc) • 2.99 kB
TypeScript
import { TomCreateOptgroup, TomCreateFilter, TomCreate, TomLoadCallback, TomTemplates, TomOption } from './index.ts';
import { TPluginItem, TPluginHash } from '../contrib/microplugin.ts';
import { type Sort as SifterSort, type SortFn as SifterSortFn } from '@orchidjs/sifter';
export type TomSettings = {
options?: any[];
optgroups?: any[];
items?: string[];
plugins: string[] | TPluginItem[] | TPluginHash;
delimiter: string;
splitOn: RegExp | string;
persist: boolean;
diacritics: boolean;
create: boolean | TomCreate;
createOnBlur: boolean;
createFilter: RegExp | string | TomCreateFilter;
highlight: boolean;
openOnFocus: boolean;
shouldOpen: boolean;
maxOptions: null | number;
maxItems: null | number;
hideSelected: boolean;
duplicates: boolean;
addPrecedence: boolean;
selectOnTab: boolean;
preload: boolean | string;
allowEmptyOption: boolean;
closeAfterSelect: boolean;
clearAfterSelect: boolean;
refreshThrottle: number;
loadThrottle: number;
loadingClass: string;
dataAttr: string;
optgroupField: string;
valueField: string;
labelField: string;
disabledField: string;
optgroupLabelField: string;
optgroupValueField: string;
lockOptgroupOrder: boolean;
optionGroupRegister: TomCreateOptgroup;
sortField: string | SifterSort[] | SifterSortFn;
searchField: string[];
searchConjunction: string;
nesting: boolean;
mode: string;
wrapperClass: string;
controlClass: string;
dropdownClass: string;
dropdownContentClass: string;
itemClass: string;
optionClass: string;
dropdownParent: string;
controlInput: null | string | HTMLInputElement;
copyClassesToDropdown: boolean;
placeholder: string;
hidePlaceholder: boolean;
load: (value: string, callback: TomLoadCallback) => void;
score?: (query: string) => () => any;
shouldLoad: (query: string) => boolean;
onInitialize: () => void;
onChange: (value: string | number) => void;
onItemAdd: (value: string | number, item: HTMLDivElement) => void;
onItemRemove: (value: string | number, item: HTMLDivElement) => void;
onClear: () => void;
onOptionAdd: (value: string | number, data: TomOption) => void;
onOptionRemove: (value: string | number) => void;
onOptionClear: () => void;
onOptionGroupAdd: (value: string | number, data: TomOption) => void;
onOptionGroupRemove: (value: string | number) => void;
onOptionGroupClear: () => void;
onDropdownOpen: (dropdown: HTMLDivElement) => void;
onDropdownClose: (dropdown: HTMLDivElement) => void;
onType: (str: string) => void;
onLoad: (options: TomOption[], optgroups: TomOption[]) => void;
onFocus: () => void;
onBlur: () => void;
onDelete: (values: string[], evt: KeyboardEvent | MouseEvent) => boolean;
render: TomTemplates;
firstUrl: (query: string) => any;
shouldLoadMore: () => boolean;
};