<!--
Copyright (C) 2016 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../shared/gr-autocomplete-dropdown/gr-autocomplete-dropdown.html">
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-autocomplete">
  <template>
    <style include="shared-styles">
      input {
        font-size: 1em;
        height: 100%;
        width: 100%;
        @apply --gr-autocomplete;
      }
      input.borderless,
      input.borderless:focus {
        border: none;
        outline: none;
      }
      input.warnUncommitted {
        color: red;
      }
    </style>
    <div>
      <input
          id="input"
          class$="[[_computeClass(borderless)]]"
          is="iron-input"
          disabled$="[[disabled]]"
          bind-value="{{text}}"
          placeholder="[[placeholder]]"
          on-keydown="_handleKeydown"
          on-focus="_onInputFocus"
          on-blur="_onInputBlur"
          autocomplete="off"/>
      <gr-autocomplete-dropdown
          vertical-align="top"
          vertical-offset="20"
          horizontal-align="auto"
          id="suggestions"
          on-item-selected="_handleItemSelect"
          on-keydown="_handleKeydown"
          suggestions="[[_suggestions]]"
          role="listbox"
          index="[[_index]]"
          position-target="[[_inputElement]]">
      </gr-autocomplete-dropdown>
    </div>
  </template>
  <script src="gr-autocomplete.js"></script>
</dom-module>
