@import "./abstracts/variable";
@import "./abstracts/mixin";
@import "./icon.scss";

@include b(input) {
  position: relative;
  -webkit-tap-highlight-color: transparent;
  text-align: left;

  @include when(right) {
    .wd-input__inner {
      text-align: right;
    }
  }
  &::after {
    position: absolute;
    content: "";
    bottom: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: $-input-border-color;
    transform: scaleY(0.5);
    transition: background-color 0.2s ease-in-out;
  }
  @include when(not-empty) {
    &:not(.is-disabled) {
      &::after {
        background-color: $-input-not-empty-border-color;
      }
    }
  }
  @include when(textarea) {
    &::after {
      display: none;
    }
  }
  @include e(label) {
    position: relative;
    display: flex;
    width: $-input-cell-label-width;
    color: $-cell-title-color;
    margin-right: $-cell-padding;
    box-sizing: border-box;
    font-size: 0;
    flex-shrink: 0;
    line-height: $-cell-ling-height;

    @include when(required) {
      padding-left: 12px;

      &::after {
        position: absolute;
        left: 0;
        top: $-cell-wrapper-padding + 2px;
        content: "*";
        font-size: $-cell-required-size;
        line-height: 1.1;
        color: $-cell-required-color;
      }
    }
  }
  @include e(label-inner) {
    display: inline-block;
    padding: $-cell-wrapper-padding 0;
    font-size: $-input-fs;
  }
  @include e(prefix) {
    margin-right: $-input-icon-margin;
    font-size: $-input-fs;
  }
  @include e(suffix) {
    flex-shrink: 0;
    margin-left: $-input-icon-margin;

    .wd-input__clear {
      color: $-input-clear-color;
    }
  }
  @include e(block) {
    position: relative;
    display: flex;
  }
  @include when(disabled) {
    .wd-input__inner,
    .wd-input__textarea-inner {
      color: $-input-disabled-color;
      background: transparent;
    }
  }
  @include when(error) {
    .wd-input__inner,
    .wd-input__textarea-inner {
      color: $-input-error-color;
      background: transparent;
    }
  }
  @include when(no-border) {
    &::after {
      display: none;
    }
    .wd-input__inner {
      height: $-input-inner-height-no-border;
      padding-top: 0;
      padding-bottom: 0;
    }
  }
  @include when(cell) {
    display: flex;
    align-items: flex-start;
    padding: 0 $-input-cell-padding;
    background-color: $-input-cell-bg;
    @include halfPixelBorder("bottom", $-input-cell-padding);

    &.is-error::after {
      background: $-input-cell-border-color;
    }
    .wd-input__textarea,
    .wd-input__block {
      flex: 1;
    }
    .wd-input__icon {
      height: $-input-cell-height;
      line-height: $-input-cell-height;
    }
    .wd-input__prefix {
      display: inline-block;
      margin-right: $-cell-icon-right;
    }
    .wd-input__inner {
      height: $-input-cell-height;
    }
    &.wd-input::after {
      display: none;
    }
    .wd-input__textarea {
      padding: 13px 0 36px 0;
    }
    .wd-input__textarea-inner {
      padding-right: 24px;
    }
    .wd-input__textarea-suffix {
      right: 0;
    }
    @include when(center) {
      align-items: center;
    }
  }
  // 大尺寸 16px
  @include when(large) {
    .wd-input__prefix {
      font-size: $-input-fs-large;
    }
    .wd-input__label-inner {
      font-size: $-input-fs-large;
    }
    .wd-input__inner {
      font-size: $-input-fs-large;
      height: $-input-cell-height-large;
    }
    .wd-input__textarea-inner {
      font-size: $-input-fs-large;
    }
    .wd-input__count {
      font-size: $-input-count-fs-large;
    }
    .wd-input__textarea-count {
      font-size: $-input-count-fs-large;
    }
    .wd-input__icon {
      height: $-input-cell-height-large;
      font-size: $-input-icon-size-large;
      line-height: $-input-cell-height-large;
    }
    .wd-input__textarea-icon {
      font-size: $-input-icon-size-large;
    }
  }
  @include e(inner) {
    display: block;
    width: 1px; // 真机上，input有默认宽度，input的默认宽度会将右侧插槽挤出屏幕
    flex: 1;
    height: $-input-inner-height;
    padding: $-input-inner-padding;
    font-size: $-input-fs;
    color: $-input-color;
    font-weight: $-input-fw;

    outline: none;
    border: none;
    box-sizing: border-box;

    &::-webkit-input-placeholder {
      color: $-input-placeholder-color;
    }
  }
  @include e(icon) {
    display: inline-block;
    margin-left: 8px;
    font-size: $-input-icon-size;
    color: $-input-icon-color;
    vertical-align: middle;
    height: $-input-inner-height;
    line-height: $-input-inner-height;
    background: $-input-bg;

    &:first-child {
      margin-left: 0;
    }
  }
  @include e(count) {
    margin-left: 15px;
    font-size: $-input-count-fs;
    color: $-input-count-color;
    vertical-align: middle;
    height: $-input-inner-height;
    line-height: $-input-inner-height;
    background: $-input-bg;
  }
  @include e(count-current) {
    color: $-input-count-current-color;

    @include when(error) {
      color: $-input-error-color;
    }
  }

  @include e(textarea) {
    position: relative;
    padding: $-input-textarea-padding;
    font-size: 0;
    background: $-input-bg;

    @include when(show-limit) {
      padding-bottom: 36px;
    }
    @include when(text-auto) {
      padding: $-input-inner-padding;

      .wd-input__textarea-suffix {
        right: 0;
        top: auto;
        bottom: 9px;
        i {
          line-height: $-input-icon-size;
        }
      }
    }
  }
  @include e(textarea-inner) {
    width: 100%;
    padding: 0;
    font-size: $-input-fs;
    line-height: 1.43;
    color: $-input-color;
    overflow: auto;
    outline: none;
    box-sizing: border-box;
    border: none;

    &::-webkit-input-placeholder {
      color: $-input-placeholder-color;
    }
    @include when(suffix) {
      padding-right: $-input-textarea-padding + $-input-icon-size;
    }
  }
  @include e(textarea-suffix) {
    position: absolute;
    right: 14px;
    top: $-input-textarea-padding;
    bottom: 0;
    z-index: 1;
    .wd-input__clear {
      color: $-input-clear-color;
    }
  }
  @include e(textarea-icon) {
    margin-left: 8px;
    font-size: $-input-icon-size;
    line-height: 20px;
    color: $-input-icon-color;
    background: $-input-bg;
  }
  @include e(textarea-count) {
    position: absolute;
    bottom: 8px;
    right: 0;
    font-size: $-input-count-fs;
    color: $-input-count-color;
    background: $-input-bg;
    line-height: 20px;
    width: max-content;
  }
  @include e(textarea-count-current) {
    color: $-input-count-current-color;

    @include when(error) {
      color: $-input-error-color;
    }
  }
}
