@import "../vars.less";

@height: 40px;
@horizontal-height: 70px;
@vertical-width: 256px;
@vertical-collapsed-width: 88px;
@vertical-collapsed-submenu-width: 256px;
@vertical-item-deep-0-height: 64px;
@vertical-item-height: 56px;
@vertical-item-content-height: 40px;
@bg: #fff;
@item: hive-menu-item;
@content: hive-menu-item__content;
@contentinner: hive-menu-item__contentinner;
@submenu: hive-menu-item__submenu;

// 垂直模式折叠时，第一级选中与 hover 样式
.deep-0-collapse-selected() {
  color: @primary-color;
  background: #fff;
}

.hover() {
  &:hover {
    color: @primary-color;
  }
}

.flex-center() {
  display: flex;
  align-items: center;
}


.hive-menu {
  position: relative;
  font-size: @font-size-base;
  background-color: #fff;

  &-nav {
   .clearfix();
  }

}

// 菜单项
.hive-menu-item {
  position: relative;
  cursor: pointer;
  white-space: nowrap;
  width: 100%;
  float: left;

  &__content {
    .flex-center();
    position: relative;
    transition: background-color .2s;
    line-height: @vertical-item-content-height;
    padding: 8px 0;

    .@{contentinner} {
      width: 100%;
      padding: 0 16px;
      .hover;
    }

    &-icon {
      font-size: 20px;

      .hive-icon {
        margin-left: 2px;
        margin-right: 14px;
        vertical-align: middle;
      }
    }

    &-carret {
      display: block;
      position: absolute;
      right: 0;
      top: 50%;
      transform: translateY(-50%);
      transition: transform .2s;
    }

    &--expanded &-carret {
      transform: translateY(-50%) rotate(180deg);
    }

    &.@{content}--selected .@{contentinner} {
      background: @primary-color;
      color: #fff;
    }

  }


  &--paddingdeep {
    &-0 {
      .@{content} {
        padding: 12px 0;
      }
    }

    &-1 {
      .@{contentinner} {
        padding-left: 52px;
      }
    }

    &-2 .@{contentinner} {
      padding-left: 72px;
    }

    &-3 .@{contentinner} {
      padding-left: 92px;
    }
  }
}

// vertical
.hive-menu--vertical {
  width: 256px;

  &--collapsable {
    padding-bottom: 48px;
    transition: width .2s;
  }

  .hive-menu-nav {
    padding: 0 16px;
  }

  .@{content} .@{content}-content,
  .@{content}-carret {
    transition: opacity .2s;
  }

  // 垂直模式-折叠
  &--collapsed {
    width: @vertical-collapsed-width;
    overflow: hidden;
    
    .hive-menu-nav {
      padding: 0;
    }

    .@{item}--deep-0 {
      z-index: 1;
      &.@{item}--hoverexpanded {
        z-index: 2;
        box-shadow: @shadow-level-1;
      }

      >.@{content} {
        padding: 12px 16px;
        background: #fff;
        z-index: 1;
        &--childrenselected .@{contentinner}, 
        &--selected .@{contentinner} {
          .deep-0-collapse-selected();
        }
      }

      >.@{content} .@{content}-content,
      >.@{content} .@{content}-carret {
        opacity: 0;
      }

      >.@{submenu} {
        // display: block !important;
        position: absolute;
        z-index: 0;
        top: 0;
        left: @vertical-collapsed-width;
        width: @vertical-collapsed-submenu-width;
        padding: 3px 16px;
        background: #fff;
        box-shadow: @shadow-level-1;
      }

    }


  }

  &--aftercollapsed {
    overflow: visible;

    .@{item}--deep-0>.@{content} .@{content}-content,
    .@{item}--deep-0>.@{content} .@{content}-carret {
      display: none;
    }
  }
}

// footer {
.hive-menu__footer {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 48px;
  border-top: #F0F0F0 1px dashed;
  // position: relative;
  overflow: hidden;
  cursor: pointer;

  &-carret {
    display: block;
    font-size: 16px;
    position: absolute;
    top: 16px;
    right: 16px;
    transition: all .4s ease-in-out;
  }

  &--collapsed {
    width: 100%;

    .hive-menu__footer-carret {
      right: 36px;
      transform: rotateY(180deg);
    }
  }
}

// horizontal
.hive-menu--horizontal {
  .hive-menu-header {
    float: left;
    height: @horizontal-height;
    line-height: @horizontal-height;
    width: auto;
  }
  .@{item} {
    &--deep-0 {
      float: left;
      margin: 0;
      width: auto;
      >.@{content} {
        padding: 0;
      }
      >.@{content} .@{contentinner} {
        padding: 0 24px;
        line-height: @horizontal-height;
        border-bottom: 2px solid transparent;
      }
      >.@{content} .@{content}-carret {
        right: 24px;
      }
      &.@{item}--ismenu>.@{content} .@{contentinner} {
        padding-right: 50px;
      }
      >.@{content} {
        &--childrenselected .@{contentinner}, 
        &--selected>.@{contentinner} {
          .deep-0-collapse-selected();
          border-bottom: 2px solid @primary-color;
        }
      }
      >.@{submenu} {
        // display: block !important;
        position: absolute;
        z-index: 0;
        top: 100%;
        left: 0;
        width: @vertical-collapsed-submenu-width;
        padding: 3px 16px;
        background: #fff;
        box-shadow: @shadow-level-1;
      }
    }
  }
}
