<!--
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">
      :host {
        display: inline-block;
        font-family: var(--font-family-bold);
        font-size: 12px;
        position: relative;
      }
      :host([hidden]) {
        display: none;
      }
      :host([link]) {
        background-color: transparent;
        border: none;
        color: var(--color-link);
        font-size: inherit;
        font-family: var(--font-family-bold);
        text-transform: none;
      }
      :host([link]) paper-button {
        margin: 0;
        padding: 0;
        @apply --gr-button;
      }
      paper-button[raised] {
        background-color: var(--gr-button-background, #fff);
        color: var(--gr-button-color, --color-link);
      }
      :host([no-uppercase]) paper-button {
        text-transform: none;
      }
      /* todo (beckysiegel) switch all secondary to primary as there is no color
        distinction anymore. */
      :host([primary]) paper-button[raised],
      :host([secondary]) paper-button[raised] {
        background-color: var(--color-link);
        color: #fff;
      }
      :host([primary][disabled]) paper-button[raised],
      :host([disabled]) paper-button {
        opacity: .5;
      }
      :host([link]) paper-button:hover,
      :host([link]) paper-button:focus,
      paper-button[raised]:hover,
      paper-button[raised]:focus  {
        color: var(--gr-button-hover-color, --color-button-hover);
      }
      :host([primary]) paper-button[raised]:hover,
      :host([primary]) paper-button[raised]:focus,
      :host([secondary]) paper-button[raised]:hover,
      :host([secondary]) paper-button[raised]:focus {
        background-color: var(--gr-button-hover-background-color, --color-button-hover);
        color: var(--gr-button-color, #fff);
      }
      paper-button,
      paper-button[raised],
      paper-button[link] {
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 0;
        min-width: 0;
        padding: .4em .85em;
        @apply --gr-button;
      }
      :host([link]) paper-button {
        --paper-button: {
          padding: 0;
        }
      }
      :host:not([down-arrow]) .downArrow {display: none; }
      :host([down-arrow]) .downArrow {
        border-top: .36em solid var(--gr-button-arrow-color, #ccc);
        border-left: .36em solid transparent;
        border-right: .36em solid transparent;
        margin-bottom: .05em;
        margin-left: .5em;
        transition: border-top-color 200ms;
      }
      :host([down-arrow]) paper-button:hover .downArrow {
        border-top-color: var(--gr-button-arrow-hover-color, #666);
      }
      :host([loading]) paper-button,
      :host([disabled]) paper-button {
        color: #aaa;
      }
      :host([loading]) paper-button,
      :host([loading][disabled]) paper-button {
        cursor: wait;
        background-color: #efefef;
        color: #aaa;
      }
    </style>
    <paper-button raised="[[!link]]" disabled="[[disabled]]">
      <content></content>
      <i class="downArrow"></i>
    </paper-button>
  </template>
  <script src="gr-button.js"></script>
</dom-module>