
/**
 * Toggle
 * --------------------------------------------------
 */

.item-toggle {
  pointer-events: none;
}

.toggle {
  // set the color defaults
  @include toggle-style($toggle-on-default-border, $toggle-on-default-bg);

  position: relative;
  display: inline-block;
  pointer-events: auto;
  margin: -$toggle-hit-area-expansion;
  padding: $toggle-hit-area-expansion;

  &.dragging {
    .handle {
      background-color: $toggle-handle-dragging-bg-color !important;
    }
  }

}

.toggle {
  &.toggle-light  {
    @include toggle-style($toggle-on-light-border, $toggle-on-light-bg);
  }
  &.toggle-stable  {
    @include toggle-style($toggle-on-stable-border, $toggle-on-stable-bg);
  }
  &.toggle-positive  {
    @include toggle-style($toggle-on-positive-border, $toggle-on-positive-bg);
  }
  &.toggle-calm  {
    @include toggle-style($toggle-on-calm-border, $toggle-on-calm-bg);
  }
  &.toggle-assertive  {
    @include toggle-style($toggle-on-assertive-border, $toggle-on-assertive-bg);
  }
  &.toggle-balanced  {
    @include toggle-style($toggle-on-balanced-border, $toggle-on-balanced-bg);
  }
  &.toggle-energized  {
    @include toggle-style($toggle-on-energized-border, $toggle-on-energized-bg);
  }
  &.toggle-royal  {
    @include toggle-style($toggle-on-royal-border, $toggle-on-royal-bg);
  }
  &.toggle-dark  {
    @include toggle-style($toggle-on-dark-border, $toggle-on-dark-bg);
  }
}

.toggle input {
  // hide the actual input checkbox
  display: none;
}

/* the track appearance when the toggle is "off" */
.toggle .track {
  @include transition-timing-function(ease-in-out);
  @include transition-duration($toggle-transition-duration);
  @include transition-property((background-color, border));

  display: inline-block;
  box-sizing: border-box;
  width: $toggle-width;
  height: $toggle-height;
  border: solid $toggle-border-width $toggle-off-border-color;
  border-radius: $toggle-border-radius;
  background-color: $toggle-off-bg-color;
  content: ' ';
  cursor: pointer;
  pointer-events: none;
}

/* Fix to avoid background color bleeding */
/* (occured on (at least) Android 4.2, Asus MeMO Pad HD7 ME173X) */
.platform-android4_2 .toggle .track {
  -webkit-background-clip: padding-box;
}

/* the handle (circle) thats inside the toggle's track area */
/* also the handle's appearance when it is "off" */
.toggle .handle {
  @include transition($toggle-transition-duration cubic-bezier(0, 1.1, 1, 1.1));
  @include transition-property((background-color, transform));
  position: absolute;
  display: block;
  width: $toggle-handle-width;
  height: $toggle-handle-height;
  border-radius: $toggle-handle-radius;
  background-color: $toggle-handle-off-bg-color;
  top: $toggle-border-width + $toggle-hit-area-expansion;
  left: $toggle-border-width + $toggle-hit-area-expansion;
  box-shadow: 0 2px 7px rgba(0,0,0,.35), 0 1px 1px rgba(0,0,0,.15);

  &:before {
    // used to create a larger (but hidden) hit area to slide the handle
    position: absolute;
    top: -4px;
    left: ( ($toggle-handle-width / 2) * -1) - 8;
    padding: ($toggle-handle-height / 2) + 5 ($toggle-handle-width + 7);
    content: " ";
  }
}

.toggle input:checked + .track .handle {
  // the handle when the toggle is "on"
  @include translate3d($toggle-width - $toggle-handle-width - ($toggle-border-width * 2), 0, 0);
  background-color: $toggle-handle-on-bg-color;
}

.item-toggle.active {
  box-shadow: none;
}

.item-toggle,
.item-toggle.item-complex .item-content {
  // make sure list item content have enough padding on right to fit the toggle
  padding-right: ($item-padding * 3) + $toggle-width;
}

.item-toggle.item-complex {
  padding-right: 0;
}

.item-toggle .toggle {
  // position the toggle to the right within a list item
  position: absolute;
  top: ($item-padding / 2) + 2;
  right: $item-padding;
  z-index: $z-index-item-toggle;
}

.toggle input:disabled + .track {
  opacity: .6;
}

.toggle-small {

  .track {
    border: 0;
    width: 34px;
    height: 15px;
    background: #9e9e9e;
  }
  input:checked + .track {
    background: rgba(0,150,137,.5);
  }
  .handle {
    top: 2px;
    left: 4px;
    width: 21px;
    height: 21px;
    box-shadow: 0 2px 5px rgba(0,0,0,.25);
  }
  input:checked + .track .handle {
    @include translate3d(16px, 0, 0);
    background: rgb(0,150,137);
  }
  &.item-toggle .toggle {
    top: 19px;
  }

  .toggle-light  {
    @include toggle-small-style($toggle-on-light-bg);
  }
  .toggle-stable  {
    @include toggle-small-style($toggle-on-stable-bg);
  }
  .toggle-positive  {
    @include toggle-small-style($toggle-on-positive-bg);
  }
  .toggle-calm  {
    @include toggle-small-style($toggle-on-calm-bg);
  }
  .toggle-assertive  {
    @include toggle-small-style($toggle-on-assertive-bg);
  }
  .toggle-balanced  {
    @include toggle-small-style($toggle-on-balanced-bg);
  }
  .toggle-energized  {
    @include toggle-small-style($toggle-on-energized-bg);
  }
  .toggle-royal  {
    @include toggle-small-style($toggle-on-royal-bg);
  }
  .toggle-dark  {
    @include toggle-small-style($toggle-on-dark-bg);
  }
}
