| <!-- |
| @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="../../../behaviors/gr-tooltip-behavior/gr-tooltip-behavior.html"> |
| <link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html"> |
| <link rel="import" href="/bower_components/paper-button/paper-button.html"> |
| <link rel="import" href="../../../styles/shared-styles.html"> |
| |
| <dom-module id="gr-button"> |
| <template strip-whitespace> |
| <style include="shared-styles"> |
| /* general styles for all buttons */ |
| :host { |
| --background-color: var(--button-background-color, var(--default-button-background-color)); |
| --text-color: var(--default-button-text-color); |
| display: inline-block; |
| position: relative; |
| } |
| :host([hidden]) { |
| display: none; |
| } |
| :host([no-uppercase]) paper-button { |
| text-transform: none; |
| } |
| paper-button { |
| /* The next lines contains a copy of paper-button style. |
| Without a copy, the @apply works incorrectly with Polymer 2. |
| @apply is deprecated and is not recommended to use. It is expected |
| that @apply will be replaced with the ::part CSS pseudo-element. |
| After replacecment copied lines can be removed. |
| */ |
| @apply --layout-inline; |
| @apply --layout-center-center; |
| position: relative; |
| box-sizing: border-box; |
| min-width: 5.14em; |
| margin: 0 0.29em; |
| background: transparent; |
| -webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
| -webkit-tap-highlight-color: transparent; |
| font: inherit; |
| text-transform: uppercase; |
| outline-width: 0; |
| border-radius: var(--border-radius); |
| -moz-user-select: none; |
| -ms-user-select: none; |
| -webkit-user-select: none; |
| user-select: none; |
| cursor: pointer; |
| z-index: 0; |
| padding: var(--spacing-m); |
| |
| @apply --paper-font-common-base; |
| @apply --paper-button; |
| /* End of copy*/ |
| |
| /* paper-button sets this to anti-aliased, which appears different than |
| bold font elsewhere on macOS. */ |
| -webkit-font-smoothing: initial; |
| align-items: center; |
| background-color: var(--background-color); |
| color: var(--text-color); |
| display: flex; |
| font-family: inherit; |
| justify-content: center; |
| margin: var(--margin, 0); |
| min-width: var(--border, 0); |
| padding: var(--padding, 4px 8px); |
| @apply --gr-button; |
| } |
| /* https://github.com/PolymerElements/paper-button/blob/2.x/paper-button.html */ |
| /* BEGIN: Copy from paper-button */ |
| paper-button[elevation="1"] { |
| @apply --paper-material-elevation-1; |
| } |
| paper-button[elevation="2"] { |
| @apply --paper-material-elevation-2; |
| } |
| paper-button[elevation="3"] { |
| @apply --paper-material-elevation-3; |
| } |
| paper-button[elevation="4"] { |
| @apply --paper-material-elevation-4; |
| } |
| paper-button[elevation="5"] { |
| @apply --paper-material-elevation-5; |
| } |
| /* END: Copy from paper-button */ |
| paper-button:hover { |
| background: linear-gradient( |
| rgba(0, 0, 0, .12), |
| rgba(0, 0, 0, .12) |
| ), var(--background-color); |
| } |
| |
| :host([primary]) { |
| --background-color: var(--primary-button-background-color); |
| --text-color: var(--primary-button-text-color); |
| } |
| :host([link][primary]) { |
| --text-color: var(--primary-button-background-color); |
| } |
| :host([secondary]) { |
| --background-color: var(--secondary-button-text-color); |
| --text-color: var(--secondary-button-background-color); |
| } |
| :host([link][secondary]) { |
| --text-color: var(--secondary-button-text-color); |
| } |
| |
| /* Keep below color definition for primary so that this takes precedence |
| when disabled. */ |
| :host([disabled]) { |
| --background-color: var(--table-subheader-background-color); |
| --text-color: var(--deemphasized-text-color); |
| cursor: default; |
| } |
| |
| /* Styles for link buttons specifically */ |
| :host([link]) { |
| --background-color: transparent; |
| --margin: 0; |
| --padding: 5px 4px; |
| } |
| :host([disabled][link]) { |
| --background-color: transparent; |
| --text-color: var(--deemphasized-text-color); |
| cursor: default; |
| } |
| |
| /* Styles for the optional down arrow */ |
| :host(:not([down-arrow])) .downArrow { |
| display: none; |
| } |
| :host([down-arrow]) .downArrow { |
| border-top: .36em solid #ccc; |
| border-left: .36em solid transparent; |
| border-right: .36em solid transparent; |
| margin-bottom: var(--spacing-xxs); |
| margin-left: var(--spacing-m); |
| transition: border-top-color 200ms; |
| } |
| :host([down-arrow]) paper-button:hover .downArrow { |
| border-top-color: var(--deemphasized-text-color); |
| } |
| </style> |
| <paper-button |
| raised="[[!link]]" |
| disabled="[[_computeDisabled(disabled, loading)]]" |
| tabindex="-1"> |
| <slot></slot> |
| <i class="downArrow"></i> |
| </paper-button> |
| </template> |
| <script src="gr-button.js"></script> |
| </dom-module> |