access-nyc-patterns
Version:
User Interface Patterns for Benefits Access
60 lines (50 loc) • 1.77 kB
JavaScript
;
import Autocomplete from '../../utilities/autocomplete/autocomplete';
/**
* The InputAutocomplete class.
*/
class InputAutocomplete {
/**
* @param {object} settings This could be some configuration options.
* for the pattern module.
* @constructor
*/
constructor(settings = {}) {
this.library = new Autocomplete({
options: (settings.hasOwnProperty('options'))
? settings.options : InputAutocomplete.options,
selected: (settings.hasOwnProperty('selected'))
? settings.selected : false,
selector: (settings.hasOwnProperty('selector'))
? settings.selector : InputAutocomplete.selector,
classname: (settings.hasOwnProperty('classname'))
? settings.classname : InputAutocomplete.classname,
});
return this;
}
/**
* Setter for the Autocomplete options
* @param {object} reset Set of array options for the Autocomplete class
* @return {object} InputAutocomplete object with new options.
*/
options(reset) {
this.library.settings.options = reset;
return this;
}
/**
* Setter for the Autocomplete strings
* @param {object} localizedStrings Object containing strings.
* @return {object} Autocomplete strings
*/
strings(localizedStrings) {
Object.assign(this.library.STRINGS, localizedStrings);
return this;
}
}
/** @type {array} Default options for the autocomplete class */
InputAutocomplete.options = [];
/** @type {string} The search box dom selector */
InputAutocomplete.selector = '[data-js="input-autocomplete__input"]';
/** @type {string} The classname for the dropdown element */
InputAutocomplete.classname = 'input-autocomplete__dropdown';
export default InputAutocomplete;