@import '../../styles/common';
@import '../../Button/styles/mixin';
@import 'mixin';

//
// Button groups
// --------------------------------------------------

// Make the div behave like a button
.@{ns}btn-group,
.@{ns}btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle; // match .btn alignment given font-size hack above

  > .@{ns}btn {
    position: relative;
    float: left;

    // Bring the "active" ghost-button to the front.
    &.@{ns}btn-ghost:hover,
    &.@{ns}btn-ghost:focus,
    &.@{ns}btn-ghost:active {
      z-index: 2;
    }
  }
}

// Force change the size of the button in the button group.
.@{ns}btn {
  .@{ns}btn-group-lg & {
    .btn-lg;
  }

  .@{ns}btn-group-sm & {
    .btn-sm;
  }

  .@{ns}btn-group-xs & {
    .btn-xs;
  }
}

.@{ns}btn-group {
  //** Buttons in the button group have no border radius
  > .@{ns}btn,
  > .@{ns}dropdown > .@{ns}dropdown-toggle > .@{ns}btn {
    border-radius: 0;
  }

  //** Horizontal Button remove border radius
  &:not(.@{ns}btn-group-vertical) > .@{ns}btn:first-child,
  &:not(.@{ns}btn-group-vertical) > .@{ns}dropdown:first-child > .@{ns}dropdown-toggle > .@{ns}btn {
    .border-left-radius(@border-radius-base);
  }

  &:not(.@{ns}btn-group-vertical) > .@{ns}btn:last-child,
  &:not(.@{ns}btn-group-vertical) > .@{ns}dropdown:last-child > .@{ns}dropdown-toggle > .@{ns}btn {
    .border-right-radius(@border-radius-base);
  }

  //** Vertical Button remove radius
  &.@{ns}btn-group-vertical > .@{ns}btn:first-child,
  &.@{ns}btn-group-vertical > .@{ns}dropdown:first-child > .@{ns}dropdown-toggle > .@{ns}btn {
    .border-top-radius(@border-radius-base);
  }

  &.@{ns}btn-group-vertical > .@{ns}btn:last-child,
  &.@{ns}btn-group-vertical > .@{ns}dropdown:last-child > .@{ns}dropdown-toggle > .@{ns}btn {
    .border-bottom-radius(@border-radius-base);
  }

  &.@{ns}btn-group-vertical > .@{ns}dropdown,
  &.@{ns}btn-group-vertical > .@{ns}dropdown-dropup {
    display: block;
  }

  .@{ns}btn + .@{ns}btn,
  .@{ns}btn + .@{ns}btn-group,
  .@{ns}btn-group + .@{ns}btn,
  .@{ns}btn-group + .@{ns}btn-group {
    margin-left: -1px;
  }
}

// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
.@{ns}btn-group > .@{ns}btn-group {
  float: left;
}

.@{ns}btn-group > .@{ns}btn-group:not(:first-child):not(:last-child) > .@{ns}btn {
  border-radius: 0;
}

.@{ns}btn-group > .@{ns}btn-group:first-child:not(:last-child) {
  > .@{ns}btn:last-child,
  > .@{ns}dropdown-toggle {
    .border-right-radius(0);
  }
}

.@{ns}btn-group > .@{ns}btn-group:last-child:not(:first-child) > .@{ns}btn:first-child {
  .border-left-radius(0);
}

// On active and open, don't show outline
.@{ns}btn-group .dropdown-toggle:active,
.@{ns}btn-group.open .dropdown-toggle {
  outline: 0;
}

// Split button dropdowns
// ----------------------
.@{ns}btn-group.@{ns}open {
  .@{ns}dropdown-toggle.@{ns}btn {
    z-index: (@zindex-dropdown+10);

    &,
    &:active,
    &:focus,
    &:hover {
      background: white;
      padding-bottom: (@padding-base-vertical+1);
    }

    &:hover {
      padding-bottom: (@padding-base-vertical+1);
    }

    &.@{ns}btn-lg {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-bottom: (@padding-large-vertical+1);
      }
    }

    &.@{ns}btn-sm {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-bottom: (@padding-small-vertical+1);
      }
    }

    &.@{ns}btn-xs {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-bottom: (@padding-extra-small-vertical+1);
      }
    }
  }

  .@{ns}dropdown-menu {
    z-index: (@zindex-dropdown+5);
  }
}

