$menu-item-height: 40px;
@include b(menu) {
position: relative;
padding: 8px 0;
outline: none;
&:not(#{&}--horizontal) {
overflow: hidden auto;
}
@include m(horizontal) {
display: inline-block;
min-width: 100%;
white-space: nowrap;
&::after {
position: absolute;
right: 4px;
bottom: 10px;
left: 4px;
height: 1px;
pointer-events: none;
content: '';
background-color: var(--#{$rd-prefix}background-color-indicator);
}
}
@include e(empty) {
display: flex;
align-items: center;
height: $menu-item-height;
color: var(--#{$rd-prefix}color-disabled);
}
@include e(item) {
position: relative;
display: flex;
align-items: center;
height: $menu-item-height;
margin: 0;
list-style: none;
cursor: pointer;
transition: height var(--#{$rd-prefix}animation-duration-base) linear, color var(--#{$rd-prefix}animation-duration-base) linear,
background-color var(--#{$rd-prefix}animation-duration-base) linear;
&:hover {
color: var(--#{$rd-prefix}color-primary);
}
&:not(.#{$rd-prefix}menu__item--horizontal):hover {
background-color: var(--#{$rd-prefix}background-color-primary-hover);
}
@include when(active) {
color: var(--#{$rd-prefix}color-primary);
&:not(.#{$rd-prefix}menu__item--horizontal) {
@include e(indicator) {
& > div::before {
transform: scaleY(1);
}
}
}
}
@include when(disabled) {
pointer-events: none;
filter: opacity(50%);
}
@include m(horizontal) {
display: inline-flex;
min-width: unset;
padding: 0 20px;
&::after {
position: absolute;
right: 20px;
bottom: -3px;
left: 20px;
z-index: 1;
height: 2px;
content: '';
background-color: transparent;
transition: background-color var(--#{$rd-prefix}animation-duration-base) linear,
transform var(--#{$rd-prefix}animation-duration-base) linear;
transform: scaleX(0.8);
}
@include when(active) {
&::after {
background-color: var(--#{$rd-prefix}color-primary);
transform: scaleX(1);
}
}
@include e(item-content) {
flex-shrink: 0;
}
}
@include m(icon) {
height: 52px;
@include e(item-icon) {
width: 48px;
padding-left: 4px;
font-size: 24px;
}
}
@include m(basic) {
padding: 0 16px;
&.#{$rd-prefix}menu__item--horizontal {
&:hover::after {
background-color: var(--#{$rd-prefix}color-primary);
transform: scaleX(1);
}
}
}
@include m(sub) {
&:not(.#{$rd-prefix}menu__item--horizontal) {
padding-right: 32px;
}
&.#{$rd-prefix}menu__item--horizontal {
@include when(expand) {
&::after {
background-color: var(--#{$rd-prefix}color-primary);
transform: scaleX(1);
}
}
}
&.#{$rd-prefix}menu__item--icon {
@include e(sub-arrow) {
opacity: 0;
}
}
@include when(expand) {
color: var(--#{$rd-prefix}color-primary);
}
}
}
@include e(indicator) {
position: relative;
width: 0;
height: 100%;
& > div {
position: absolute;
left: -8px;
width: 2px;
height: 100%;
background-color: var(--#{$rd-prefix}background-color-indicator);
&::before {
position: absolute;
top: 8px;
left: 0;
display: block;
width: 2px;
height: calc(100% - 16px);
content: '';
background-color: var(--#{$rd-prefix}color-primary);
transition: transform var(--#{$rd-prefix}animation-duration-base) linear;
transform: scaleY(0);
}
}
@include m(first) {
& > div {
bottom: 0;
height: calc(100% - 8px);
&::before {
top: 0;
height: calc(100% - 8px);
transform-origin: top;
}
}
}
@include m(last) {
& > div {
top: 0;
height: calc(100% - 8px);
&::before {
bottom: 0;
height: calc(100% - 8px);
transform-origin: bottom;
}
}
}
}
@include e(item-icon) {
flex-shrink: 0;
width: calc(1.1em + 8px);
font-size: 1.1em;
transition: width var(--#{$rd-prefix}animation-duration-base) linear, padding var(--#{$rd-prefix}animation-duration-base) linear,
font-size var(--#{$rd-prefix}animation-duration-base) linear;
transform-origin: left;
}
@include e(item-content) {
@include utils-ellipsis;
min-width: 1em;
}
@include e(sub-arrow) {
position: absolute;
right: 21px;
width: 13px;
height: 3px;
pointer-events: none;
transition: transform var(--#{$rd-prefix}animation-duration-base) linear;
transform: rotate(90deg) scale(0.5);
transform-origin: 12px center;
@include when(expand) {
transform: translateY(-3px) rotate(90deg) scale(0.5);
div:nth-child(1) {
transform: rotate(130deg);
}
div:nth-child(2) {
transform: rotate(-130deg);
}
}
@include m(horizontal) {
right: 18px;
transform: rotate(0deg) scale(0.5);
}
div {
position: absolute;
width: 13px;
height: 3px;
background-color: currentcolor;
border-radius: 3px;
transition: color var(--#{$rd-prefix}animation-duration-base) linear, transform var(--#{$rd-prefix}animation-duration-base) linear;
transform-origin: 12px center;
}
div:nth-child(1) {
transform: rotate(50deg);
}
div:nth-child(2) {
transform: rotate(-50deg);
}
}
@include e(sub-list) {
position: relative;
padding: 0;
margin: 0;
list-style: none;
@include m(popup) {
$padding-size: 8px;
position: fixed;
padding: 4px;
background-color: var(--#{$rd-prefix}background-color);
border-radius: var(--#{$rd-prefix}border-radius);
box-shadow: var(--#{$rd-prefix}shadow-popup);
@include e(item) {
padding: 0 $padding-size;
@include m(sub) {
padding: 0 24px 0 $padding-size;
}
}
@include e(sub-arrow) {
right: 12px;
}
@include e(group-title) {
padding: 0 $padding-size;
}
}
}
@include e(group-list) {
padding: 0;
margin: 0;
list-style: none;
}
@include e(group-title) {
@include utils-ellipsis;
position: relative;
display: flex;
align-items: center;
height: $menu-item-height;
padding: 0 16px;
margin: 0;
font-size: 0.9em;
color: var(--#{$rd-prefix}text-color-sub);
}
}