* Copyright (c) 2022 - present TinyVue Authors.
* Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
@import '../custom.less';
@import './vars.less';
@tree-prefix-cls: ~'@{css-prefix}tree';
@tree-node-prefix-cls: ~'@{css-prefix}tree-node';
@input-prefix-cls: ~'@{css-prefix}input';
@tree-menu-prefix-cls: ~'@{css-prefix}tree-menu';
.@{tree-menu-prefix-cls} {
.inject-TreeMenu-vars();
width: var(--tv-TreeMenu-width);
position: relative;
font-size: var(--tv-TreeMenu-font-size);
transition: width 0.5s;
background: var(--tv-TreeMenu-background-color);
&__toggle-button {
position: absolute;
cursor: pointer;
right: 0;
top: 50%;
transform: translateX(50%) translateY(-50%);
z-index: 9;
width: 24px;
height: 24px;
border-radius: 50%;
font-size: 18px;
line-height: 18px;
background-color: var(--tv-TreeMenu-toggle-button-background-color);
box-shadow: 0 2px 4px 0px rgba(0, 0, 0, 0.06);
border: 1px solid var(--tv-TreeMenu-border-color);
.tiny-svg {
margin-left: 2px;
margin-top: 2px;
fill: var(--tv-TreeMenu-collapse-icon-fill-color);
font-size: 16px;
&:hover {
fill: var(--tv-TreeMenu-collapse-icon-hover-color);
}
&:focus {
fill: var(--tv-TreeMenu-collapse-icon-hover-color);
}
}
}
&__expand {
height: 64px;
display: flex;
align-items: center;
padding-left: 10px;
position: sticky;
bottom: 0;
left: 0;
width: 100%;
background-color: var(--tv-TreeMenu-toggle-button-background-color);
svg {
width: 22px;
height: 22px;
cursor: pointer;
fill: var(--tv-TreeMenu-collapse-icon-fill-color);
&:hover {
fill: var(--tv-TreeMenu-collapse-icon-hover-color);
}
&:focus {
fill: var(--tv-TreeMenu-collapse-icon-hover-color);
}
}
}
&.is-width-adapt {
width: 100%;
}
&.is-collapsed {
width: 0;
.@{tree-menu-prefix-cls}__toggle-button {
transform: translateX(70%) translateY(-50%);
.tiny-svg {
rotate: (180deg);
}
}
.tiny-input {
overflow: hidden;
.tiny-input-display-only {
display: inline-block;
width: 0;
}
}
}
&.is-expand {
width: 36px;
.@{tree-menu-prefix-cls}__toggle-button {
transform: translateX(70%) translateY(-50%);
.tiny-svg {
rotate: (180deg);
}
}
.tiny-input {
overflow: hidden;
.tiny-input-display-only {
display: inline-block;
width: 0;
}
}
}
&:before {
content: '';
border-right: 1px solid var(--tv-TreeMenu-border-color);
position: absolute;
top: 0;
right: 0;
height: 100%;
z-index: 1;
}
.@{input-prefix-cls} {
position: relative;
padding-right: var(--tv-TreeMenu-input-padding-right);
margin: var(--tv-TreeMenu-input-margin);
&.is-hidden {
visibility: hidden;
opacity: 0;
}
.@{input-prefix-cls}__suffix {
right: var(--tv-TreeMenu-input-suffix-right);
}
}
.@{tree-prefix-cls} {
padding-top: var(--tv-TreeMenu-padding-top);
&:before {
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 2;
height: 1px;
border-top: 1px solid var(--tv-TreeMenu-border-top-color);
margin: 0 var(--tv-TreeMenu-input-before-margin-left);
}
&::-webkit-scrollbar {
width: var(--tv-TreeMenu-scrollbar-width);
margin-right: var(--tv-TreeMenu-scrollbar-margin-right);
}
.@{tree-node-prefix-cls} {
&.is-disabled {
& > .@{tree-node-prefix-cls}__content a {
cursor: not-allowed;
.tree-node-name {
color: var(--tv-TreeMenu-disabled-text-color);
font-weight: normal;
}
}
}
.@{tree-node-prefix-cls}__expand-icon {
font-size: var(--tv-TreeMenu-expand-icon-size);
}
.@{tree-node-prefix-cls}__content {
height: var(--tv-TreeMenu-node-height);
line-height: var(--tv-TreeMenu-node-height);
overflow: hidden;
padding-left: 0;
margin-bottom: var(--tv-TreeMenu-node-margin-bottom);
.tree-node-icon {
order: 10;
margin-right: var(--tv-TreeMenu-collapse-icon-margin-right);
}
.tree-node-number {
order: 1;
position: absolute;
right: var(--tv-TreeMenu-node-number-right);
max-width: var(--tv-TreeMenu-node-number-max-width);
overflow: hidden;
font-size: var(--tv-TreeMenu-node-number-font-size);
color: var(--tv-TreeMenu-node-number-color);
}
.tree-node {
flex: 1;
}
.tree-node-name {
display: flex;
align-items: center;
padding: 0 var(--tv-TreeMenu-node-body-text-padding-x);
&:hover {
font-weight: var(--tv-TreeMenu-node-name-hover-font-weight);
color: var(--tv-TreeMenu-node-name-hover-color);
svg {
fill: var(--tv-TreeMenu-node-icon-hover-color);
}
}
svg {
margin-right: var(--tv-TreeMenu-prefix-icon-margin-right);
fill: var(--tv-TreeMenu-node-icon-fill-color);
}
}
}
.@{tree-node-prefix-cls}__content-number {
.tree-node-name {
padding-right: 0;
}
}
.@{tree-node-prefix-cls}__content:hover {
background-color: var(--tv-TreeMenu-node-hover-bg-color);
.@{tree-node-prefix-cls}__label {
background-color: transparent;
}
}
.@{tree-node-prefix-cls}__content-left {
position: relative;
padding-left: var(--tv-TreeMenu-node-vertical-line-margin-right);
&:hover {
background-color: transparent;
}
}
&.is-current {
& > .@{tree-node-prefix-cls}__content {
background-color: var(--tv-TreeMenu-node-selected-bg-color);
position: relative;
.tree-node-body {
font-weight: bold;
color: var(--tv-TreeMenu-node-body-selected-color);
svg {
fill: var(--tv-TreeMenu-node-icon-hover-color);
}
}
}
& > .@{tree-node-prefix-cls}__content::before {
content: '';
position: absolute;
left: 0;
top: 50%;
display: inline-block;
height: var(--tv-TreeMenu-node-content-height);
transform: translateY(-50%);
border-left: 2px solid var(--tv-TreeMenu-square-left-border-color);
}
}
.tree-node-body {
color: var(--tv-TreeMenu-node-body-text-color);
display: block;
&,
&:hover {
text-decoration: none;
}
}
&.is-loading {
.@{tree-node-prefix-cls}__content {
.tree-node-name {
padding-left: 0;
}
}
}
}
}
& &__overflow {
&.@{tree-prefix-cls} {
.@{tree-node-prefix-cls} {
.@{tree-node-prefix-cls}__content {
&-box {
max-width: calc(100% - 26px);
padding-right: 0;
}
.tree-node-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
padding-right: 0;
}
}
.@{tree-node-prefix-cls}__content-number {
.tree-node {
width: calc(100% - 60px);
}
}
}
}
}
& &__wrap {
&.@{tree-prefix-cls} {
.@{tree-node-prefix-cls}__content {
min-height: var(--tv-TreeMenu-node-height);
height: auto;
}
.tree-node-body {
min-height: var(--tv-TreeMenu-node-height);
display: flex;
align-items: center;
}
.tree-node-name {
white-space: normal;
line-height: normal;
display: block;
word-break: break-all;
}
}
}
}