.#{$ns}ButtonGroup {
  position: relative;
  display: inline-flex;
  vertical-align: middle;

  > .#{$ns}Button {
    position: relative;
    flex: 0 1 auto;
  }

  > .#{$ns}Button {
    @include hover {
      z-index: 1;
    }

    &:focus,
    &:active,
    &.active,
    &.is-active {
      z-index: 1;
    }
  }

  .#{$ns}Button + .#{$ns}Button,
  .#{$ns}Button + .#{$ns}ButtonGroup,
  .#{$ns}ButtonGroup + .#{$ns}Button,
  .#{$ns}ButtonGroup + .#{$ns}ButtonGroup {
    margin-left: calc(var(--Button-borderWidth) * -1);
  }

  &--block {
    display: block;
  }
}

.#{$ns}ButtonToolbar {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: center;

  .#{$ns}ButtonGroup {
    margin-left: var(--gap-xs);
    margin-top: var(--gap-xs);
    width: auto;
  }
}

.#{$ns}ButtonGroup {
  > .#{$ns}Button:first-child {
    margin-left: 0;
  }

  // cxd的ButtonGroup的is-active和:active样式不一样，这里做个兼容
  .#{$ns}Button--primary.is-active {
    color: var(--ButtonGroup--primary-isActive-color);
    background: var(--ButtonGroup--primary-isActive-bg);
  }

  > .#{$ns}Button:not(:last-child),
  > .#{$ns}ButtonGroup:not(:last-child) > .#{$ns}Button {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }

  > .#{$ns}Button:not(:first-child),
  > .#{$ns}ButtonGroup:not(:first-child) > .#{$ns}Button {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }
}

.#{$ns}ButtonGroup--vertical {
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;

  .#{$ns}Button,
  .#{$ns}ButtonGroup {
    width: 100%;
  }

  > .#{$ns}Button + .#{$ns}Button,
  > .#{$ns}Button + .#{$ns}ButtonGroup,
  > .#{$ns}ButtonGroup + .#{$ns}Button,
  > .#{$ns}ButtonGroup + .#{$ns}ButtonGroup {
    margin-top: calc(var(--Button-borderWidth) * -1);
    margin-left: 0;
  }

  > .#{$ns}Button:not(:last-child),
  > .#{$ns}ButtonGroup:not(:last-child) > .#{$ns}Button {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
  }

  > .#{$ns}Button:not(:first-child),
  > .#{$ns}ButtonGroup:not(:first-child) > .btn {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
}

.#{$ns}ButtonGroupControl {
  display: inline-block;

  > .#{$ns}ButtonGroup--sm {
    margin-top: calc((var(--Form-input-height) - var(--Button--sm-height)) / 2);
  }

  > .#{$ns}ButtonGroup--xs {
    margin-top: calc((var(--Form-input-height) - var(--Button--xs-height)) / 2);
  }
}
