<!--
@license
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/paper-input/paper-input.html">
<link rel="import" href="../../../behaviors/fire-behavior/fire-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.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="../../shared/gr-icons/gr-icons.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-autocomplete">
  <template>
    <style include="shared-styles">
      .searchIcon {
        display: none;
      }
      .searchIcon.showSearchIcon {
        display: inline-block;
      }
      iron-icon {
        margin: 0 var(--spacing-xs);
      }
      paper-input:not(.borderless) {
        border: 1px solid var(--border-color);
      }
      paper-input {
        height: var(--line-height-normal);
        width: 100%;
        @apply --gr-autocomplete;
        --paper-input-container: {
          padding: 0;
        }
        --paper-input-container-input: {
          font-size: var(--font-size-normal);
          /* paper-input insists on adding 1px above and below such that we have
             to substract that to get a line height that is consistent with
             normal text. */
          line-height: calc(var(--line-height-normal) - 2px);
        }
        --paper-input-container-underline: {
          display: none;
        };
        --paper-input-container-underline-focus: {
          display: none;
        };
        --paper-input-container-underline-disabled: {
          display: none;
        };
      }
      paper-input.warnUncommitted {
        --paper-input-container-input: {
          color: var(--error-text-color);
          font-size: inherit;
        }
      }
    </style>
    <paper-input
        no-label-float
        id="input"
        class$="[[_computeClass(borderless)]]"
        disabled$="[[disabled]]"
        value="{{text}}"
        placeholder="[[placeholder]]"
        on-keydown="_handleKeydown"
        on-focus="_onInputFocus"
        on-blur="_onInputBlur"
        autocomplete="off">

      <!-- prefix as attribute is required to for polymer 1 -->
      <div slot="prefix" prefix>
        <iron-icon
          icon="gr-icons:search"
          class$="searchIcon [[_computeShowSearchIconClass(showSearchIcon)]]">
        </iron-icon>
      </div>
    </paper-input>
    <gr-autocomplete-dropdown
        vertical-align="top"
        vertical-offset="[[verticalOffset]]"
        horizontal-align="left"
        id="suggestions"
        on-item-selected="_handleItemSelect"
        on-keydown="_handleKeydown"
        suggestions="[[_suggestions]]"
        role="listbox"
        index="[[_index]]"
        position-target="[[_inputElement]]">
    </gr-autocomplete-dropdown>
  </template>
  <script src="gr-autocomplete.js"></script>
</dom-module>
