187 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			5.6 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: var(--elevation-level-2);
 | |
|         max-height: 70vh;
 | |
|         margin-top: var(--spacing-xxl);
 | |
|         min-width: 266px;
 | |
|         @apply --dropdown-content-style;
 | |
|       }
 | |
|       paper-listbox {
 | |
|         --paper-listbox: {
 | |
|           padding: 0;
 | |
|         }
 | |
|       }
 | |
|       paper-item {
 | |
|         cursor: pointer;
 | |
|         flex-direction: column;
 | |
|         font-size: inherit;
 | |
|         // This variable was introduced in Dec 2019. We keep both min-height
 | |
|         // rules around, because --paper-item-min-height is not yet upstreamed.
 | |
|         --paper-item-min-height: 0;
 | |
|         --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);
 | |
|       }
 | |
|       .bottomContent,
 | |
|       .topContent {
 | |
|         display: flex;
 | |
|         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: var(--spacing-xxl);
 | |
|         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
 | |
|         disabled="[[disabled]]"
 | |
|         down-arrow
 | |
|         link
 | |
|         id="trigger"
 | |
|         class="dropdown-trigger"
 | |
|         on-click="_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="data-value"
 | |
|           selected="{{value}}"
 | |
|           on-tap="_handleDropdownTap">
 | |
|         <template is="dom-repeat"
 | |
|             items="[[items]]"
 | |
|             initial-count="[[initialCount]]">
 | |
|           <paper-item
 | |
|               disabled="[[item.disabled]]"
 | |
|               data-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>
 | 