.@{ns}btn-group.@{ns}open.@{ns}dropup {
  .@{ns}dropdown-toggle.@{ns}btn {
    z-index: (@zindex-dropdown+10);

    &,
    &:active,
    &:focus,
    &:hover {
      background: white;
      padding-top: (@padding-base-vertical+1);
      padding-bottom: @padding-base-vertical;
    }

    &:hover {
      padding-top: (@padding-base-vertical+1);
      padding-bottom: @padding-base-vertical;
    }

    &.btn-lg {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-top: (@padding-large-vertical+1);
        padding-bottom: @padding-large-vertical;
      }
    }

    &.@{ns}btn-sm {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-top: (@padding-small-vertical+1);
        padding-bottom: @padding-small-vertical;
      }
    }

    &.@{ns}btn-xs {
      &,
      &:active,
      &:focus,
      &:hover {
        padding-top: (@padding-extra-small-vertical+1);
        padding-bottom: @padding-extra-small-vertical;
      }
    }
  }
}

// Give the line between buttons some depth
.@{ns}btn-group > .@{ns}btn + .@{ns}dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}

.@{ns}btn-group > .@{ns}btn-lg + .@{ns}dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}

// Reposition the caret
.@{ns}btn .@{ns}caret {
  margin-left: 0;
}

// Vertical button groups
// ----------------------

.@{ns}btn-group-vertical {
  > .@{ns}btn,
  > .@{ns}btn-group,
  > .@{ns}btn-group > .@{ns}btn {
    display: block;
    float: none;
    width: 100%;
    max-width: 100%;
  }

  // Clear floats so dropdown menus can be properly placed
  > .@{ns}btn-group {
    .clearfix;

    > .@{ns}btn {
      float: none;
    }
  }

  > .@{ns}btn + .@{ns}btn,
  > .@{ns}btn + .@{ns}btn-group,
  > .@{ns}btn-group + .@{ns}btn,
  > .@{ns}btn-group + .@{ns}btn-group {
    margin-top: -1px;
    margin-left: 0;
  }
}

// Justified button groups
// ----------------------

.@{ns}btn-group-justified {
  display: flex;
  width: 100%;

  > .@{ns}btn,
  > .@{ns}btn-group {
    flex: 1 1 1%;
    .ellipsis-basic;
  }

  > .@{ns}btn-group .@{ns}btn {
    width: 100%;
  }

  > .@{ns}btn-group .@{ns}dropdown-menu {
    left: auto;
  }

  > .@{ns}btn-ghost {
    border-left-width: 0;
    border-right-width: 0;
    position: relative;

    .btn-ghost-hack-variant(@btn-ghost-border-color);

    &::before,
    &::after {
      content: '';
      display: block;
      position: absolute;
      width: @btn-ghost-border-width;
      background-color: @btn-ghost-border-color;
      top: -1 * @btn-ghost-border-width;
      bottom: -1 * @btn-ghost-border-width;
      .btn-transition();
    }

    &::before {
      left: 0;
    }

    &::after {
      right: 0;
    }
  }

  > .@{ns}btn-ghost:first-child {
    border-left-width: @btn-ghost-border-width;

    &::before {
      display: none;
    }
  }

  > .@{ns}btn-ghost:last-child {
    border-right-width: @btn-ghost-border-width;

    &::after {
      display: none;
    }
  }
}

//suite-button-group
//------------------
.@{ns}btn-group-primary {
  .button-group-btn(@H500, @H050);
}

.@{ns}btn-group-link {
  .button-group-btn(@H500, @H050);

  // Rewrite disabled styles
  &.@{ns}btn-group {
    .@{ns}btn.disabled:hover {
      background-color: white;
      color: @H050;
    }

    .@{ns}btn-link:focus,
    .@{ns}btn-link:hover {
      color: white;
    }
  }
}
