//
// Copyright 2019 Stijn de Witt. Some rights reserved.
// Licensed under the MIT Open Source license. 
// https://opensource.org/licenses/MIT
// See LICENSE for details.
//
// Based on code copyright 2018 Google Inc. All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// http://www.apache.org/licenses/LICENSE-2.0
// See LICENSE-MDC for details.
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under these licenses is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the licenses for the specific language governing permissions and
// limitations under these licenses.
// 

@import "../animation/variables";
@import "../floating-label/mdc-floating-label";
@import "../line-ripple/mdc-line-ripple";
@import "../notched-outline/mdc-notched-outline";
@import "../ripple/common";
@import "../ripple/mixins";
@import "../rtl/mixins";
@import "../theme/variables";
@import "../typography/mixins";
@import "../typography/variables";
@import "./functions";
@import "./helper-text/mdc-text-field-helper-text";
@import "./icon/mdc-text-field-icon";
@import "./mixins";
@import "./variables";

// postcss-bem-linter: define text-field

.mdc-text-field {
  @include mdc-text-field-bottom-line-color($mdc-text-field-bottom-line-idle);
  @include mdc-text-field-hover-bottom-line-color($mdc-text-field-bottom-line-hover);
  @include mdc-text-field-line-ripple-color_(primary);
  @include mdc-text-field-ink-color($mdc-text-field-ink-color);
  @include mdc-text-field-label-color($mdc-text-field-label);
  @include mdc-text-field-helper-text-color($mdc-text-field-helper-text-color);
  @include mdc-text-field-fullwidth-bottom-line-color($mdc-text-field-fullwidth-bottom-line-color);
  @include mdc-text-field-icon-color($mdc-text-field-icon-color);

  display: inline-block;
  position: relative;
  margin-bottom: 8px;
  will-change: opacity, transform, color;
}

.mdc-text-field__input {
  @include typography(subtitle1);

  width: 100%;
  height: 30px;
  padding: 20px 0 1px;
  transition: mdc-text-field-transition(opacity);
  border: none;
  border-bottom: 1px solid;
  border-radius: 0;
  background: none;
  appearance: none;

  &::placeholder {
    transition: mdc-text-field-transition(color);
    opacity: 1;
  }

  &:focus {
    outline: none;
  }

  // Remove red outline on firefox
  &:invalid {
    box-shadow: none;
  }

  // Move label when text-field gets autofilled in Chrome
  // stylelint-disable plugin/selector-bem-pattern
  &:-webkit-autofill + .mdc-floating-label {
    transform: translateY(-100%) scale(.75);
    cursor: auto;
  }
  // stylelint-enable plugin/selector-bem-pattern
}

.mdc-text-field--outlined {
  @include mdc-text-field-outlined_;
}

.mdc-text-field--outlined.mdc-text-field--focused {
  @include mdc-text-field-outlined-focused_;
}

.mdc-text-field--outlined.mdc-text-field--disabled {
  @include mdc-text-field-outlined-disabled_;
}

.mdc-text-field--outlined.mdc-text-field--dense {
  @include mdc-text-field-outlined-dense_;
}

.mdc-text-field--box {
  @include mdc-text-field-box_;
}

.mdc-text-field--box.mdc-text-field--disabled {
  @include mdc-text-field-box-disabled_;
}

.mdc-text-field--box.mdc-text-field--dense {
  @include mdc-text-field-box-dense_;
}

.mdc-text-field--with-leading-icon {
  @include mdc-text-field-with-leading-icon_;
}

.mdc-text-field--with-leading-icon.mdc-text-field--outlined {
  @include mdc-text-field-outlined-with-leading-icon_;
}

.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-text-field--dense {
  @include mdc-text-field-outlined-dense-with-leading-icon_;
}

.mdc-text-field--with-trailing-icon {
  @include mdc-text-field-with-trailing-icon_;
}

// stylelint-disable plugin/selector-bem-pattern
.mdc-text-field--with-leading-icon.mdc-text-field--dense .mdc-text-field__icon,
.mdc-text-field--with-trailing-icon.mdc-text-field--dense .mdc-text-field__icon {
  bottom: 16px;
  transform: scale(.8);
}
// stylelint-enable plugin/selector-bem-pattern

