constructor(parentContainer, name, onChange, values) {
    super(parentContainer, name, onChange, /* isTextArea= */ false);
    // This element is not literally a datalist, as those are not supported on
    // all platforms (and they also have no MDL style support).
    // Instead, this is using the third-party "awesomplete" module, which acts
    // as a text field with autocomplete selection.
    const awesomplete = new Awesomplete(this.input_);
    awesomplete.list = values.slice(); // Make a local copy of the values list.
    awesomplete.minChars = 0;
    this.input_.addEventListener('focus', () => {
      // By default, awesomplete does not show suggestions on focusing on the
      // input, only on typing something.
      // This manually updates the suggestions, so that they will show up.
      awesomplete.evaluate();
    });
    this.input_.addEventListener('awesomplete-selectcomplete', () => {
      onChange(this.input_, this);
    });
  }
@param {!shakaDemo.InputContainer} parentContainer
@param {string} name
@param {function(!HTMLInputElement, !shakaDemo.Input)} onChange
@param {!Array<string>} values