@import 'theme/default';
@import 'theme/font';
@import './animation';

.zent-cascader {
  display: inline-block;

  &--open {
    .zent-cascader__select-text {
      @include theme-color(border-color, primary, 3);
      @include theme-shadow(focus);

      .zenticon {
        transform: rotate(180deg) translateY(50%);
      }
    }
  }

  &--disabled {
    .zent-cascader__select {
      .zent-cascader__select-text {
        @include theme-color(color, stroke, 4);
        @include theme-color(border-color, stroke, 5);
        @include theme-color(background-color, stroke, 8);

        cursor: not-allowed;
      }
    }
  }

  &__select {
    cursor: pointer;
    display: inline-block;
    font-size: 0;
    position: relative;
    text-align: left;
    user-select: none;
    width: 260px;
    vertical-align: middle;

    &-text {
      @include theme-color(border-color, stroke, 5);
      @include theme-color(background-color, stroke, 9);
      box-sizing: border-box;
      border-width: 1px;
      border-style: solid;
      border-radius: 2px;
      display: inline-block;
      min-height: 30px;
      line-height: 1.5;
      max-height: 76px;
      padding: 5px 30px 5px 10px;
      transition: border-color 0.25s;
      width: 100%;
      position: relative;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-size: $font-size-normal;

      &-content {
        line-height: inherit;
      }

      &.zent-cascader--placeholder {
        @include theme-color(color, stroke, 4);
      }

      .zenticon {
        @include theme-color(color, stroke, 3);
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        transition: transform 0.25s;
        font-size: $font-size-h4;
      }
    }
  }

  &__menu {
    @include theme-color(border-right, stroke, 5);
    display: inline-block;
    vertical-align: top;
    min-width: 111px;
    height: 180px;
    list-style: none;
    margin: 0;
    padding: 0;
    border-right-width: 1px;
    border-right-style: solid;
    overflow: auto;

    &-item {
      @include theme-color(color, stroke, 1);
      font-size: $font-size-normal;
      cursor: pointer;
      white-space: nowrap;
      transition: all 0.3s;
      position: relative;
      height: 32px;
      line-height: 30px;
      text-align: left;
      padding-left: 10px;
      padding-right: 30px;
      box-sizing: border-box;

      &-icon {
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        color: $theme-stroke-4;
        font-size: 12px;
      }

      &-loading {
        width: 12px;
        height: 12px;
        margin-top: -6px;
        position: absolute;
        display: inline-block;
        animation: zent-cp-ani-spin 1s infinite linear;
        border: 1px solid $theme-stroke-4;
        border-radius: 50%;
        right: 10px;
        top: 50%;
        border-top-color: transparent;
        box-sizing: border-box;
      }

      &:hover {
        @include theme-color(background-color, stroke, 8);
      }

      &--active {
        @include theme-color(background-color, primary, 8);
        font-weight: 600;
      }
    }
  }

  &__list {
    font-size: 0;
    padding: 10px 4px;
    min-height: 80px;

    &-item {
      display: inline-block;
      line-height: 30px;
      height: 30px;
      width: 108px;
      box-sizing: border-box;
    }

    &-link {
      cursor: pointer;
      display: inline-block;
      font-size: $font-size-normal;
      padding: 0 5px;
      line-height: 24px;
      vertical-align: middle;
      max-width: 98px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;

      &:hover:not(.zent-cascader__list-link--active) {
        @include theme-color(background-color, stroke, 8);
      }

      &--active {
        @include theme-color(background-color, primary, 8);
        @include theme-color(color, stroke, 1);
        font-weight: $font-weight-medium;
        border-radius: 2px;
      }
    }
  }

  &__tabs {
    .zent-tabs {
      &-nav {
        margin-bottom: 0;
      }

      &-nav-content {
        height: auto;
      }

      &-tab {
        border-radius: 0;
      }
    }
  }

  &__popup {
    z-index: 2000;

    &-inner {
      @include theme-color(background-color, stroke, 9);
      @include theme-shadow(layer);
      width: 440px;
      box-sizing: border-box;

      &-menu {
        width: auto;
        white-space: nowrap;
      }
    }
  }

  &__loading {
    position: relative;
    vertical-align: middle;

    &-label {
      line-height: 16px;
      display: inline-block;
      vertical-align: middle;
    }

    &-icon {
      @include theme-color(border-color, primary, 3);
      display: inline-block;
      position: relative;
      vertical-align: middle;
      height: 12px;
      width: 12px;
      border-radius: 50%;
      border-width: 1px;
      border-style: solid;
      margin-left: 5px;

      &:after {
        content: '';
        display: inline-block;
        position: absolute;
        height: 10px;
        width: 4px;
        background: white;
        animation: 1s linear zent-cascader-ani-spin infinite;
        transform-origin: 8px 3px;
        left: -1px;
        top: 4px;
      }
    }
  }
}
