// Button groups
// *******************************************************************************

// * Split button
// *******************************************************************************

.btn-group,
.btn-group-vertical {
  &:disabled,
  &.disabled {
    opacity: 0.45;
  }
}

.dropdown-toggle-split,
.btn-lg + .dropdown-toggle-split,
.btn-group-lg > .btn + .dropdown-toggle-split,
.input-group-lg .btn + .dropdown-toggle-split,
.btn-xl + .dropdown-toggle-split,
.btn-group-xl > .btn + .dropdown-toggle-split {
  padding: 0.92em;
}

.btn-sm + .dropdown-toggle-split,
.btn-group-sm > .btn + .dropdown-toggle-split,
.input-group-sm .btn + .dropdown-toggle-split {
  padding: 0.8em;
}

.btn-xs + .dropdown-toggle-split,
.btn-group-xs > .btn + .dropdown-toggle-split {
  padding: 0.7em;
}

// * Sizing
// *******************************************************************************

.btn-group-xs > .btn {
  @extend .btn-xs;
}

.btn-group-xl > .btn {
  @extend .btn-xl;
}

// Button groups border

.btn-group > .btn-group:first-child > .btn:not([class*='btn-outline-']):first-child,
.input-group > .btn:not([class*='btn-outline-']):first-child,
:not(.btn-group):not(.input-group) > .btn-group > .btn:not([class*='btn-outline-']):first-child,
.input-group > .btn-group:first-child > .btn:not([class*='btn-outline-']):first-child {
  @include ltr-style {
    border-left-color: transparent !important;
  }
  @include rtl-style {
    border-right-color: transparent !important;
  }
}

.btn-group > .btn-group:last-child > .btn:not([class*='btn-outline-']):last-of-type,
.input-group > .btn:not([class*='btn-outline-']):last-of-type,
:not(.btn-group):not(.input-group) > .btn-group > .btn:not([class*='btn-outline-']):last-of-type,
.input-group > .btn-group:last-child > .btn:not([class*='btn-outline-']):last-of-type {
  @include ltr-style {
    border-right-color: transparent !important;
  }
  @include rtl-style {
    border-left-color: transparent !important;
  }
}

.btn-group-vertical > .btn-group-vertical:first-child > .btn:not([class*='btn-outline-']):first-child,
:not(.btn-group-vertical):not(.input-group) > .btn-group-vertical > .btn:not([class*='btn-outline-']):first-child {
  @include ltr-style {
    border-top-color: transparent !important;
  }
}

.btn-group-vertical > .btn-group-vertical:last-child > .btn:not([class*='btn-outline-']):last-child,
:not(.btn-group-vertical):not(.input-group) > .btn-group-vertical > .btn:not([class*='btn-outline-']):last-child {
  @include ltr-style {
    border-bottom-color: transparent !important;
  }
}

.btn-group-vertical > .btn-group-vertical:first-child > .btn:not([class*='btn-outline-']):first-child,
:not(.btn-group-vertical):not(.input-group) > .btn-group-vertical > .btn:not([class*='btn-outline-']):first-child {
  border-top-color: transparent !important;
}

.btn-group-vertical > .btn-group-vertical:last-child > .btn:not([class*='btn-outline-']):last-of-type,
:not(.btn-group-vertical):not(.input-group) > .btn-group-vertical > .btn:not([class*='btn-outline-']):last-of-type {
  border-bottom-color: transparent !important;
}

// * RTL
// *******************************************************************************

@include rtl-only {
  .btn-group .btn[class] {
    @include border-radius($border-radius);
  }

  .btn-group .btn-xs[class],
  .btn-group-xs .btn[class] {
    @include border-radius($border-radius-xs);
  }

  .btn-group .btn-sm[class],
  .btn-group-sm .btn[class] {
    @include border-radius($border-radius-sm);
  }

  .btn-group .btn-lg[class],
  .btn-group-lg .btn[class] {
    @include border-radius($border-radius-lg);
  }

  .btn-group .btn-xl[class],
  .btn-group-xl .btn[class] {
    @include border-radius($border-radius-xl);
  }

  .btn-group {
    // Prevent double borders when buttons are next to each other
    > .btn:not(:first-child),
    > .btn-group:not(:first-child) {
      margin-left: 0;
      margin-right: calc(#{$btn-border-width} * -1);
    }

    // Reset rounded corners
    > .btn:not(:last-child):not(.dropdown-toggle),
    > .btn-group:not(:last-child) > .btn {
      @include border-start-radius(0);
    }

    // The left radius should be 0 if the button is:
    // - the "third or more" child
    // - the second child and the previous element isn't `.btn-check` (making it the first child visually)
    // - part of a btn-group which isn't the first child
    > .btn:nth-child(n + 3),
    > :not(.btn-check) + .btn,
    > .btn-group:not(:first-child) > .btn {
      @include border-end-radius(0);
    }
  }

  .btn-group-vertical {
    // Reset rounded corners
    > .btn:not(:last-child):not(.dropdown-toggle),
    > .btn-group:not(:last-child) > .btn {
      @include border-bottom-radius(0);
    }

    > .btn ~ .btn,
    > .btn-group:not(:first-child) > .btn {
      @include border-top-radius(0);
    }
  }
}