<!--
@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 .25em;
      }
      paper-input:not(.borderless) {
        border: 1px solid var(--border-color);
      }
      paper-input {
        height: 100%;
        width: 100%;
        @apply --gr-autocomplete;
        --paper-input-container: {
          padding: 0;
        }
        --paper-input-container-input: {
          font-size: var(--font-size-normal);
        }
        --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: var(--font-size-normal);
        }
      }
    </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">

      <template is="dom-if" if="[[_isPolymer2()]]">
        <!-- Content uses vertical-align:baseline. If iron-icon is placed
          directly in the slot and is not visible,  vertical-align doesn't
          work, because display:none convert it from inline-block element to
          block element. To fix this problem, iron-icon is wrapped in div
          which never changes display type.
          The problem doesn't exist in Polymer1 because DOM is different.
          Applying the same fix to Polymer1 breaks vertical-align.
        -->
        <div slot="prefix">
          <iron-icon
            icon="gr-icons:search"
            class$="searchIcon [[_computeShowSearchIconClass(showSearchIcon)]]">
          </iron-icon>
        </div>
      </template>
      <template is="dom-if" if="[[!_isPolymer2()]]">
        <iron-icon
          prefix
          icon="gr-icons:search"
          class$="searchIcon [[_computeShowSearchIconClass(showSearchIcon)]]">
        </iron-icon>
      </template>

    </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>
