@import "../vars.less";
@import "../mixins/index.less";

@icon-color: #bfbfbf;

.input-active() {
  z-index: 1;
  border-color: @primary-color;
}

.hive-input {
  position: relative;
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
  width: 100%;

  // input content
  &__input {
    flex: 1;
    display: flex;
    border: @border-main;
    background: #fff;
    min-height: @input-height-default;
    border-radius: @input-border-radius-default;
    overflow: hidden;

    &-icon,
    &-prefix,
    &-suffix {
      display: inline-block;
      flex: none;
      max-width: 100%;
    }
  }

  &__input-input {
    flex: 1;
    width: 0;
    display: inline-block;
    max-width: 100%;
    // height: @input-inner-height;
    padding: 9px 8px;
    background-color: transparent;
    color: @text-color;
    border: none;
    border-radius: 0;
    font-size: @font-size-base;
    line-height: 20 / 14;
    outline: none;
    &::-webkit-outer-spin-button,
    &::-webkit-inner-spin-button {
        /* display: none; <- Crashes Chrome on hover */
        -webkit-appearance: none;
        margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
    }
    
    &[type=number] {
        -moz-appearance:textfield; /* Firefox */
    }
    .placeholder();

    &[readonly] {
      cursor: default;
    }

    &[disabled],
    &[disabled]:hover,
    &[disabled]:focus,
    &[disabled]:active {
      background: transparent;
      color: @disabled-color;
      cursor: not-allowed;
    }
  }

  // &__input--prefixicon &__input-input {
  //   padding-left: 0!important;
  // }

  &:not(&-tag) &__input--suffixicon &__input-input {
    padding-right: 0!important;
  }

  &__input-icon {
    box-sizing: content-box;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 7px;
    width: 24px;
    height: 24px;
    font-size: 18px;
    line-height: 24px;
    text-align: center;
    color: @icon-color;

    .hive-icon {
      display: block;
    }

    &--prefix {
      padding-left: 8px;
    }

    &--suffix {
      padding-right: 8px;
    }
  }

  &__input-close {
    cursor: pointer;
    outline: none;
    color: @icon-color;
  }

  // prefix & suffix
  &__prefix,
  &__suffix {
    flex: none;
    padding: 0px 18px;
    height: @input-height-default;
    font-size: @font-size-base;
    line-height: @input-height-default;
    background: #f7f7f7;
    border: @border-main;
    text-align: center;
  }

  &__prefix {
    border-right: none;
  }

  &__suffix {
    border-left: none;
  }

  // input size
  &--size-small {
    .hive-input {
      &__input {
        min-height: @input-height-small;
        border-radius: @input-border-radius-small;

        &-input {
          padding: 5px 8px;
        }

        &-icon {
          margin-top: 3px;
          text-align: center;

          &--prefix {
            padding-left: 7px;
          }
      
          &--suffix {
            padding-right: 7px;
          }
        }
      }

      &__prefix,
      &__suffix {
        height: @input-height-small;
        line-height: @input-height-small;
      }
    }
  }

  // input active
  .hive-input__input--focused:not(.hive-input__input--disabled),
  .hive-input__input:not(.hive-input__input--disabled):hover {
    .input-active();
    .hive-input {
      .hive-input__input-icon {
        color: @primary-color;
      }
    }
  }

  // input disabled
  &__input--disabled {
    background: #fbfbfb;
    border-color: @disabled-color;
    color: @disabled-color;
    cursor: not-allowed;
  }

  &--disabled {
    cursor: not-allowed;

    .hive-input {

      &__prefix,
      &__suffix {
        border-color: @disabled-color;
      }
    }
  }


  // error 
  &__input--status-error {
    border-color: @error-color;
  }

  // with suffix
  &--with-suffix {
    .hive-input__input {
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
    }
    .hive-input__suffix {
      border-top-right-radius: @input-border-radius-default;
      border-bottom-right-radius: @input-border-radius-default;
    }

    &.hive-input--size-small {
      .hive-input__suffix {
        border-top-right-radius: @input-border-radius-small;
        border-bottom-right-radius: @input-border-radius-small;
      }
    }
  }
  // with prefix
  &--with-prefix {
    .hive-input__input {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
    }
    .hive-input__prefix {
      border-top-left-radius: @input-border-radius-default;
      border-bottom-left-radius: @input-border-radius-default;
    }

    &.hive-input--size-small {
      .hive-input__prefix {
        border-top-left-radius: @input-border-radius-small;
        border-bottom-left-radius: @input-border-radius-small;
      }
    }
  }
}