.mdc-text-field--with-leading-icon.mdc-text-field--dense {
  @include mdc-text-field-dense-with-leading-icon_;
}

.mdc-text-field--with-trailing-icon.mdc-text-field--dense {
  @include mdc-text-field-dense-with-trailing-icon_;
}

.mdc-text-field--upgraded:not(.mdc-text-field--fullwidth):not(.mdc-text-field--box) {
  display: inline-flex;
  position: relative;
  align-items: flex-end;
  box-sizing: border-box;
  margin-top: 16px;

  // stylelint-disable-next-line selector-max-specificity
  &:not(.mdc-text-field--textarea):not(.mdc-text-field--outlined) {
    height: 48px;
  }
}

.mdc-text-field--dense {
  @include mdc-text-field-dense_;
}

@include mdc-required-text-field-label-asterisk_ {
  margin-left: 1px;
  content: "*";
}

.mdc-text-field--textarea {
  @include mdc-text-field-textarea_;
}

.mdc-text-field--fullwidth {
  @include mdc-text-field-fullwidth_;
}

.mdc-text-field--fullwidth.mdc-text-field--invalid {
  @include mdc-text-field-fullwidth-invalid_;
}

// postcss-bem-linter: define text-field-helper-text

.mdc-text-field-helper-text {
  // stylelint-disable plugin/selector-bem-pattern
  .mdc-text-field--dense + & {
    margin-bottom: 4px;
  }

  .mdc-text-field--box + &,
  .mdc-text-field--outlined + & {
    margin-right: 16px;
    margin-left: 16px;
  }

  // stylelint-enable plugin/selector-bem-pattern
}

// postcss-bem-linter: end

// mdc-form-field tweaks to align text field label correctly
// stylelint-disable selector-max-type
.mdc-form-field > .mdc-text-field + label {
  align-self: flex-start;
}
// stylelint-enable selector-max-type

.mdc-text-field--focused {
  @include mdc-text-field-focused_;
}

.mdc-text-field--textarea.mdc-text-field--focused {
  @include mdc-text-field-textarea-stroke-color(primary);
}

.mdc-text-field--invalid {
  @include mdc-text-field-invalid_;
}

.mdc-text-field--textarea.mdc-text-field--invalid {
  @include mdc-text-field-textarea-invalid_;
}

.mdc-text-field--outlined.mdc-text-field--invalid {
  @include mdc-text-field-outlined-invalid_;
}

.mdc-text-field--disabled {
  @include mdc-text-field-disabled_;
}

.mdc-text-field--textarea.mdc-text-field--disabled {
  @include mdc-text-field-textarea-disabled_;
}

@include mdc-floating-label-shake-keyframes(text-field-box, $mdc-text-field-box-label-position-y);
@include mdc-floating-label-shake-keyframes(text-field-box-dense, $mdc-text-field-box-dense-label-position-y, 0%, $mdc-text-field-dense-label-scale);
@include mdc-floating-label-shake-keyframes(text-field-outlined, $mdc-text-field-outlined-label-position-y);
@include mdc-floating-label-shake-keyframes(text-field-outlined-dense, $mdc-text-field-outlined-dense-label-position-y, 0%, $mdc-text-field-dense-label-scale);
@include mdc-floating-label-shake-keyframes(text-field-outlined-leading-icon, $mdc-text-field-outlined-label-position-y, $mdc-text-field-outlined-with-leading-icon-label-position-x);
@include mdc-floating-label-shake-keyframes(text-field-outlined-leading-icon-dense, $mdc-text-field-outlined-dense-label-position-y, $mdc-text-field-outlined-dense-with-leading-icon-label-position-x, $mdc-text-field-dense-label-scale);
@include mdc-floating-label-shake-keyframes(text-field-outlined-leading-icon-rtl, $mdc-text-field-outlined-label-position-y, -$mdc-text-field-outlined-with-leading-icon-label-position-x);
@include mdc-floating-label-shake-keyframes(text-field-outlined-leading-icon-dense-rtl, $mdc-text-field-outlined-dense-label-position-y, -$mdc-text-field-outlined-dense-with-leading-icon-label-position-x, $mdc-text-field-dense-label-scale);
@include mdc-floating-label-shake-keyframes(textarea, $mdc-text-field-textarea-label-position-y, 0%, $mdc-text-field-textarea-label-scale);
