<!--
Copyright (C) 2017 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="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
<script src="../../../scripts/rootElement.js"></script>

<dom-module id="gr-autocomplete-dropdown">
  <template>
    <style>
      :host {
        background: #fff;
        box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
        position: absolute;
        z-index: 104;
      }
      /* This must be set here vs. the container component because in some cases
      the element is moved in the DOM to a base element and is no longer a
      child of its original parent. */
      :host(.fixed){
        position: fixed;
      }
      ul {
        list-style: none;
      }
      li {
        cursor: pointer;
        padding: .5em .75em;
      }
      li:focus {
        outline: none;
      }
      li.selected {
        background-color: #eee;
      }
    </style>
    <div id="suggestions" role="listbox">
      <ul>
        <template is="dom-repeat" items="[[suggestions]]">
          <li data-index$="[[index]]"
              data-value$="[[item.dataValue]]"
              tabindex="-1"
              aria-label$="[[item.name]]"
              role="option"
              on-tap="_handleTapItem">[[item.text]]</li>
        </template>
      </ul>
    </div>
    <gr-cursor-manager
        id="cursor"
        index="{{index}}"
        cursor-target-class="selected"
        scroll-behavior="never"
        focus-on-move
        stops="[[_suggestionEls]]"></gr-cursor-manager>
  </template>
  <script src="gr-autocomplete-dropdown.js"></script>
</dom-module>
