@import "./var.less";
@import "./mixin.less";

@collapse-menu-width: 64px;
@collapse-item-width: 160px;
@item-height: 24px;

@light-bg: @color-neutral1;
@light-item-color: @color-text-grey1;
@light-item-hover-color: @color-primary6;
@light-item-hover-bg: @color-primary6;
@light-item-active-color: @color-primary6;
@light-item-active-bg: @color-primary1;
@light-item-disabled-color: @color-primary6;
@light-item-disabled-bg: @color-primary1;


@light-submenu-color: @color-text-grey1;
@light-submenu-bg: @color-primary6;

@light-submenu-hover-color: @color-primary6;
@light-submenu-hover-bg: @color-primary6;

@light-submenu-active-color: @color-primary6;
@light-submenu-active-bg: @color-primary6;

@light-submenu-opened-color: @color-primary6;
@light-submenu-opened-bg: @color-primary6;

@light-item-group-color: @color-text-grey3;
@light-submenu-open-icon-color: @color-text-grey3;
@light-submenu-line-color: @color-neutral5;

@dark-bg: @color-neutral4;
// menu-item 字体颜色
@dark-item-color: @color-text-grey1;
// menu-item hover颜色
@dark-item-hover-color: @color-text-grey1;
@dark-item-hover-bg: @color-background-grey2;
// menu-item active颜色
@dark-item-active-color: @color-text-grey1;
@dark-item-active-bg: @color-background-grey2;
// menu-item disabled颜色
@dark-item-disabled-color: @color-text-grey2;
@dark-item-disabled-bg: @color-neutral4;
// menu-submenu 颜色
@dark-submenu-color: @color-text-grey1;
// submenu 标题 hover
@dark-submenu-hover-color: @color-text-grey1;
@dark-submenu-hover-bg: @color-background-grey2;
// submenu 标题 active、opened
@dark-submenu-active-color: @color-text-grey1;
@dark-submenu-active-bg: @color-background-grey2;
// 覆盖颜色暂时开启
@dark-submenu-opened-color: @color-text-grey1;
@dark-submenu-opened-bg: @color-background-grey2;

@dark-item-group-color: @color-text-grey3;
@dark-submenu-open-icon-color: @color-text-grey4;
@dark-submenu-line-color: @color-neutral5;

.ellipsis {
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}

.menuThemeStyle(@theme) {
    .@{prefixCls}-submenu-popover {
        &&-@{theme} {
            background-color: ~"@{@{theme}-bg}";
            border-radius: 1px;
        }
    }

    .@{prefixCls}-menu-@{theme},
    .@{prefixCls}-submenu-popover-@{theme} {
        padding: 4px 0;
        border-radius: 1px;
        background-color: ~"@{@{theme}-bg}";
        .transition();

        .@{prefixCls}-submenu {
            &-header {
                color: ~"@{@{theme}-submenu-color}";
                background-color: ~"@{@{theme}-bg}";
                .transition();

                &-open-icon {
                    color: ~"@{@{theme}-submenu-open-icon-color}";
                    .transition();
                }

                &:hover {
                    background-color: ~"@{@{theme}-submenu-hover-bg}";
                    color: ~"@{@{theme}-submenu-hover-color}";

                    &,
                    .@{prefixCls}-submenu-header-open-icon {
                        .transition();
                    }
                }

                &-active {
                    background-color: ~"@{@{theme}-submenu-active-bg}";
                    color: ~"@{@{theme}-submenu-active-color}";

                    &,
                    .@{prefixCls}-submenu-header-open-icon {
                        .transition();
                    }
                }
            }
            &-content {
                &-line {
                    background-color: ~"@{@{theme}-submenu-line-color}";
                    .transition();
                }
            }

            &-opened {
                .@{prefixCls}-submenu-header {
                    background-color: ~"@{@{theme}-submenu-opened-bg}";
                    color: ~"@{@{theme}-submenu-opened-color}";
                }
            }
        }

        .@{prefixCls}-item-group {
            &-header {
                color: ~"@{@{theme}-item-group-color}";
                .transition();
            }
        }

        .@{prefixCls}-menu-item {
            &,
            & a {
                color: ~"@{@{theme}-item-color}";
                background-color: ~"@{@{theme}-bg}";
                .transition();

                &:hover {
                    background-color: ~"@{@{theme}-item-hover-bg}";
                    color: ~"@{@{theme}-item-hover-color}";
                }
            }

            &-active {
                &,
                & a {
                    background: ~"@{@{theme}-item-active-bg}";
                    color: ~"@{@{theme}-item-active-color}";
                    .transition();
                }
            }

            &-disabled {
                &,
                & a {
                    background: ~"@{@{theme}-item-disabled-bg}" !important;
                    color: ~"@{@{theme}-item-disabled-color}" !important;
                    .transition();
                    cursor: not-allowed;
                }
            }
        }

        .@{prefixCls}-menu-divider {
            padding: 4px 0;
        }
    }
}

