/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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.
 */

@import "../variables";
@import "../mixins";

// The button component. Defaults to a flat button.
.mdl-button {
  background: transparent;
  border: none;
  border-radius: $button-border-radius;
  color: $button-secondary-color;
  position: relative;
  height: $button-height;
  min-width: $button-min-width;
  padding: 0 $button-padding;
  display: inline-block;
  @include typo-button();
  overflow: hidden;
  will-change: box-shadow, transform;
  transition: box-shadow 0.2s $animation-curve-fast-out-linear-in,
              background-color 0.2s $animation-curve-default,
              color 0.2s $animation-curve-default;
  outline: none;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  line-height: $button-height;
  vertical-align: middle;

  &::-moz-focus-inner {
    border: 0;
  }

  &:hover {
    background-color: $button-hover-color;
  }

  &:focus:not(:active) {
    background-color: $button-focus-color;
  }

  &:active {
    background-color: $button-active-color;
  }

  &.mdl-button--colored {
    color: $button-primary-color-alt;

    &:focus:not(:active) {
      background-color: $button-focus-color-alt;
    }
  }
}

input.mdl-button[type="submit"] {
  -webkit-appearance:none;
}

  // Raised buttons
  .mdl-button--raised {
    background: $button-primary-color;
    @include shadow-2dp();

    &:active {
      @include shadow-4dp();
      background-color: $button-active-color;
    }

    &:focus:not(:active) {
      @include focus-shadow();
      background-color: $button-active-color;
    }

    &.mdl-button--colored {
      background: $button-primary-color-alt;
      color: $button-secondary-color-alt;

      &:hover {
        background-color: $button-hover-color-alt;
      }

      &:active {
        background-color: $button-active-color-alt;
      }

      &:focus:not(:active) {
        background-color: $button-active-color-alt;
      }

      & .mdl-ripple {
        background: $button-ripple-color-alt;
      }
    }
  }


  // FABs
  .mdl-button--fab {
    border-radius: 50%;
    font-size: $button-fab-font-size;
    height: $button-fab-size;
    margin: auto;
    min-width: $button-fab-size;
    width: $button-fab-size;
    padding: 0;
    overflow: hidden;
    background: $button-primary-color;
    box-shadow: 0 1px 1.5px 0 rgba(0,0,0,0.12), 0 1px 1px 0 rgba(0,0,0,0.24);
    position: relative;
    line-height: normal;

    & .material-icons {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);
      line-height: $button-fab-font-size;
      width: $button-fab-font-size;
    }

    &.mdl-button--mini-fab {
      height: $button-fab-size-mini;
      min-width: $button-fab-size-mini;
      width: $button-fab-size-mini;
    }

    & .mdl-button__ripple-container {
      border-radius: 50%;
      // Fixes clipping bug in Safari.
      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
    }

    &:active {
      @include shadow-4dp();
      background-color: $button-active-color;
    }

    &:focus:not(:active) {
      @include focus-shadow();
      background-color: $button-active-color;
    }

    &.mdl-button--colored {
      background: $button-fab-color-alt;
      color: $button-fab-text-color-alt;

      &:hover {
        background-color: $button-fab-hover-color-alt;
      }

      &:focus:not(:active) {
        background-color: $button-fab-active-color-alt;
      }

      &:active {
        background-color: $button-fab-active-color-alt;
      }

      & .mdl-ripple {
        background: $button-fab-ripple-color-alt;
      }
    }
  }


  // Icon buttons
  .mdl-button--icon {
    border-radius: 50%;
    font-size: $button-fab-font-size;
    height: $button-icon-size;
    margin-left: 0;
    margin-right: 0;
    min-width: $button-icon-size;
    width: $button-icon-size;
    padding: 0;
    overflow: hidden;
    color: inherit;
    line-height: normal;

    & .material-icons {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(- $button-fab-font-size / 2, - $button-fab-font-size / 2);
      line-height: $button-fab-font-size;
      width: $button-fab-font-size;
    }

    &.mdl-button--mini-icon {
      height: $button-icon-size-mini;
      min-width: $button-icon-size-mini;
      width: $button-icon-size-mini;

      & .material-icons {
        top: ($button-icon-size-mini - $button-fab-font-size) / 2;
        left: ($button-icon-size-mini - $button-fab-font-size) / 2;
      }
    }

    & .mdl-button__ripple-container {
      border-radius: 50%;
      // Fixes clipping bug in Safari.
      -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
    }
  }


  // Ripples
  .mdl-button__ripple-container {
    display: block;
    height: 100%;
    left: 0px;
    position: absolute;
    top: 0px;
    width: 100%;
    z-index: 0;
    overflow: hidden;

    .mdl-button[disabled] & .mdl-ripple,
    .mdl-button.mdl-button--disabled & .mdl-ripple {
      background-color: transparent;
    }
  }

// Colorized buttons

.mdl-button--primary.mdl-button--primary {
  color: $button-primary-color-alt;
  & .mdl-ripple {
    background: $button-secondary-color-alt;
  }
  &.mdl-button--raised, &.mdl-button--fab {
    color: $button-secondary-color-alt;
    background-color: $button-primary-color-alt;
  }
}

.mdl-button--accent.mdl-button--accent {
  color: $button-fab-color-alt;
  & .mdl-ripple {
    background: $button-fab-text-color-alt;
  }
  &.mdl-button--raised, &.mdl-button--fab {
    color: $button-fab-text-color-alt;
    background-color: $button-fab-color-alt;
  }
}

// Disabled buttons

.mdl-button {
  // Bump up specificity by using [disabled] twice.
  &[disabled][disabled],
  &.mdl-button--disabled.mdl-button--disabled {
    color: $button-secondary-color-disabled;
    cursor: default;
    background-color: transparent;
  }

  &--fab {
    // Bump up specificity by using [disabled] twice.
    &[disabled][disabled],
    &.mdl-button--disabled.mdl-button--disabled {
      background-color: $button-primary-color-disabled;
      color: $button-secondary-color-disabled;
    }
  }

  &--raised {
    // Bump up specificity by using [disabled] twice.
    &[disabled][disabled],
    &.mdl-button--disabled.mdl-button--disabled {
      background-color: $button-primary-color-disabled;
      color: $button-secondary-color-disabled;
      box-shadow: none;
    }
  }
  &--colored {
    // Bump up specificity by using [disabled] twice.
    &[disabled][disabled],
    &.mdl-button--disabled.mdl-button--disabled {
      color: $button-secondary-color-disabled;
    }
  }
}

// Align icons inside buttons with text
.mdl-button .material-icons {
  vertical-align: middle;
}
