@mixin input-group---alter() {
}

@mixin input-group() {
  display: flex;
  align-items: center;
  width: 100%;
  @include input-group---alter();
}

@mixin input-group__control---alter() {
}

@mixin input-group__control() {
  flex-grow: 1;
  flex-shrink: 1;
  width: 1%;
  &:not(:last-child) {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
  }
  &:not(:first-child) {
    border-top-left-radius: 0 !important;
    border-bottom-left-radius: 0 !important;
  }
  & + * {
    margin-left: -$form-control-border-width;
  }
  &:focus {
    z-index: 3;
  }
  @include input-group__control---alter();
}

@mixin input-group__addon---alter() {
}

@mixin input-group__addon() {
  display: flex;
  align-items: center;
  & > * {
    position: relative;
    z-index: 2;
    border-radius: $form-control-border-radius !important;
    & + * {
      margin-left: -$form-control-border-width;
    }
  }
  &:first-child {
    margin-right: -$form-control-border-width;
    order: -1;
    & > * {
      border-top-right-radius: 0 !important;
      border-bottom-right-radius: 0 !important;
      &:not(:first-child) {
        border-top-left-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
      }
    }
  }
  &:last-child {
    margin-left: -$form-control-border-width;
    order: 999;
    & > * {
      border-top-left-radius: 0 !important;
      border-bottom-left-radius: 0 !important;
      &:not(:last-child) {
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
      }
    }
  }
  @include input-group__addon---alter();
}

@mixin input-group__addon--size---alter($size) {
}

@mixin input-group__addon--size($size) {
  $border-radius: map_get_deep($form-control-sizes, $size, border-radius);
  & > * {
    border-radius: $border-radius !important;
  }
  &:first-child {
    & > * {
      border-top-right-radius: 0 !important;
      border-bottom-right-radius: 0 !important;
      &:not(:first-child) {
        border-top-left-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
      }
    }
  }
  &:last-child {
    & > * {
      border-top-left-radius: 0 !important;
      border-bottom-left-radius: 0 !important;
      &:not(:last-child) {
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
      }
    }
  }
  @include input-group__addon--size---alter($size);
}

@mixin input-group__text---alter() {
}

@mixin input-group__text() {
  @include form-control;
  white-space: nowrap;
  @include input-group__text---alter();
}

@mixin input-group__text--size---alter($size) {
}

@mixin input-group__text--size($size) {
  @include form-control--size($size);
  @include input-group__text--size---alter($size);
}
