Polymer recommends to prefer click events over Polymer tap events. Performance on initializing on-click is much better than on-tap. https://polymer-library.polymer-project.org/2.0/docs/devguide/gesture-events Change-Id: I0aec1ddcc9ad74f7880e7fd7ca0689b5c8c84796
		
			
				
	
	
		
			169 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!--
 | 
						|
@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="../../../behaviors/base-url-behavior/base-url-behavior.html">
 | 
						|
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
 | 
						|
<link rel="import" href="/bower_components/polymer/polymer.html">
 | 
						|
<link rel="import" href="/bower_components/iron-dropdown/iron-dropdown.html">
 | 
						|
<link rel="import" href="../../shared/gr-button/gr-button.html">
 | 
						|
<link rel="import" href="../../shared/gr-cursor-manager/gr-cursor-manager.html">
 | 
						|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
 | 
						|
<link rel="import" href="../../shared/gr-tooltip-content/gr-tooltip-content.html">
 | 
						|
<link rel="import" href="../../../styles/shared-styles.html">
 | 
						|
 | 
						|
<dom-module id="gr-dropdown">
 | 
						|
  <template>
 | 
						|
    <style include="shared-styles">
 | 
						|
      :host {
 | 
						|
        display: inline-block;
 | 
						|
      }
 | 
						|
      .dropdown-trigger {
 | 
						|
        text-decoration: none;
 | 
						|
        width: 100%;
 | 
						|
      }
 | 
						|
      .dropdown-content {
 | 
						|
        background-color: var(--dropdown-background-color);
 | 
						|
        box-shadow: 0 1px 5px rgba(0, 0, 0, .3);
 | 
						|
      }
 | 
						|
      gr-button {
 | 
						|
        @apply --gr-button;
 | 
						|
      }
 | 
						|
      gr-avatar {
 | 
						|
        height: 2em;
 | 
						|
        width: 2em;
 | 
						|
        vertical-align: middle;
 | 
						|
      }
 | 
						|
      gr-button[link]:focus {
 | 
						|
        outline: 5px auto -webkit-focus-ring-color;
 | 
						|
      }
 | 
						|
      ul {
 | 
						|
        list-style: none;
 | 
						|
      }
 | 
						|
      .topContent,
 | 
						|
      li {
 | 
						|
        border-bottom: 1px solid var(--border-color);
 | 
						|
      }
 | 
						|
      li:last-of-type {
 | 
						|
        border: none;
 | 
						|
      }
 | 
						|
      li .itemAction {
 | 
						|
        cursor: pointer;
 | 
						|
        display: block;
 | 
						|
        padding: .85em 1em;
 | 
						|
      }
 | 
						|
      li .itemAction {
 | 
						|
        @apply --gr-dropdown-item;
 | 
						|
      }
 | 
						|
      li .itemAction.disabled {
 | 
						|
        color: var(--deemphasized-text-color);
 | 
						|
        cursor: default;
 | 
						|
      }
 | 
						|
      li .itemAction:link,
 | 
						|
      li .itemAction:visited {
 | 
						|
        text-decoration: none;
 | 
						|
      }
 | 
						|
      li .itemAction:not(.disabled):hover {
 | 
						|
        background-color: var(--hover-background-color);
 | 
						|
      }
 | 
						|
      li:focus,
 | 
						|
      li.selected {
 | 
						|
        background-color: var(--selection-background-color);
 | 
						|
        outline: none;
 | 
						|
      }
 | 
						|
      li:focus .itemAction,
 | 
						|
      li.selected .itemAction {
 | 
						|
        background-color: transparent;
 | 
						|
      }
 | 
						|
      .topContent {
 | 
						|
        display: block;
 | 
						|
        padding: .85em 1em;
 | 
						|
        @apply --gr-dropdown-item;
 | 
						|
      }
 | 
						|
      .bold-text {
 | 
						|
        font-weight: var(--font-weight-bold);
 | 
						|
      }
 | 
						|
    </style>
 | 
						|
    <gr-button
 | 
						|
        link="[[link]]"
 | 
						|
        class="dropdown-trigger" id="trigger"
 | 
						|
        down-arrow="[[downArrow]]"
 | 
						|
        on-click="_dropdownTriggerTapHandler">
 | 
						|
      <slot></slot>
 | 
						|
    </gr-button>
 | 
						|
    <iron-dropdown id="dropdown"
 | 
						|
        vertical-align="top"
 | 
						|
        vertical-offset="[[verticalOffset]]"
 | 
						|
        allow-outside-scroll="true"
 | 
						|
        horizontal-align="[[horizontalAlign]]"
 | 
						|
        on-tap="_handleDropdownTap">
 | 
						|
      <div class="dropdown-content" slot="dropdown-content">
 | 
						|
        <ul>
 | 
						|
          <template is="dom-if" if="[[topContent]]">
 | 
						|
            <div class="topContent">
 | 
						|
              <template
 | 
						|
                  is="dom-repeat"
 | 
						|
                  items="[[topContent]]"
 | 
						|
                  as="item"
 | 
						|
                  initial-count="75">
 | 
						|
                <div
 | 
						|
                    class$="[[_getClassIfBold(item.bold)]] top-item"
 | 
						|
                    tabindex="-1">
 | 
						|
                  [[item.text]]
 | 
						|
                </div>
 | 
						|
              </template>
 | 
						|
            </div>
 | 
						|
          </template>
 | 
						|
          <template
 | 
						|
              is="dom-repeat"
 | 
						|
              items="[[items]]"
 | 
						|
              as="link"
 | 
						|
              initial-count="75">
 | 
						|
            <li tabindex="-1">
 | 
						|
              <gr-tooltip-content
 | 
						|
                  has-tooltip="[[_computeHasTooltip(link.tooltip)]]"
 | 
						|
                  title$="[[link.tooltip]]">
 | 
						|
                <span
 | 
						|
                    class$="itemAction [[_computeDisabledClass(link.id, disabledIds.*)]]"
 | 
						|
                    data-id$="[[link.id]]"
 | 
						|
                    on-tap="_handleItemTap"
 | 
						|
                    hidden$="[[link.url]]"
 | 
						|
                    tabindex="-1">[[link.name]]</span>
 | 
						|
                <a
 | 
						|
                    class="itemAction"
 | 
						|
                    href$="[[_computeLinkURL(link)]]"
 | 
						|
                    download$="[[_computeIsDownload(link)]]"
 | 
						|
                    rel$="[[_computeLinkRel(link)]]"
 | 
						|
                    target$="[[link.target]]"
 | 
						|
                    hidden$="[[!link.url]]"
 | 
						|
                    tabindex="-1">[[link.name]]</a>
 | 
						|
              </gr-tooltip-content>
 | 
						|
            </li>
 | 
						|
          </template>
 | 
						|
        </ul>
 | 
						|
      </div>
 | 
						|
    </iron-dropdown>
 | 
						|
    <gr-cursor-manager
 | 
						|
        id="cursor"
 | 
						|
        cursor-target-class="selected"
 | 
						|
        scroll-behavior="never"
 | 
						|
        focus-on-move
 | 
						|
        stops="[[_listElements]]"></gr-cursor-manager>
 | 
						|
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
 | 
						|
  </template>
 | 
						|
  <script src="gr-dropdown.js"></script>
 | 
						|
</dom-module>
 |