vui-design
Version:
A high quality UI Toolkit based on Vue.js
351 lines (308 loc) • 8.49 kB
text/less
@vui-dropdown: ~"@{vui}-dropdown";
.@{vui-dropdown} {
position:relative;
display:inline-block;
box-sizing:border-box;
vertical-align:middle;
&-button {
display:inline-block;
box-sizing:border-box;
vertical-align:middle;
}
&-button > .@{vui}-button {
border-radius:@button-border-radius 0 0 @button-border-radius;
}
&-button > & > &-trigger > .@{vui}-button {
border-radius:0 @button-border-radius @button-border-radius 0;
}
&-popup {
position:absolute;
top:0;
left:0;
padding:4px 0;
&[data-placement="top"] {
transform-origin:bottom center;
}
&[data-placement="top-start"] {
transform-origin:bottom left;
}
&[data-placement="top-end"] {
transform-origin:bottom right;
}
&[data-placement="bottom"] {
transform-origin:top center;
}
&[data-placement="bottom-start"] {
transform-origin:top left;
}
&[data-placement="bottom-end"] {
transform-origin:top right;
}
&-scale-enter-active,
&-scale-leave-active {
pointer-events:none;
opacity:1;
transform:scaleY(1);
transition:opacity @transition-duration @transition-timing-function, transform @transition-duration @transition-timing-function;
}
&-scale-enter,
&-scale-leave-active {
opacity:0;
transform:scaleY(0.8);
}
}
&-menu {
display:block;
box-sizing:border-box;
border-radius:@dropdown-menu-border-radius;
box-shadow:@dropdown-menu-box-shadow;
padding:4px 0;
overflow:hidden;
line-height:@dropdown-menu-line-height;
}
&-submenu {
position:relative;
display:block;
box-sizing:border-box;
&-header {
cursor:pointer;
display:flex;
justify-content:flex-start;
align-items:center;
box-sizing:border-box;
padding:0 @dropdown-submenu-header-padding-horizontal;
overflow:hidden;
font-size:@dropdown-submenu-header-font-size;
transition:background-color @transition-duration @transition-timing-function, color @transition-duration @transition-timing-function;
&-icon {
display:block;
box-sizing:border-box;
margin-right:@dropdown-submenu-header-icon-margin-right;
.@{vui}-icon {
display:block;
}
}
&-title {
flex:1;
display:block;
box-sizing:border-box;
.writeEllipsis;
}
&-arrow {
position:relative;
display:block;
box-sizing:border-box;
width:2px;
height:10px;
margin-left:@dropdown-submenu-header-arrow-margin-left;
&:before,
&:after {
content:"";
left:0;
position:absolute;
display:block;
box-sizing:border-box;
width:2px;
height:6px;
background-color:currentColor;
transform-origin:center center;
transition:background-color @transition-duration @transition-timing-function, transform @transition-duration @transition-timing-function;
}
&:before {
top:0;
transform:rotate(-45deg) scaleX(0.6);
}
&:after {
bottom:0;
transform:rotate(45deg) scaleX(0.6);
}
}
}
&-body {
position:absolute;
top:0;
left:0;
padding:0 4px;
&[data-placement="left-start"] {
transform-origin:top right;
}
&[data-placement="right-start"] {
transform-origin:top left;
}
&-scale-enter-active,
&-scale-leave-active {
pointer-events:none;
opacity:1;
transform:scaleY(1);
transition:opacity @transition-duration @transition-timing-function, transform @transition-duration @transition-timing-function;
}
&-scale-enter,
&-scale-leave-active {
opacity:0;
transform:scaleY(0.8);
}
}
&-open &-header {
&-arrow {
&:before {
transform:rotate(45deg) scaleX(0.6);
}
&:after {
transform:rotate(-45deg) scaleX(0.6);
}
}
}
&-disabled &-header {
cursor:not-allowed;
pointer-events:none;
}
}
&-menu-item {
cursor:pointer;
display:flex;
justify-content:flex-start;
align-items:center;
box-sizing:border-box;
padding:0 @dropdown-menu-item-padding-horizontal;
overflow:hidden;
font-size:@dropdown-menu-item-font-size;
transition:background-color @transition-duration @transition-timing-function, color @transition-duration @transition-timing-function;
&-icon {
display:block;
box-sizing:border-box;
margin-right:@dropdown-menu-item-icon-margin-right;
.@{vui}-icon {
display:block;
}
}
&-title {
flex:1;
display:block;
box-sizing:border-box;
.writeEllipsis;
}
&-disabled {
cursor:not-allowed;
pointer-events:none;
}
&-group {
&-header {
display:block;
box-sizing:border-box;
padding:0 @dropdown-menu-item-group-header-padding-horizontal;
font-size:@dropdown-menu-item-group-header-font-size;
.writeEllipsis;
}
}
&-group & {
padding-left:@dropdown-menu-item-padding-horizontal * 2;
}
}
&-menu-divider {
display:block;
box-sizing:border-box;
width:100%;
height:0;
border-top:1px solid transparent;
margin:4px 0;
overflow:hidden;
}
// light
&-menu-light {
background-color:@dropdown-menu-light-background-color;
}
&-menu-light &-submenu {
&-header {
color:@dropdown-submenu-header-light-font-color;
&:hover {
background-color:@dropdown-submenu-header-light-hover-background-color;
color:@dropdown-submenu-header-light-hover-font-color;
}
}
}
&-menu-light &-submenu-open &-submenu-header {
background-color:@dropdown-submenu-header-light-open-background-color;
color:@dropdown-submenu-header-light-open-font-color;
}
&-menu-light &-submenu-disabled &-submenu-header {
background-color:@dropdown-submenu-header-light-disabled-background-color;
color:@dropdown-submenu-header-light-disabled-font-color;
}
&-menu-light &-menu-item {
color:@dropdown-menu-item-light-font-color;
}
&-menu-light &-menu-item:hover {
background-color:@dropdown-menu-item-light-hover-background-color;
color:@dropdown-menu-item-light-hover-font-color;
}
&-menu-light &-menu-item-disabled {
background-color:@dropdown-menu-item-light-disabled-background-color;
color:@dropdown-menu-item-light-disabled-font-color;
}
&-menu-light &-menu-item-danger {
color:@dropdown-menu-item-danger-light-font-color;
}
&-menu-light &-menu-item-danger:hover {
background-color:@dropdown-menu-item-danger-light-hover-background-color;
color:@dropdown-menu-item-danger-light-font-color;
}
&-menu-light &-menu-item-danger&-menu-item-disabled {
background-color:@dropdown-menu-item-danger-light-disabled-background-color;
color:@dropdown-menu-item-danger-light-disabled-font-color;
}
&-menu-light &-menu-item-group &-menu-item-group-header {
color:@dropdown-menu-item-group-header-light-font-color;
}
&-menu-light &-menu-divider {
border-top-color:@dropdown-menu-divider-light-color;
}
// dark
&-menu-dark {
background-color:@dropdown-menu-dark-background-color;
}
&-menu-dark &-submenu {
&-header {
color:@dropdown-submenu-header-dark-font-color;
&:hover {
background-color:@dropdown-submenu-header-dark-hover-background-color;
color:@dropdown-submenu-header-dark-hover-font-color;
}
}
}
&-menu-dark &-submenu-open &-submenu-header {
background-color:@dropdown-submenu-header-dark-open-background-color;
color:@dropdown-submenu-header-dark-open-font-color;
}
&-menu-dark &-submenu-disabled &-submenu-header {
background-color:@dropdown-submenu-header-dark-disabled-background-color;
color:@dropdown-submenu-header-dark-disabled-font-color;
}
&-menu-dark &-menu-item {
color:@dropdown-menu-item-dark-font-color;
}
&-menu-dark &-menu-item:hover {
background-color:@dropdown-menu-item-dark-hover-background-color;
color:@dropdown-menu-item-dark-hover-font-color;
}
&-menu-dark &-menu-item-disabled {
background-color:@dropdown-menu-item-dark-disabled-background-color;
color:@dropdown-menu-item-dark-disabled-font-color;
}
&-menu-dark &-menu-item-danger {
color:@dropdown-menu-item-danger-dark-font-color;
}
&-menu-dark &-menu-item-danger:hover {
background-color:@dropdown-menu-item-danger-dark-hover-background-color;
color:@dropdown-menu-item-danger-dark-font-color;
}
&-menu-dark &-menu-item-danger&-menu-item-disabled {
background-color:@dropdown-menu-item-danger-dark-disabled-background-color;
color:@dropdown-menu-item-danger-dark-disabled-font-color;
}
&-menu-dark &-menu-item-group &-menu-item-group-header {
color:@dropdown-menu-item-group-header-dark-font-color;
}
&-menu-dark &-menu-divider {
border-top-color:@dropdown-menu-divider-dark-color;
}
}