@import './mixins/mixins.scss';
@import './themes/vars.scss';

@mixin base-select-size-mixin ($size) {
  @include m($size + '-size') {
    @include b(scrollbar-container) {
      max-height: map-get($map: $--n-height, $key: $size) * 7.6;
    }
    @include b(base-select-option) {
      height: map-get($map: $--n-height, $key: $size);
      line-height: map-get($map: $--n-height, $key: $size);
      font-size: map-get($map: $--n-font-size, $key: $size);
    }
    @include b(base-select-menu-light-bar) {
      height: map-get($map: $--n-height, $key: $size);
      line-height: map-get($map: $--n-height, $key: $size);
      font-size: map-get($map: $--n-font-size, $key: $size);
    }
  }
}

@include themes-mixin {
  @include b(base-select-menu) {
    @include once {
      @include base-select-size-mixin("small");
      @include base-select-size-mixin("medium");
      @include base-select-size-mixin("large");
      @include base-select-size-mixin("huge");
      outline: none;
      margin-top: 4px;
      margin-bottom: 4px;
      z-index: 0;
      position: relative;
      border-radius: 6px;
      transition: background-color .3s $--n-ease-in-out-cubic-bezier;
      @include b(base-select-menu-option-wrapper) {
        position: relative;
        width: 100%;
      }
      @include b(base-select-menu-light-bar-wrapper) {
        position: absolute;
        left: 0px;
        right: 0px;
        top: 0;
        bottom: 0;
        overflow: hidden;
        border-radius: 6px;
      }
      /** transition of menu light bar */
      .n-base-select-menu-light-bar--transition-enter-active {
        transition: opacity .15s $fast-in-cubic-bezier, top .3s $--n-ease-in-out-cubic-bezier!important;
      }
      .n-base-select-menu-light-bar--transition-leave-active {
        transition: opacity .15s $slow-out-cubic-bezier, top .3s $--n-ease-in-out-cubic-bezier!important;
      }
      .n-base-select-menu-light-bar--transition-enter, .n-base-select-menu-light-bar--transition-leave-to {
        opacity: 0;
      }
    }
    background-color: $--base-select-menu-background-color;
    box-shadow: $--base-select-menu-box-shadow;
    @include b(base-select-option) {
      cursor: pointer;
      position: relative;
      padding: 0px 14px;
      white-space: nowrap;
      transition: color .3s $--n-ease-in-out-cubic-bezier;
      color: map-get($map: $--base-select-menu-option-color, $key: "default");
      @include m(selected) {
        color: map-get($map: $--base-select-menu-option-color, $key: "selected");
      }
      @include m(disabled) {
        color: map-get($map: $--base-select-menu-option-color, $key: "disabled");
        &::after {
          display: none;
        }
        @include m(selected) {
          color: map-get($map: $--base-select-menu-option-color, $key: "disabled-selected");
          &::after {
            border-right: 1px solid map-get($map: $--base-select-menu-option-color, $key: "disabled-selected");
            border-bottom: 1px solid map-get($map: $--base-select-menu-option-color, $key: "disabled-selected");
            display: block;
          }
        }
        cursor: not-allowed;
      }
      @include m(no-data) {
        color: map-get($map: $--base-select-menu-option-color, $key: "disabled");
        text-align: center;
        pointer-events: none;
      }
      @include m(not-found) {
        color: map-get($map: $--base-select-menu-option-color, $key: "disabled");
        text-align: center;
        pointer-events: none;

      }
      @include m(loading) {
        color: map-get($map: $--base-select-menu-option-color, $key: "disabled");
        text-align: center;
        pointer-events: none;
      }
    }
    @include b(base-select-menu-light-bar) {
      transition: background-color .3s $--n-ease-in-out-cubic-bezier, top .15s $--n-ease-in-out-cubic-bezier;
      position: absolute;
      width: 100%;
      background-color: $--base-select-menu-light-bar-background-color;
      top: 0;
      left: 0;
    }
    @include m(multiple) {
      @include b(base-select-option) {
        position: relative;
        transition: color .3s $--n-ease-in-out-cubic-bezier;
        padding-right: 28px;
        &::after {
          @include once {
            content: '';
            height: 6px;
            width: 3px;
            position: absolute;
            right: 14px;
            transform: rotate(45deg) scale(.5);
            top: calc(50% - 4px);
            opacity: 0;
            transition: transform .3s $--n-ease-in-out-cubic-bezier, opacity .3s $--n-ease-in-out-cubic-bezier;
          }
          border-right: 1px solid $--base-select-menu-option-check-mark-color;
          border-bottom: 1px solid $--base-select-menu-option-check-mark-color;
        }
        @include m(selected) {
          background: none;
          &::after {
            opacity: 1;
            transform: rotate(45deg) scale(1);
          }
        }
        &:active {
          color: map-get($map: $--base-select-menu-option-color, $key: "active");
        }
      }
    }
  }
}