<!--
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">

<dom-module id="gr-button">
  <template strip-whitespace>
    <style>
      :host {
        background-color: #f5f5f5;
        border: 1px solid #d1d2d3;
        border-radius: 2px;
        box-sizing: border-box;
        color: #333;
        cursor: pointer;
        display: inline-block;
        font-family: var(--font-family);
        font-size: 12px;
        font-weight: bold;
        outline-width: 0;
        padding: .4em .85em;
        position: relative;
        text-align: center;
        -moz-user-select: none;
        -ms-user-select: none;
        -webkit-user-select: none;
        user-select: none;
      }
      :host([hidden]) {
        display: none;
      }
      :host([primary]),
      :host([secondary]) {
        color: #fff;
      }
      :host([primary]) {
        background-color: #4d90fe;
        border-color: #3079ed;
      }
      :host([secondary]) {
        background-color: #d14836;
        border-color: transparent;
      }
      :host([small]) {
        font-size: 12px;
      }
      :host([link]) {
        background-color: transparent;
        border: none;
        color: #00f;
        font-size: inherit;
        font-weight: normal;
        padding: 0;
        text-decoration: underline;
      }
      :host([loading]),
      :host([disabled]) {
        background-color: #efefef;
        color: #aaa;
      }
      :host([disabled]) {
        cursor: default;
      }
      :host([loading]),
      :host([loading][disabled]) {
        cursor: wait;
      }
      :host:focus:not([link]),
      :host:hover:not([link]) {
        background-color: #f8f8f8;
        border-color: #aaa;
      }
      :host(:active) {
        border-color: #d1d2d3;
        color: #aaa;
      }
      :host([primary]:focus),
      :host([secondary]:focus),
      :host([primary]:active),
      :host([secondary]:active) {
        color: #fff;
      }
      :host([primary]:focus) {
        box-shadow: 0 0 1px #00f;
        background-color: #4d90fe;
      }
      :host([primary]:not([disabled]):hover) {
        background-color: #4d90fe;
        border-color: #00F;
      }
      :host([primary]:active),
      :host([secondary]:active) {
        box-shadow: none;
      }
      :host([primary]:active) {
        border-color: #0c2188;
      }
      :host([secondary]:focus) {
        box-shadow: 0 0 1px #f00;
        background-color: #d14836;
      }
      :host([secondary]:not([disabled]):hover) {
        background-color: #c53727;
        border: 1px solid #b0281a;
      }
      :host([secondary]:active) {
        border-color: #941c0c;
      }
      :host([primary][loading]) {
        background-color: #7caeff;
        border-color: transparent;
        color: #fff;
      }
      :host([primary][disabled]) {
        background-color: #4d90fe;
        color: #fff;
        opacity: .5;
      }
    </style>
    <content></content>
  </template>
  <script src="gr-button.js"></script>
</dom-module>
