@use 'ej2-base/styles/common/mixin' as *;
@mixin button-size($size) {
  height: $size;
  width: $size;
}

@mixin handle-style($bg-color, $border-color) {
  background-color: $bg-color;
  border-color: $border-color;
}

@include export-module('slider-theme') {

  .e-control-wrapper.e-slider-container {
    @if ($skin-name == 'material' or $skin-name == 'material-dark' or $skin-name == 'Material3' or $skin-name == 'Material3-dark') {
      &.e-material-slider .e-slider .e-handle.e-handle-first,
      &.e-material-slider .e-slider .e-handle.e-handle-second {
        background: transparent;
        border-color: transparent;
        @if $skin-name == 'Material3' or $skin-name == 'Material3-dark' {
          box-shadow: none;
        }
      }
    }

    .e-slider-button {
      background-color: $slider-button-bg-color;
      border: 1px solid $slider-button-border-color;
      box-sizing: border-box;
      cursor: pointer;
      outline: none;
      position: absolute;
      @if ($skin-name == 'tailwind' or $skin-name == 'bootstrap4' or $skin-name == 'bootstrap5'  or $skin-name == 'bootstrap5.3' or $skin-name == 'FluentUI' or $skin-name == 'fluent2' or $skin-name == 'Material3') {
        @include button-size($slider-button-size);
      }
      @else {
        @include button-size(18px);
      }
      @if ($skin-name == 'tailwind' or $skin-name == 'bootstrap5' or $skin-name == 'bootstrap5.3') {
        border-radius: $slider-slide-button-radius;
        box-shadow: $slider-button-shadow;
      }
      @else {
        border-radius: $slider-full-radius;
      }
      @if ($skin-name == 'Material3') {
        padding: 4px;
        border: none;
      }
      @else if $skin-name == 'fluent2' {
        padding: 4px;
      }
      @else if ($skin-name != 'Material3') {
        padding: 0;
      }
      @if ($skin-name == 'bootstrap4') {
        border: 0;
      }

      @if ($skin-name == 'highcontrast' or $skin-name == 'highcontrast-light') {
        &:hover {
          border-color: $slider-range-bar-color;
        }
  
        &:hover,
        &:active {
          background-color: $slider-range-bar-color;
    
          .e-button-icon::before {
            color: $slider-button-icon-font-color;
          }
        }
      }

      @if ($skin-name == 'fluent2') {
        &:hover {
          background-color: $slider-button-hover-bg-color;
          border-color: $slider-button-hover-border-color;
          .e-button-icon::before {
            color: $slider-button-icon-hover-color;
          }
        }
        &:active {
          background-color: $slider-button-active-bg-color;
          border-color: $slider-button-active-border-color;
          .e-button-icon::before {
            color: $slider-button-icon-active-color;
          }
        }
      }
    }

    @if ($skin-name == 'tailwind') {
      &:not(.e-disabled) {
        .e-slider-button {
          &:hover {
            background-color: $secondary-bg-color-hover;
          }

          &:active {
            background-color: $secondary-bg-color-pressed;
          }
        }
      }
    }

    .e-slider {
      .e-range {
        background-color: $slider-range-bar-color;
        @if ($skin-name == 'fluent2')  {
          border: 1px solid $slider-range-border-color;
        }
        @if ($skin-name == 'highcontrast' or $skin-name == 'highcontrast-light') {
          border-radius: 4px;
        }

        &.e-tab-range {
          @if $skin-name == 'fabric' or $skin-name == 'fabric-dark' or $skin-name == 'highcontrast' or $skin-name == 'highcontrast-light' or $skin-name == 'FluentUI' {
            background-color: $slider-tab-range-color;
          }
        }
      }

      .e-handle {
        background-color: $slider-handle-bg-color;
        @if ($skin-name == 'bootstrap' or $skin-name == 'bootstrap-dark' or $skin-name == 'tailwind' or $skin-name == 'bootstrap5') {
          border: 1px solid $slider-normal-handle-border-color;
        }
        @if ($skin-name == 'fabric' or $skin-name == 'fabric-dark' or $skin-name == 'FluentUI' or $skin-name == 'highcontrast' or $skin-name == 'highcontrast-light') {
          border: 2px solid $slider-normal-handle-border-color;
        }
        @if ($skin-name != 'bootstrap' and $skin-name != 'bootstrap-dark' and $skin-name != 'bootstrap5' or $skin-name != 'FluentUI') {
          border-color: $slider-normal-handle-border-color;
        }

        &.e-material-tooltip {
          @include handle-style(transparent, transparent);
        }

        &.e-handle-first,
        &.e-handle-second {
          &:hover,
          &:active {
            @if ($skin-name == 'bootstrap' or $skin-name == 'bootstrap-dark') {
              @include handle-style($slider-handle-active-bg-color, $slider-handle-active-border-color);
            }
          }
        }

        &:hover {
          @if ($skin-name == 'highcontrast' or $skin-name == 'highcontrast-light') {
            @include handle-style($slider-hover-handle-color, null);
          }
          @if ($skin-name == 'bootstrap5') {
            @include handle-style($slider-hover-handle-color, $slider-hover-handle-border-color);
          }
        }

        &:active {
          @if ($skin-name == 'highcontrast' or $skin-name == 'highcontrast-light') {
            @include handle-style($slider-active-handle-bg-color, null);
          }
          @if ($skin-name == 'bootstrap5') {
            @include handle-style($slider-hover-handle-color, $slider-hover-handle-border-color);
          }
        }
      }
    }

    &.e-slider-hover {
      .e-slider-track {
        @if ($skin-name != 'highcontrast' and $skin-name != 'highcontrast-light' and $skin-name != 'bootstrap4' and $skin-name != 'fluent2') {
          background-color: $slider-hover-color;
        }
      }

      .e-range {
        @if ($skin-name != 'highcontrast' and $skin-name != 'highcontrast-light' and $skin-name != 'bootstrap4' and $skin-name != 'bootstrap5' and $skin-name != 'Material3') {
          background-color: $slider-range-bar-hover-color;
        }
      }

      .e-handle {
        @if ($skin-name != 'highcontrast' and $skin-name != 'highcontrast-light' and $skin-name != 'bootstrap4') {
          border-color: $slider-handle-hover-border-color;
        }
      }
    }

    &.e-disabled {
      @if ($skin-name == 'tailwind' or $skin-name == 'tailwind3' or $skin-name == 'fluent2') {
        .e-slider {
          .e-range {
            background: $slider-disabled-bg-color;
          }

          .e-handle {
            background: $slider-disabled-bg-color;
            @if ($skin-name != 'tailwind3') {
              border-color: $slider-disabled-bg-color;
            }
          }
        }
        @if ($skin-name == 'fluent2') {
          .e-slider-button {
            border: 1px solid $slider-button-disabled-border-color;
            background-color: $slider-button-disabled-bg-color;
          }
        }
      }
    }

    &.e-horizontal.e-disabled {
      @if ($skin-name == 'fluent2') {
        .e-slider-track {
          background-color: $slider-disabled-track-bg-color;
          border: 1px solid $slider-range-border-color;
        }

        .e-button-icon::before {
          color: $slider-button-icon-disabled-bg-color;
        }
      }
    }

    &:not(.e-disabled):not(.e-read-only):active {
      .e-handle {
        @if ($skin-name == 'fabric' or $skin-name == 'fabric-dark' or $skin-name == 'FluentUI') {
          border-color: $slider-tab-border-color;
        }
      }
  
      .e-range {
        @if ($skin-name == 'fabric' or $skin-name == 'fabric-dark' or $skin-name == 'FluentUI') {
          background-color: $slider-tab-range-color;
        }
      }
  
      .e-slider-track {
        @if ($skin-name == 'FluentUI' or $skin-name == 'fabric' or $skin-name == 'fabric-dark') {
          background-color: $slider-tab-track-color;
        }
      }
    }
  }
}