.hive-input-number {
  // width: initial;

  &__action {
    // position: absolute;
    // z-index: 2;
    height: 100%;
    top: 1px;
    right: 1px;
    width: 24px;

    a {
      position: relative;
      display: block;
      -webkit-appearance: none;
      border: @border-main;
      border-right: none;
      background: #fff;
      width: 100%;
      height: 19px;
      overflow: hidden;
      outline: none;
      color: transparent;
      cursor: pointer;

      &:after {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
      }
    }

    a&-up {
      border-top-color: transparent;
      border-bottom: none;

      &:after {
        .triangle(up, 10px, 6px, #9d9d9d);
      }

      &:hover:not(.hive-input-number__action--disabled)::after,
      &:active:after {
        border-bottom-color: @primary-color;
      }
    }

    a&-down {
      border-bottom-color: transparent;

      &:after {
        .triangle(down, 10px, 6px, #9d9d9d);
      }

      &:hover:not(.hive-input-number__action--disabled)::after,
      &:active:after {
        border-top-color: @primary-color;
      }
    }

    a&--disabled {
      background-color: #f5f5f5;
      cursor: not-allowed;
    }
  }

  &.hive-input--disabled {
    .hive-input-number {
      &__action {
        opacity: 0;
        pointer-events: none;
      }
    }
  }

  &.hive-input--size-small {
    .hive-input-number__action a {
      height: 15px;
    }
  }
}

.hive-input-tag {
  .hive-input {
    &__input {
      display: block;
      position: relative;

      &-input {
        width: calc(0.75em + 40px);
        max-width: 100%;
      }

      &-icon--suffix {
        position: absolute;
        right: 0px;
        margin: 0;
        bottom: 50%;
        transform: translateY(50%);
      }

      &--suffixicon>input {
        padding-right: 32px;
      }

      &-suffix {
        position: relative;
      }
    }
  }

  .hive-tag {
    margin-top: 7px;
    margin-bottom: 7px;
  }

  &--empty {
    .hive-input__input-input {
      width: 100%;
    }
  }

  
  &__input-mirror {
    position: absolute;
    top: 0;
    left: 0;
    visibility: hidden;
    white-space: pre;
    opacity: 0;
    pointer-events: none;
    font-size: @font-size-base;
    line-height: 20 / 14;
    font-family: sans-serif;
  }

  .hive-tag:first-child {
    margin-left: 9px;
  }

  &.hive-input--disabled {
    &.hive-input-tag {
      .hive-tag {
        opacity: 0.7;
        cursor: not-allowed;
        pointer-events: none;
      }
    }
  }
}

.hive-input-textarea {
  .hive-input__input {
    &-input {
      height: auto;
      resize: vertical;
      min-height: 36px;
    }
  }
  .hive-input-textarea__limit {
    position: absolute;
    right: 8px;
    bottom: 10px;
  }
}

.hive-input-search {
  .hive-input__input {
    &-icon {
      font-size: 24px;
    }
  }
  .hive-input-textarea__limit {
    position: absolute;
    right: 8px;
    bottom: 10px;
  }
}

.hive-input-group {
  display: inline-block;
  position: relative;

  .hive-input {
    width: auto;
  }

  .hive-input+.hive-input {
    margin-left: 4px;
  }

  &__collapse {
    .hive-input+.hive-input {
      margin-left: -1px;
    }

    .hive-input__input {
      border-radius: 0;
    }

    .hive-input:first-child:not(.hive-input--with-prefix) .hive-input__input{
      border-top-left-radius: @input-border-radius-default;
      border-bottom-left-radius: @input-border-radius-default;
    }

    .hive-input:last-child:not(.hive-input--with-suffix) .hive-input__input {
      border-top-right-radius: @input-border-radius-default;
      border-bottom-right-radius: @input-border-radius-default;
    }

    .hive-input--size-small {
      &.hive-input:first-child .hive-input__input {
        border-top-left-radius: @input-border-radius-small;
        border-bottom-left-radius: @input-border-radius-small;
      }

      &.hive-input:last-child .hive-input__input {
        border-top-right-radius: @input-border-radius-small;
        border-bottom-right-radius: @input-border-radius-small;
      }
    }
  }

}