.menuThemeStyle(e("dark"));
.menuThemeStyle(e("light"));

.@{prefixCls}-menu-line-icon {
    flex: none;
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 8px;
}

.@{prefixCls}-menu-line-title {
    flex: auto;
    .ellipsis;
}

.@{prefixCls}-menu {
    display: flex;
    flex-direction: column;
    font-size: 12px;
    box-sizing: border-box;
}


.@{prefixCls}-submenu {
    &-content {
        overflow: hidden;
        max-height: 9999px;
        @transition-value:
            opacity ease-out @motion-duration-b @motion-duration-b,
            max-height linear 0s 34ms;
        .property-prefix(transition, @transition-value);

        &-hide {
            opacity: 0;
            max-height: 0;
            @transition-value:
                opacity ease-in @motion-duration-b,
                max-height linear 0s (@motion-duration-b * 2 - 34ms);
            .property-prefix(transition, @transition-value);
        }
    }

    &-header {
        display: flex;
        height: @item-height;
        line-height: @item-height;
        cursor: pointer;

        .@{prefixCls}-menu-line-title {
            font-weight: 600;
        }

        &-open-icon {
            flex: none;
            user-select: none;
            font-size: 12px;
        }
    }
}


.@{prefixCls}-item-group {
    width: 100%;

    &-header {
        height: @item-height;
        line-height: @item-height;
    }
}


.@{prefixCls}-menu-item {
    position: relative;
    width: 100%;
    height: @item-height;
    line-height: @item-height;
    cursor: pointer;
    .ellipsis;

    &-1 {
        .@{prefixCls}-menu-line-title {
            font-weight: 600;
        }
    }
    a {
        &:before {
            content: '';
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            background-color: transparent;
        }
    }
}


.@{prefixCls}-menu-uncollapse {
    width: 160px;
    @transition-value:
        all ease-in-out @motion-duration-a,
        width ease-out @motion-duration-b;
    .property-prefix(transition, @transition-value);

    .@{prefixCls}-menu-line-title,
    .@{prefixCls}-submenu-header-open-icon {
        max-width: 100%;
        @transition-value:
            all ease-in-out @motion-duration-a,
            opacity ease-out @motion-duration-b @motion-duration-b,
            max-width ease-out @motion-duration-b;
        .property-prefix(transition, @transition-value);
    }

    .@{prefixCls}-submenu {
        &-line {
            .@{prefixCls}-submenu-header {
                &-open-icon {
                    margin-right: 8px;
                }
            }

            &:not(:last-of-type) {
                .@{prefixCls}-submenu-content {
                    position: relative;
                    &-line {
                        position: absolute;
                        top: 8px;
                        bottom: 8px;
                        width: 1px;
                    }
                }
            }
        }

        &-header {
            display: flex;
            height: @item-height;
            line-height: @item-height;
            cursor: pointer;

            .@{prefixCls}-menu-line-title {
                font-weight: 600;
            }

            &-open-icon {
                flex: none;
            }
        }
    }

    .@{prefixCls}-submenu-header,
    .@{prefixCls}-item-group-header,
    .@{prefixCls}-menu-item {
        padding-right: 16px;
    }

    .@{prefixCls}-submenu-header,
    .@{prefixCls}-menu-item {
        @transition-value:
            all ease-in-out @motion-duration-a,
            padding linear 0s;
        .property-prefix(transition, @transition-value);
    }
}


.@{prefixCls}-menu-collapse {
    width: @collapse-menu-width;
    @transition-value:
        all ease-in-out @motion-duration-a,
        width ease-out @motion-duration-b @motion-duration-b;
    .property-prefix(transition, @transition-value);

    .@{prefixCls}-menu-line-title,
    .@{prefixCls}-submenu-header-open-icon {
        opacity: 0;
        max-width: 0;
        @transition-value:
            all ease-in-out @motion-duration-a,
            opacity ease-out @motion-duration-b,
            max-width ease-out (@motion-duration-b * 0.4) (@motion-duration-b * 1.6);
        .property-prefix(transition, @transition-value);
    }

    .@{prefixCls}-menu-line-icon {
        margin-right: 0;
        .property-prefix(transition, margin-right linear 0s @motion-duration-b);
    }

    .@{prefixCls}-submenu-header,
    .@{prefixCls}-menu-item {
        display: flex;
        justify-content: center;
        padding: 0 !important;
        height: @item-height;
        line-height: @item-height;
        @transition-value:
            all ease-in-out @motion-duration-a,
            padding linear 0s (@motion-duration-b * 2);
        .property-prefix(transition, @transition-value);
    }

}

.@{prefixCls}-submenu-popover {
    width: @collapse-item-width;
    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.15);

    .@{prefixCls}-popover-inner {
        font-size: 12px;
        border-radius: 0;
    }

    .@{prefixCls}-submenu-header,
    .@{prefixCls}-item-group-header,
    .@{prefixCls}-menu-item {
        padding-right: 16px;
    }
}
