@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
295 lines (242 loc) • 6.29 kB
text/less
@import './token.less';
@import '../../style/mixins/index.less';
@transfer-prefix-cls: ~'@{prefix}-transfer';
.@{transfer-prefix-cls} {
display: flex;
align-items: center;
&-view {
display: flex;
flex-direction: column;
box-sizing: border-box;
width: @transfer-width;
height: @transfer-height;
border: @transfer-border-width solid @transfer-border-color;
border-radius: @transfer-border-radius;
&-search {
padding: @transfer-search-padding-top @transfer-search-padding-right
@transfer-search-padding-bottom @transfer-search-padding-left;
}
&-list {
flex: 1;
}
&-custom-list {
flex: 1;
overflow: auto;
}
&-header {
display: flex;
align-items: center;
padding: 0 @transfer-item-padding-horizontal;
}
&-header > *:first-child {
flex: 1;
.text-ellipsis();
&:not(:last-child) {
margin-right: 8px;
}
}
&-header {
height: @transfer-height-title;
color: @transfer-color-text-header;
font-weight: @transfer-font-weight-header;
font-size: @transfer-font-size-header;
line-height: $height;
background-color: @transfer-color-bg-header;
&-title {
display: flex;
align-items: center;
.@{prefix}-checkbox {
.text-ellipsis();
font-size: inherit;
&-text {
color: inherit;
}
// fix the title in checkbox-label ellipsis not work
&-label {
.text-ellipsis();
}
}
// fix simple mode the title ellipsis not work
&-simple {
.text-ellipsis();
}
}
&-clear-btn {
color: @transfer-color-icon;
font-size: @transfer-font-size-icon;
cursor: pointer;
&:hover::before {
background-color: @transfer-color-bg-icon;
}
}
&-count {
margin-right: 2px;
color: @transfer-color-text-header-unit;
font-weight: normal;
font-size: @transfer-font-size-header-unit;
}
}
&-body {
flex: 1 1 auto;
overflow: hidden;
.@{transfer-prefix-cls}-view-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
}
}
.@{prefix}-scrollbar {
height: 100%;
&-container {
height: 100%;
overflow: auto;
}
}
.@{prefix}-list {
border-radius: 0;
&-footer {
position: relative;
display: flex;
align-items: center;
box-sizing: border-box;
height: @transfer-height-footer;
padding: 0 @transfer-padding-horizontal-footer;
}
.@{prefix}-pagination {
position: absolute;
top: 50%;
right: @transfer-padding-horizontal-footer;
margin: 0;
transform: translateY(-50%);
&-jumper-input {
width: @transfer-pagination-width-input;
}
&-jumper-separator {
padding: 0 @transfer-pagination-gap-separator;
}
}
}
.@{prefix}-checkbox {
padding-left: 6px;
&-wrapper {
display: inline;
}
.@{prefix}-icon-hover:hover::before {
background-color: @transfer-color-bg-icon;
}
}
}
&-list-item {
position: relative;
display: flex;
align-items: center;
height: @transfer-item-height;
padding: 0 @transfer-item-padding-horizontal;
color: @transfer-item-color_default;
line-height: $height;
list-style: none;
background-color: @transfer-item-color-bg_default;
cursor: default;
&-content {
font-size: @transfer-item-font-size;
.text-ellipsis();
}
&-checkbox {
.@{prefix}-checkbox-label {
.text-ellipsis();
}
}
&-disabled {
color: @transfer-item-color_disabled;
background-color: @transfer-item-color-bg_disabled;
cursor: not-allowed;
}
&:not(&-disabled):hover {
color: @transfer-item-color_hover;
background-color: @transfer-item-color-bg_hover;
}
.@{prefix}-checkbox {
width: 100%;
&-text {
color: inherit;
}
}
&-remove-btn {
margin-left: auto;
color: @transfer-color-icon;
font-size: @transfer-font-size-icon;
cursor: pointer;
&:hover::before {
background-color: @transfer-color-bg-icon;
}
}
// 拖动样式
&-draggable::before {
position: absolute;
right: 0;
left: 0;
display: block;
height: @transfer-item-draggable-height-gap;
border-radius: ($height / 2);
content: '';
}
&-gap-bottom::before {
bottom: -@transfer-item-draggable-height-gap;
background-color: @transfer-item-draggable-color-bg-gap;
}
&-gap-top::before {
top: -@transfer-item-draggable-height-gap;
background-color: @transfer-item-draggable-color-bg-gap;
}
&-dragging {
color: @transfer-item-draggable-color_dragging ;
background-color: @transfer-item-draggable-color-bg_dragging ;
}
&-dragged {
animation: ~'@{prefix}-transfer-drag-item-blink' 0.4s;
animation-timing-function: @transition-timing-function-linear;
}
}
&-operations {
padding: 0 @transfer-operation-padding-horizontal;
.@{prefix}-btn {
display: block;
&:last-child {
margin-top: @transfer-operation-gap-buttons;
}
}
&-words {
.@{prefix}-btn {
width: 100%;
padding: 0 12px;
text-align: left;
}
}
}
&-simple {
.@{transfer-prefix-cls}-view-source {
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.@{transfer-prefix-cls}-view-target {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
}
&-disabled {
.@{transfer-prefix-cls}-view-header {
color: @transfer-item-color_disabled;
}
}
}
@keyframes ~ '@{prefix}-transfer-drag-item-blink' {
0% {
background-color: @transfer-item-draggable-color_blink;
}
100% {
background-color: transparent;
}
}