@arco-design/web-react
Version:
Arco Design React UI Library.
365 lines (302 loc) • 8.9 kB
text/less
@import '../../style/mixin.less';
@import './token.less';
@import '../../_class/Draggable/style/index.less';
@import './mixin.less';
@input-tag-prefix-cls: ~'@{prefix}-input-tag';
.@{input-tag-prefix-cls} {
display: inline-block;
box-sizing: border-box;
width: 100%;
padding-left: @input-tag-padding-horizontal;
padding-right: @input-tag-padding-horizontal;
border-radius: @input-tag-border-radius;
vertical-align: top;
cursor: text;
transition: all @transition-duration-1 @transition-timing-function-linear;
&-view {
display: flex;
width: 100%;
}
&-inner {
display: flex;
align-items: center;
flex-wrap: wrap;
flex-grow: 1;
position: relative;
box-sizing: border-box;
overflow: hidden;
}
&-prefix,
&-suffix {
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
min-width: 22px;
}
&-prefix {
padding-left: 8px;
padding-right: 4px;
}
&-suffix {
padding-right: 8px;
}
& &-clear-icon {
display: none;
font-size: @input-tag-size-icon-clear;
color: @input-tag-color-icon-clear;
cursor: pointer;
> svg {
transition: color @transition-duration-1 @transition-timing-function-linear;
position: relative;
}
}
&:hover &-clear-icon {
display: block;
& ~ * {
display: none;
}
}
&:not(&-focus) {
.@{input-tag-prefix-cls}-clear-icon:hover::before {
background-color: @input-tag-color-icon-clear-bg_hover;
}
.@{prefix}-draggable-item {
cursor: move;
}
}
&-input {
width: 4px;
// width might be overwrite by inline-style, max-width make text-ellipsis work
max-width: 100%;
padding: 0;
border: none;
outline: none;
background: none;
font-size: inherit;
cursor: inherit;
color: inherit;
.text-ellipsis();
// input is the first child means that input-tag has an empty value
// we set width of input to 4px by default, and 100% when input-tag is empty to avoid wrap
// see https://github.com/arco-design/arco-design/pull/1863
&:first-child {
width: 100%;
}
.@{prefix}-tag + &[disabled] {
width: 0;
}
&-mirror {
position: absolute;
top: 0;
left: 0;
visibility: hidden;
pointer-events: none;
}
&::placeholder {
color: @input-tag-color-placeholder;
}
}
&-tag {
max-width: 100%;
margin-right: @input-tag-tag-margin-right;
font-size: @input-tag-tag-font-size;
&-ellipsis {
font-size: @input-tag-tag-font-size;
margin: 0 4px;
}
}
// 多状态下的颜色处理
.status-color(@status) {
background-color: ~'@{input-tag-color-bg_@{status}}';
color: ~'@{input-tag-color-text_@{status}}';
border: @input-tag-border-width solid ~'@{input-tag-color-border_@{status}}';
&:hover {
background-color: ~'@{input-tag-color-bg_@{status}_hover}';
border: @input-tag-border-width solid ~'@{input-tag-color-border_@{status}_hover}';
}
&.@{input-tag-prefix-cls}-focus when not (@status = disabled) {
background-color: ~'@{input-tag-color-bg_@{status}_focus}';
border: @input-tag-border-width solid ~'@{input-tag-color-border_@{status}_focus}';
box-shadow: 0 0 0 ~'@{input-tag-size-shadow_@{status}_focus}' ~'@{input-tag-color-shadow_@{status}_focus}';
}
}
.@{prefix}-icon-hover {
cursor: pointer;
&.@{prefix}-icon-hover-disabled {
cursor: not-allowed;
}
}
.status-tag-color() {
.@{input-tag-prefix-cls}-tag {
color: @input-tag-color-text_default;
border-color: @input-tag-tag-color-border;
background-color: @input-tag-tag-color-bg;
}
.@{prefix}-icon-hover:hover::before {
background-color: @input-tag-tag-remove-icon-color-bg;
}
&.@{input-tag-prefix-cls}-focus {
.@{input-tag-prefix-cls}-tag {
border-color: @input-tag-tag-color-border_focus;
background-color: @input-tag-tag-color-bg_focus;
}
.@{prefix}-icon-hover:hover::before {
background-color: @input-tag-tag-remove-icon-color-bg_focus;
}
}
&.@{input-tag-prefix-cls}-disabled {
.@{input-tag-prefix-cls}-tag {
color: @input-tag-color-text_disabled;
border-color: @input-tag-tag-color-border_disabled;
background-color: @input-tag-tag-color-bg_disabled;
}
}
}
.status-color(default);
.status-tag-color();
&-warning {
.status-color(warning);
}
&-error {
.status-color(error);
}
&-disabled {
.status-color(disabled);
cursor: not-allowed;
.@{input-tag-prefix-cls}-input::placeholder {
color: @input-tag-color-text_disabled;
}
}
&-readonly {
cursor: default;
}
&-wrapper {
display: inline-flex;
align-items: stretch;
width: 100%;
.@{input-tag-prefix-cls} {
min-width: 0; // 避免 .arco-input-tag 宽度超出 .arco-input-tag-wrapper
}
.@{input-tag-prefix-cls}:not(.@{input-tag-prefix-cls}-focused) {
&:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
&:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
}
}
&-addafter,
&-addbefore {
display: flex;
align-items: center;
padding: 0 @input-tag-addon-padding-horizontal;
color: @input-tag-color-addon-text;
background-color: @input-tag-color-addon-bg;
white-space: nowrap;
border: 1px solid @input-tag-color-addon-border_default;
}
&-addbefore {
border-right: @input-tag-border-addon-separator-width solid @input-tag-color-addon-border;
border-top-left-radius: @input-tag-border-radius;
border-bottom-left-radius: @input-tag-border-radius;
}
&-addafter {
border-left: @input-tag-border-addon-separator-width solid @input-tag-color-addon-border;
border-top-right-radius: @input-tag-border-radius;
border-bottom-right-radius: @input-tag-border-radius;
}
}
.@{input-tag-prefix-cls} {
.size(@size) {
&-size-@{size} {
@ref-font-size: ~'input-tag-size-@{size}-font-size';
@ref-height: ~'input-tag-size-@{size}-height';
@ref-tag-height: ~'input-tag-size-@{size}-tag-height';
@ref-padding-horizontal_not_tag: ~'input-tag-size-@{size}-padding_no_tag';
@font-size: @@ref-font-size;
@height: @@ref-height;
@tag-height: @@ref-tag-height;
@padding-horizontal_not_tag: @@ref-padding-horizontal_not_tag;
font-size: @font-size;
.@{input-tag-prefix-cls}-view {
min-height: @height - @input-tag-border-width * 2;
}
.@{input-tag-prefix-cls}-inner {
padding-top: (@height / 2) - (@tag-height / 2) - @input-tag-border-width -
@input-tag-tag-margin-vertical;
padding-bottom: $padding-top;
}
.@{input-tag-prefix-cls}-tag,
.@{input-tag-prefix-cls}-tag + .@{input-tag-prefix-cls}-input {
margin-top: (@input-tag-tag-margin-vertical / 2);
margin-bottom: $margin-top;
height: @tag-height;
line-height: $height - 2;
}
&.@{input-tag-prefix-cls}-has-placeholder {
input,
.@{input-tag-prefix-cls}-input-mirror {
box-sizing: border-box;
padding-left: @padding-horizontal_not_tag - @input-tag-padding-horizontal;
}
}
}
}
.size(mini);
.size(default);
.size(small);
.size(large);
}
.@{input-tag-prefix-cls}-rtl {
direction: rtl;
padding-right: @input-tag-padding-horizontal;
padding-left: @input-tag-padding-horizontal;
.@{input-tag-prefix-cls}-prefix {
padding-right: 8px;
padding-left: 4px;
}
.@{input-tag-prefix-cls}-suffix {
padding-right: 0;
padding-left: 8px;
}
.@{input-tag-prefix-cls}-tag {
margin-right: 0;
margin-left: @input-tag-tag-margin-right;
}
.@{input-tag-prefix-cls}-input {
&-mirror {
right: 0;
left: initial;
}
}
.size(@size) {
@ref-padding-horizontal_not_tag: ~'input-tag-size-@{size}-padding_no_tag';
@padding-horizontal_not_tag: @@ref-padding-horizontal_not_tag;
&.@{input-tag-prefix-cls}-size-@{size} {
&.@{input-tag-prefix-cls}-has-placeholder {
input,
.@{input-tag-prefix-cls}-input-mirror {
padding-right: @padding-horizontal_not_tag - @input-tag-padding-horizontal;
}
}
}
}
.size(mini);
.size(default);
.size(small);
.size(large);
}
.@{input-tag-prefix-cls}-wrapper-rtl {
.@{input-tag-prefix-cls}-addbefore {
border-right: unset;
border-left: @input-tag-border-addon-separator-width solid @input-tag-color-addon-border;
}
.@{input-tag-prefix-cls}-addafter {
border-left: unset;
border-right: @input-tag-border-addon-separator-width solid @input-tag-color-addon-border;
}
}