input,
input.form-control {
  &::placeholder {
    color: $input-color-placeholder;
  }
}

.form-control {

  @include input-status-colors();

  border-color: $input-border-color;
  box-shadow: none;
  color: $text-color;
  height: $form-control-height;
  padding: $form-control-padding-y $form-control-padding-x;

  &[readonly] {
    background-color: $form-control-readonly-background-color;
    border-color: $form-control-readonly-border-color;
    color: $form-control-readonly-color;

    + .input-group-append {
      > .input-group-text {
        background-color: $form-control-readonly-background-color;
        border-color: $form-control-readonly-border-color;
        color: $form-control-readonly-color;
        cursor: auto;
      }
    }
  }

  + .input-group-append {
    > .input-group-text {
      .element-status-icon.element-type-input {
        height: 18px;
        margin-right: -$margin-xs;
        position: relative;
        width: 18px;
      }
    }
  }


  &[disabled] {
    background-color: $form-control-disabled-background-color;
    border-color: $form-control-disabled-border-color;
    color: $form-control-disabled-color;

    + .input-group-append {
      > .input-group-text {
        background-color: $form-control-disabled-background-color;
        border-color: $form-control-disabled-border-color;
        color: $form-control-disabled-color;
        cursor: not-allowed;
      }
    }
  }

  &.input-validation-error {
    border-color: $validation-error !important;

    + .input-group-append {
      > .input-group-text {
        border-color: $validation-error !important;
      }
    }
  }

  &:focus {
    border-color: $form-control-focus-border-color;
    box-shadow: $outline-box-shadow rgba($form-control-focus-border-color, $outline-border-opacity);
    outline: 0;
  }
}

.element-status-icon-wrapper {
  display: flex;
  height: 100%;
  justify-content: center;
  width: 100%;
}

.element-status-icon {
  opacity: 0;
  pointer-events: none;
  position: absolute;
  transition: opacity $default-transition;

  &.in {
    opacity: 1;
  }

  &.loading {
    background: url($base-images-path + 'spinner.svg') no-repeat center;
    background-size: 20px;
  }

  &.success {
    background: url($base-icon-path + 'success-dark.svg') no-repeat center;
    background-size: 20px;
    cursor: text;
  }

  &.warning {
    background: url($base-icon-path + 'warning-dark.svg') no-repeat center;
    background-size: 20px;
    cursor: text;
  }

  &.error {
    background: url($base-icon-path + 'danger-dark.svg') no-repeat center;
    background-size: 20px;
    cursor: text;
  }

  &.element-type-button {
    height: 100%;
    position: relative;
    width: 100%;
  }

  &.element-type-div {
    @include box-shadow($container-box-shadow);
    background-color: $color-white;
    border: 1px solid $color-gray-95;
    border-radius: 50%;
    height: 38px; // 36px + 1px + 1px (border)
    top: -38px;
    transition: top $default-transition, opacity $default-transition;
    width: 38px; // 36px + 1px + 1px (border)

    &.success {
      border-color: $color-success-light;
    }

    &.warning {
      border-color: $color-warning-light;
    }

    &.error {
      border-color: $color-danger-light;
    }

    &.position-center-right {
      right: 0;
      transform: translateY(-50%);

      &.in {
        top: 50%;
      }
    }

    &.position-top-center {
      left: 50%;
      top: -38px;
      transform: translateX(-50%);

      &.in {
        top: 0;
      }
    }

    &.position-top-right {
      right: 0;
      top: -38px;

      &.in {
        top: 0;
      }
    }
  }

  &.updating-checkbox {
    background-position: left center;
    background-size: 15px;
    height: 15px;

    left: 0;
    margin-left: -5px;
    margin-top: 4px;

    width: 15px;

    &.updating-switch {
      margin-left: -19px;
      margin-top: 3px;
    }
  }
}

.input-group {

  border-radius: $input-border-radius;

  &:focus,
  &.focus {
    border-color: $form-control-focus-border-color;
    box-shadow: $outline-box-shadow rgba($form-control-focus-border-color, $outline-border-opacity);
    outline: 0;
  }

  .form-control {
    &:first-child {
      border-right: 0;
      padding-right: 0;
    }

    &:not(:first-child) {
      border-left: 0;
      padding-left: 0;
    }

    &:focus {
      box-shadow: none;
      outline: 0;
    }
  }

  .input-group-prepend,
  .input-group-append {
    > .input-group-text {
      background-color: $color-white;
      border-color: $input-border-color;
      color: $input-border-color;
      height: $form-control-height;

      &.clickable {
        cursor: pointer;
      }

      .element-status-icon {
        pointer-events: inherit;
      }
    }
  }

  .input-group-prepend > .input-group-text.no-content {
    padding-left: 0;
    padding-right: $form-control-padding-x;
  }

  .input-group-append > .input-group-text.no-content {
    padding-left: $form-control-padding-x;
    padding-right: 0;
  }
}

.field-validation-error {
  color: $validation-error;
}

input:placeholder-shown {
  text-overflow: ellipsis;
}

input[type="search"]::-webkit-search-cancel-button {
  /* Remove default */
  appearance: none;
  background: url($base-icon-path + 'cross-gray.svg') no-repeat center center;

  /* Custom styles */
  height: 10px;
  width: 10px;
}
