wetrade-design
Version:
一款多语言支持Vue3的UI框架
381 lines (328 loc) • 12 kB
text/less
@import (reference) '../../style/themes/index';
@select-prefix-cls: ~'@{wd-prefix}-select';
@select-overflow-prefix-cls: ~'@{select-prefix-cls}-selection-overflow';
@select-multiple-item-border-width: 1px;
// @select-multiple-padding: 3px;
/**
* Do not merge `height` & `line-height` under style with `selection` & `search`,
* since chrome may update to redesign with its align logic.
*/
// =========================== Overflow ===========================
.@{select-overflow-prefix-cls} {
position: relative;
display: flex;
flex: auto;
flex-wrap: wrap;
max-width: 100%;
&-item {
flex: none;
align-self: center;
max-width: 100%;
}
}
.tag-active-item() {
background-color: @select-multiple-item-focus-bg-color;
color: @select-multiple-item-focus-color;
border-color: transparent;
.@{iconfont-css-prefix} {
color: @select-multiple-item-focus-color;
}
}
.@{select-prefix-cls} {
&-multiple {
// ========================= Selector =========================
.@{select-prefix-cls}-selector {
display: flex;
flex-wrap: wrap;
align-items: center;
// Multiple is little different that horizontal is follow the vertical
padding: @select-multiple-tag-padding-vertical @select-multiple-tag-padding-horizontal;
.@{select-prefix-cls}-show-search& {
cursor: text;
}
.@{select-prefix-cls}-disabled& {
background: @select-multiple-disabled-background;
cursor: not-allowed;
}
&::after {
display: inline-block;
width: 0;
margin: @select-multiple-item-spacing-half 0;
line-height: @select-multiple-item-height - 2px;
// line-height: inherit;
content: '\a0';
}
}
&.@{select-prefix-cls}-show-arrow .@{select-prefix-cls}-selector,
&.@{select-prefix-cls}-allow-clear .@{select-prefix-cls}-selector {
padding-right: @font-size-sm + @control-padding-horizontal;
}
// ======================== Selections ========================
.@{select-prefix-cls}-selection-item {
position: relative;
display: flex;
flex: none;
box-sizing: border-box;
max-width: 100%;
height: @select-multiple-item-height;
margin-top: @select-multiple-tag-margin-vertical;
margin-bottom: @select-multiple-tag-margin-vertical;
line-height: @select-multiple-item-height;
background: @select-selection-item-bg;
// border: 1px solid @select-selection-item-border-color;
border-radius: @select-multiple-item-radius;
cursor: default;
transition: font-size 0.3s, line-height 0.3s, height 0.3s;
user-select: none;
margin-inline-end: @select-multiple-tag-margin-right;
padding-inline-start: @padding-xs;
padding-inline-end: @padding-xs;
.@{select-prefix-cls}-disabled& {
color: @select-multiple-item-disabled-color;
border-color: @select-multiple-item-disabled-border-color;
cursor: not-allowed;
background-color: @select-multiple-item-disabled-bg;
&:hover {
background-color: @select-multiple-item-disabled-bg;
}
}
// It's ok not to do this, but 24px makes bottom narrow in view should adjust
&-content {
display: inline-block;
// margin-right: (@padding-xs / 2);
overflow: hidden;
white-space: pre; // fix whitespace wrapping. custom tags display all whitespace within.
text-overflow: ellipsis;
}
&-remove {
.iconfont-mixin();
display: inline-block;
color: @text-color-secondary;
font-weight: bold;
font-size: 10px;
line-height: inherit;
// margin-inline-start: @margin-xss;
cursor: pointer;
// display: none;
> .@{iconfont-css-prefix} {
line-height: @select-multiple-item-height - @select-multiple-item-border-width * 2;
// vertical-align: -0.2em;
vertical-align: 0;
color: @icon-tertiary;
font-size: 12px;
margin-left: @margin-xss;
}
&:hover {
color: @icon-color-hover;
}
}
&:hover {
.@{select-prefix-cls}-selection-item-remove {
display: block;
}
.tag-active-item();
}
}
// ========================== Input ==========================
.@{select-overflow-prefix-cls}-item + .@{select-overflow-prefix-cls}-item {
.@{select-prefix-cls}-selection-search {
margin-inline-start: 0;
}
}
.@{select-prefix-cls}-selection-search {
position: relative;
max-width: 100%;
margin-inline-start: @input-padding-horizontal-base - @input-padding-vertical-base;
&-input,
&-mirror {
height: @select-multiple-item-height;
font-family: @font-family;
line-height: @select-multiple-item-height;
transition: all 0.3s;
}
&-input {
width: 100%;
min-width: 0;
// min-width: 4.1px; // fix search cursor missing
}
&-mirror {
position: absolute;
top: 0;
left: 0;
z-index: 999;
white-space: pre; // fix whitespace wrapping caused width calculation bug
visibility: hidden;
}
}
// ======================= Placeholder =======================
.@{select-prefix-cls}-selection-placeholder {
position: absolute;
top: 50%;
right: @input-padding-horizontal;
left: @select-multiple-placeholder-left;
transform: translateY(-50%);
transition: all 0.3s;
}
// ====================== Open ================================
&.@{select-prefix-cls}-focused {
.@{select-prefix-cls}-selector .@{select-prefix-cls}-selection {
&-overflow-item .@{select-prefix-cls}-selection-item {
.tag-active-item();
}
}
}
// ====================== Condition ================================
&.@{select-prefix-cls}-condition {
line-height: @select-multiple-item-height - @select-multiple-item-border-width * 2 - 2px;
.@{select-prefix-cls}-selector {
width: 100%;
.@{select-prefix-cls}-selection {
&-item {
background-color: @select-multiple-condition-item-bg-color;
border: 1px solid @select-multiple-condition-item-border-color;
border-radius: @select-multiple-condition-item-border-radius;
&:hover {
.@{iconfont-css-prefix} {
color: @select-condition-multiple-item-hover-color;
}
}
}
&-item-content {
max-width: @select-multiple-condition-item-max-width;
white-space: nowrap;
}
}
&::after {
line-height: @input-line-height-base + 6px;
}
}
.@{select-prefix-cls}-selection-placeholder {
left: 0;
}
.condition-select-size(@suffix, @input-height, @line-height) {
@merged-cls: ~'@{select-prefix-cls}-@{suffix}';
&.@{merged-cls} {
@select-selection-height: @input-height - @border-width-base * 2;
.@{select-prefix-cls}-selection-item {
line-height: @select-selection-height;
.@{iconfont-css-prefix} {
line-height: @select-selection-height;
}
}
.@{select-prefix-cls}-selector::after {
line-height: @line-height;
}
}
}
.condition-select-size('lg', @select-multiple-item-height-lg, @select-multiple-item-height-lg);
.condition-select-size('bg', @select-multiple-item-height-bg, @select-multiple-item-height-bg);
.condition-select-size('sm', @select-multiple-item-height-sm, @select-multiple-item-height-sm);
.condition-select-size('xs', @select-multiple-item-height-xs, @select-multiple-item-height-xs - 2px);
}
// ============================================================
// == Size ==
// ============================================================
.select-size(@suffix, @input-height, @line-height: @select-selection-line-height) {
@merged-cls: ~'@{select-prefix-cls}-@{suffix}';
&.@{merged-cls} {
@select-selection-height: @input-height - @input-padding-vertical-base * 2;
@select-height-without-border: @input-height - @border-width-base * 2;
.@{select-prefix-cls}-selector::after {
// line-height: inherit;
line-height: @line-height;
}
.@{select-prefix-cls}-selection-item {
height: @select-selection-height;
line-height: @select-selection-height - @border-width-base * 2;
}
.@{select-prefix-cls}-selection-search {
height: @select-selection-height;
line-height: @select-selection-height;
&-input,
&-mirror {
height: @select-selection-height;
line-height: @select-selection-height - @border-width-base * 2;
}
}
}
}
.select-size('lg', @input-height-lg, @select-selection-line-height-lg);
.select-size('bg', @input-height-bg, @select-selection-line-height-bg);
.select-size('sm', @input-height-sm, @select-selection-line-height-sm);
.select-size('xs', @input-height-xs, @select-selection-line-height-xs);
// Size small need additional set padding
&.@{select-prefix-cls}-sm {
.@{select-prefix-cls}-selection-placeholder {
left: @input-padding-horizontal-sm;
}
// https://github.com/ant-design/ant-design/issues/29559
.@{select-prefix-cls}-selection-search {
margin-inline-start: 3px;
}
.@{select-prefix-cls}-selection-item {
height: @select-multiple-item-height-sm;
line-height: @select-multiple-item-height-sm;
border-radius: @select-multiple-item-radius-sm;
.@{iconfont-css-prefix} {
line-height: @select-multiple-item-height-sm;
}
}
}
&.@{select-prefix-cls}-lg {
.@{select-prefix-cls}-selection-item {
height: @select-multiple-item-height-lg;
line-height: @select-multiple-item-height-lg;
border-radius: @select-multiple-item-radius-lg;
.@{iconfont-css-prefix} {
line-height: @select-multiple-item-height-lg;
}
}
}
&.@{select-prefix-cls}-bg {
.@{select-prefix-cls}-selection-item {
height: @select-multiple-item-height-bg;
line-height: @select-multiple-item-height-bg;
border-radius: @select-multiple-item-radius-bg;
.@{iconfont-css-prefix} {
line-height: @select-multiple-item-height-bg;
}
}
}
&.@{select-prefix-cls}-xs {
.@{select-prefix-cls}-selector::after {
line-height: @input-height-xs - 10px;
}
.@{select-prefix-cls}-selection-item {
height: @select-multiple-item-height-xs;
line-height: @select-multiple-item-height-xs;
border-radius: @select-multiple-item-radius-xs;
margin-top: @select-multiple-tag-margin-vertical - 1px;
margin-bottom: @select-multiple-tag-margin-vertical - 1px;
.@{iconfont-css-prefix} {
line-height: @select-multiple-item-height-xs;
}
}
.@{select-prefix-cls}-selector {
&::after {
// display: none;
}
}
}
&:not(.@{select-prefix-cls}-condition) {
.@{select-prefix-cls}-selection-item {
// margin-top: @select-multiple-item-spacing-half + 1px;
}
}
.@{select-prefix-cls}-disabled & {
.@{select-prefix-cls}-selection-item {
background-color: @select-multiple-item-disabled-bg;
&:hover {
background-color: transparent;
}
}
}
}
&-disabled .@{select-prefix-cls}-selection-item-remove {
display: none;
}
}