This fixes an issue under iOS 13 when clicking a button in the dropdown
would not work.
Bug: Issue 11984
Change-Id: I339524e1c9cde49f74c2b5228ca35ec9c0dfdece
(cherry picked from commit ed757c0e7a)
		
	
		
			
				
	
	
		
			193 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!--
 | 
						|
@license
 | 
						|
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="../../../bower_components/iron-dropdown/iron-dropdown.html">
 | 
						|
<link rel="import" href="../../../bower_components/paper-item/paper-item.html">
 | 
						|
<link rel="import" href="../../../bower_components/paper-listbox/paper-listbox.html">
 | 
						|
 | 
						|
<link rel="import" href="../../../styles/shared-styles.html">
 | 
						|
<link rel="import" href="../../shared/gr-button/gr-button.html">
 | 
						|
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
 | 
						|
<link rel="import" href="../../shared/gr-select/gr-select.html">
 | 
						|
 | 
						|
 | 
						|
<dom-module id="gr-dropdown-list">
 | 
						|
  <template>
 | 
						|
    <style include="shared-styles">
 | 
						|
      :host {
 | 
						|
        display: inline-block;
 | 
						|
      }
 | 
						|
      #triggerText {
 | 
						|
        -moz-user-select: text;
 | 
						|
        -ms-user-select: text;
 | 
						|
        -webkit-user-select: text;
 | 
						|
        user-select: text;
 | 
						|
      }
 | 
						|
      .dropdown-trigger {
 | 
						|
        cursor: pointer;
 | 
						|
        padding: 0;
 | 
						|
      }
 | 
						|
      .dropdown-content {
 | 
						|
        background-color: var(--dropdown-background-color);
 | 
						|
        box-shadow: 0 1px 5px rgba(0, 0, 0, .3);
 | 
						|
        max-height: 70vh;
 | 
						|
        margin-top: 2em;
 | 
						|
        min-width: 266px;
 | 
						|
        @apply --dropdown-content-style
 | 
						|
      }
 | 
						|
      paper-listbox {
 | 
						|
        --paper-listbox: {
 | 
						|
          padding: 0;
 | 
						|
        }
 | 
						|
      }
 | 
						|
      paper-item {
 | 
						|
        cursor: pointer;
 | 
						|
        flex-direction: column;
 | 
						|
        font-size: var(--font-size-normal);
 | 
						|
        --paper-item: {
 | 
						|
          min-height: 0;
 | 
						|
          padding: 10px 16px;
 | 
						|
        }
 | 
						|
        --paper-item-focused-before: {
 | 
						|
          background-color: var(--selection-background-color);
 | 
						|
        }
 | 
						|
        --paper-item-focused: {
 | 
						|
          background-color: var(--selection-background-color);
 | 
						|
        }
 | 
						|
      }
 | 
						|
      paper-item:hover {
 | 
						|
        background-color: var(--hover-background-color);
 | 
						|
      }
 | 
						|
      paper-item:not(:last-of-type) {
 | 
						|
        border-bottom: 1px solid var(--border-color);
 | 
						|
      }
 | 
						|
      .bottomContent {
 | 
						|
        color: var(--deemphasized-text-color);
 | 
						|
        /*
 | 
						|
         * Should be 16px when the base font size is 13px (browser default of
 | 
						|
         * 16px.
 | 
						|
         */
 | 
						|
        line-height: 1.37rem;
 | 
						|
      }
 | 
						|
      .bottomContent,
 | 
						|
      .topContent {
 | 
						|
        display: flex;
 | 
						|
        /*
 | 
						|
         * Should be 16px when the base font size is 13px (browser default of
 | 
						|
         * 16px.
 | 
						|
         */
 | 
						|
        line-height: 1.37rem;
 | 
						|
        justify-content: space-between;
 | 
						|
        flex-direction: row;
 | 
						|
        width: 100%;
 | 
						|
      }
 | 
						|
       gr-button {
 | 
						|
        --gr-button: {
 | 
						|
          @apply --trigger-style;
 | 
						|
        }
 | 
						|
      }
 | 
						|
      gr-date-formatter {
 | 
						|
        color: var(--deemphasized-text-color);
 | 
						|
        margin-left: 2em;
 | 
						|
        white-space: nowrap;
 | 
						|
      }
 | 
						|
      gr-select {
 | 
						|
        display: none;
 | 
						|
      }
 | 
						|
      /* Because the iron dropdown 'area' includes the trigger, and the entire
 | 
						|
       width of the dropdown, we want to treat tapping the area above the
 | 
						|
       dropdown content as if it is tapping whatever content is underneath it.
 | 
						|
       The next two styles allow this to happen. */
 | 
						|
      iron-dropdown {
 | 
						|
        max-width: none;
 | 
						|
        pointer-events: none;
 | 
						|
      }
 | 
						|
      paper-listbox {
 | 
						|
        pointer-events: auto;
 | 
						|
      }
 | 
						|
      @media only screen and (max-width: 50em) {
 | 
						|
        gr-select {
 | 
						|
          display: inline;
 | 
						|
          @apply --gr-select-style;
 | 
						|
        }
 | 
						|
        gr-button,
 | 
						|
        iron-dropdown {
 | 
						|
          display: none;
 | 
						|
        }
 | 
						|
        select {
 | 
						|
          @apply --native-select-style;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    </style>
 | 
						|
    <gr-button
 | 
						|
        down-arrow
 | 
						|
        link
 | 
						|
        id="trigger"
 | 
						|
        class="dropdown-trigger"
 | 
						|
        on-tap="_showDropdownTapHandler"
 | 
						|
        slot="dropdown-trigger">
 | 
						|
      <span id="triggerText">[[text]]</span>
 | 
						|
    </gr-button>
 | 
						|
    <iron-dropdown
 | 
						|
        id="dropdown"
 | 
						|
        vertical-align="top"
 | 
						|
        allow-outside-scroll="true"
 | 
						|
        on-click="_handleDropdownClick">
 | 
						|
      <paper-listbox
 | 
						|
          class="dropdown-content"
 | 
						|
          slot="dropdown-content"
 | 
						|
          attr-for-selected="value"
 | 
						|
          selected="{{value}}"
 | 
						|
          on-tap="_handleDropdownTap">
 | 
						|
        <template is="dom-repeat"
 | 
						|
            items="[[items]]"
 | 
						|
            initial-count="[[initialCount]]">
 | 
						|
          <paper-item
 | 
						|
              disabled="[[item.disabled]]"
 | 
						|
              value="[[item.value]]">
 | 
						|
            <div class="topContent">
 | 
						|
              <div>[[item.text]]</div>
 | 
						|
              <template is="dom-if" if="[[item.date]]">
 | 
						|
                  <gr-date-formatter
 | 
						|
                      date-str="[[item.date]]"></gr-date-formatter>
 | 
						|
              </template>
 | 
						|
            </div>
 | 
						|
            <template is="dom-if" if="[[item.bottomText]]">
 | 
						|
              <div class="bottomContent">
 | 
						|
                <div>[[item.bottomText]]</div>
 | 
						|
              </div>
 | 
						|
            </template>
 | 
						|
          </paper-item>
 | 
						|
        </template>
 | 
						|
      </paper-listbox>
 | 
						|
    </iron-dropdown>
 | 
						|
    <gr-select bind-value="{{value}}">
 | 
						|
      <select>
 | 
						|
        <template is="dom-repeat" items="[[items]]">
 | 
						|
          <option
 | 
						|
              disabled$="[[item.disabled]]"
 | 
						|
              value="[[item.value]]">
 | 
						|
            [[_computeMobileText(item)]]
 | 
						|
          </option>
 | 
						|
        </template>
 | 
						|
      </select>
 | 
						|
    </gr-select>
 | 
						|
  </template>
 | 
						|
  <script src="gr-dropdown-list.js"></script>
 | 
						|
</dom-module>
 |