@use 'sass:color';

$numeric-skin-name: $skin-name !default;
$numeric-input-icon-size: 14px !default;
$numeric-input-bigger-icon-size: 16px !default;
$numric-zero-padding-margin: 0 !default;
$numeric-bigger-min-height: 40px !default;
$numeric-min-height: 33px !default;
$numeric-zero-height: 0 !default;

$numeric-prepend-label-bottom-top: 15px !default;
$numeric-prepend-label-top-top: 15px !default;
$numeric-prepend-outline-label-bottom-top: 15px !default;
$numeric-prepend-outline-label-top-top: 15px !default;
$numeric-prepend-filled-label-bottom-top: 15px !default;
$numeric-prepend-filled-label-top-top: 17px !default;
$numeric-bigger-prepend-label-bottom-top: 18px !default;
$numeric-bigger-prepend-label-top-top: 15px !default;
$numeric-bigger-prepend-outline-label-bottom-top: 18px !default;
$numeric-bigger-prepend-outline-label-top-top: 15px !default;
$numeric-bigger-prepend-filled-label-bottom-top: 18px !default;
$numeric-bigger-prepend-filled-label-top-top: 17px !default;

.e-numeric-container {
  width: 100%;
}

.e-content-placeholder.e-numeric.e-placeholder-numeric {
  background-size: 300px 33px;
  min-height: $numeric-min-height;
}

// Hidden element styles
.e-float-input.e-input-group.e-control-wrapper.e-numeric .e-numeric-hidden,
.e-input-group.e-control-wrapper.e-numeric .e-numeric-hidden,
.e-float-input.e-control-wrapper.e-numeric .e-numeric-hidden,
.e-float-input.e-input-group.e-control-wrapper.e-numeric.e-input-focus .e-numeric-hidden,
.e-input-group.e-control-wrapper.e-numeric.e-input-focus .e-numeric-hidden,
.e-float-input.e-control-wrapper.e-numeric.e-input-focus .e-numeric-hidden {
  border: 0;
  height: $numeric-zero-height;
  margin: $numric-zero-padding-margin;
  padding: $numric-zero-padding-margin;
  text-indent: 0;
  visibility: hidden;
  width: $numric-zero-padding-margin;
}

div.e-numeric.e-input-group,
span.e-numeric.e-input-group {
  &.e-prepend-wrapper,
  &.e-append-wrapper {
    &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
      top: $numeric-prepend-label-bottom-top;
    }

    &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
      top: $numeric-prepend-label-top-top;
    }

    &.e-outline {
      &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
        top: $numeric-prepend-outline-label-bottom-top;
      }

      &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
        top: $numeric-prepend-outline-label-top-top;
      }
    }

    &.e-filled {
      &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
        top: $numeric-prepend-filled-label-bottom-top;
      }

      &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
        top: $numeric-prepend-filled-label-top-top;
      }
      @if ($skin-name == 'Material3') {
        div.e-prepend-template {
          padding: 18px 8px 8px 0;
        }
        div.e-append-template {
          padding: 18px 0 8px 8px;
        }
      }
    }
  }
}

@if ($skin-name == 'tailwind3' or $skin-name == 'fluent2' or $skin-name == 'FluentUI') {
  .e-numeric.e-input-group.e-prepend-wrapper.e-filled input,
  .e-numeric.e-input-group.e-append-wrapper.e-filled input {
    height: auto;
  }
}

.e-numeric.e-input-group.e-prepend-wrapper.e-input-focus input.e-input,
.e-numeric.e-input-group.e-prepend-wrapper input.e-input {
  padding-left: 0;
}

.e-numeric.e-rtl.e-input-group.e-prepend-wrapper.e-input-focus input.e-input,
.e-numeric.e-rtl.e-input-group.e-prepend-wrapper input.e-input {
  padding-right: 0;
}

@include export-module('numerictextbox-theme') {
  .e-numeric.e-control-wrapper {
    #{if(&, '&', '*')}.e-input-group:not(.e-disabled):active:not(.e-success):not(.e-warning):not(.e-error):not(.e-input-focus) {
      @if $numeric-skin-name == 'bootstrap' {
        border-color: $input-group-full-border-color;
        box-shadow: none;
      }
    }

    #{if(&, '&', '*')}.e-input-group .e-input-group-icon {
      font-size: $numeric-input-icon-size;
    }
  }

  .e-small {
    #{if(&, '&', '*')} .e-control-wrapper.e-numeric.e-input-group .e-input-group-icon,
    #{if(&, '&', '*')}.e-control-wrapper.e-numeric.e-input-group .e-input-group-icon {
      @if ($input-skin-name == 'FluentUI') {
        font-size: $numeric-input-small-icon-size;
      }
    }
  }
}

@include export-module('numerictextbox-tailwind-icons') {
  .e-input-group-icon.e-spin-up::before {
    content: '\e776';
    font-family: 'e-icons';
  }

  .e-input-group-icon.e-spin-down::before {
    content: '\e729';
    font-family: 'e-icons';
  }
}

@include export-module('numerictextbox-bigger') {

  .e-bigger.e-content-placeholder.e-numeric.e-placeholder-numeric,
  .e-bigger .e-content-placeholder.e-numeric.e-placeholder-numeric {
    background-size: 300px 40px;
    min-height: $numeric-bigger-min-height;
  }

  .e-bigger {
    #{if(&, '&', '*')} .e-control-wrapper.e-numeric.e-input-group .e-input-group-icon,
    #{if(&, '&', '*')}.e-control-wrapper.e-numeric.e-input-group .e-input-group-icon {
      font-size: $numeric-input-bigger-icon-size;
    }
  }

  .e-small.e-bigger .e-control-wrapper.e-numeric.e-input-group .e-input-group-icon,
  .e-small.e-bigger.e-control-wrapper.e-numeric.e-input-group .e-input-group-icon,
  .e-small .e-bigger.e-control-wrapper.e-numeric.e-input-group .e-input-group-icon,
  .e-bigger .e-small.e-control-wrapper.e-numeric.e-input-group .e-input-group-icon {
    @if ($input-skin-name == 'FluentUI') {
      font-size: $numeric-input-bigger-small-icon-size;
    }
  }

  div.e-bigger.e-numeric.e-input-group,
  .e-bigger div.e-numeric.e-input-group,
  span.e-bigger.e-numeric.e-input-group,
  .e-bigger span.e-numeric.e-input-group {
    &.e-prepend-wrapper,
    &.e-append-wrapper {
      &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
        top: $numeric-bigger-prepend-label-bottom-top;
      }

      &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
        top: $numeric-bigger-prepend-label-top-top;
      }

      &.e-outline {
        &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
          top: $numeric-bigger-prepend-outline-label-bottom-top;
        }

        &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
          top: $numeric-bigger-prepend-outline-label-top-top;
        }
      }

      &.e-filled {
        &.e-float-input.e-control-wrapper label.e-float-text.e-label-bottom {
          top: $numeric-bigger-prepend-filled-label-bottom-top;
        }

        &.e-float-input.e-control-wrapper label.e-float-text.e-label-top {
          top: $numeric-bigger-prepend-filled-label-top-top;
        }
      }
    }
  }
}