37 lines
923 B
JavaScript
37 lines
923 B
JavaScript
/**
|
|
* An autocomplete suggestion
|
|
*/
|
|
class Suggestion extends String {
|
|
/**
|
|
* @param { Any } data - The auto-complete data. Ideally an object e.g. { label, value },
|
|
* which specifies the value and human-presentable label of the suggestion.
|
|
* @param { string } query - The query string being auto-completed
|
|
*/
|
|
constructor (data, query) {
|
|
super();
|
|
const o = Array.isArray(data)
|
|
? { label: data[0], value: data[1] }
|
|
: typeof data === 'object' && 'label' in data && 'value' in data
|
|
? data
|
|
: { label: data, value: data };
|
|
|
|
this.label = o.label || o.value;
|
|
this.value = o.value;
|
|
this.query = query;
|
|
}
|
|
|
|
get lenth () {
|
|
return this.label.length;
|
|
}
|
|
|
|
toString () {
|
|
return '' + this.label;
|
|
}
|
|
|
|
valueOf () {
|
|
return this.toString();
|
|
}
|
|
}
|
|
|
|
export default Suggestion;
|