1
0
Fork 0
mirror of synced 2025-04-10 04:20:59 +00:00
select2/control/src/dictionary.ts
2019-07-17 08:05:48 -07:00

64 lines
1.7 KiB
TypeScript

// TODO make it so keys can be strings in addition to functions
export interface Dictionary {
valueAdded(itemLabel: string): string;
noSearchResults(): string;
searchResultsLoading(): string;
removeButtonTitle(): string;
clearButtonTitle(): string;
minimumCharactersMessage(len: number, min: number): string;
multiSelectInstructions(): string;
expandButtonTitle(): string;
}
const EN_US: Dictionary = {
noSearchResults() {
return 'No results available';
},
searchResultsLoading() {
return 'Loading...';
},
removeButtonTitle() {
return 'Remove selected values';
},
clearButtonTitle() {
return 'Clear selection';
},
valueAdded(itemLabel: string) {
return itemLabel + ' added';
},
minimumCharactersMessage(len: number, min: number) {
const delta = min - len;
return 'Please enter ' + delta + ' more character' + (delta > 1 ? 's' : '');
},
multiSelectInstructions(): string {
return "Items can be removed from this list box by selecting them and activating 'Remove selected values' button. Items can be added by selecting them in the adjacent combobox.";
},
expandButtonTitle(): string {
return 'Expand';
}
};
const dictionaries = new Map<string, Dictionary>();
dictionaries.set('en_us', EN_US);
export function getDictionary(dict?: string | undefined): Dictionary {
const fallback: Dictionary = dictionaries.get('en_us') as Dictionary;
if (!dict) {
return fallback;
}
if (typeof dict === 'string') {
const instance = dictionaries.get(dict);
return instance ? instance : fallback;
} else {
return dict;
}
}