@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
186 lines (155 loc) • 4.51 kB
text/less
@import '../../style/mixins/index.less';
@import './token.less';
.input-suffix-feedback-icon-color() {
.@{prefix}-feedback-icon {
display: inline-flex;
&-status-validating {
color: @input-feedback-icon-color_validating;
}
&-status-success {
color: @input-feedback-icon-color_success;
}
&-status-warning {
color: @input-feedback-icon-color_warning;
}
&-status-error {
color: @input-feedback-icon-color_error;
}
}
}
.input-wrapper-style(@cls) {
display: inline-flex;
box-sizing: border-box;
width: 100%;
padding-right: @input-padding-horizontal;
padding-left: @input-padding-horizontal;
color: @input-color-text;
font-size: @input-size-default-font-size;
background-color: @input-color-bg;
border: @input-border-width solid @input-color-border;
border-radius: @input-border-radius;
cursor: text;
transition: color @transition-duration-1 @transition-timing-function-linear,
border-color @transition-duration-1 @transition-timing-function-linear,
background-color @transition-duration-1 @transition-timing-function-linear;
&:hover {
background-color: @input-color-bg_hover;
border-color: @input-color-border_hover;
}
&:focus-within,
&.@{cls}-focus {
z-index: 1;
background-color: @input-color-bg_focus;
border-color: @input-color-border_focus;
box-shadow: 0 0 0 @input-size-shadow_focus @input-color-shadow_focus;
}
// 禁用状态样式
&.@{cls}-disabled {
color: @input-color-text_disabled;
background-color: @input-color-bg_disabled;
border-color: @input-color-border_disabled;
cursor: not-allowed;
&:hover {
color: @input-color-text_disabled;
background-color: @input-color-bg_disabled;
border-color: @input-color-border_disabled;
}
.@{cls}-prefix,
.@{cls}-suffix {
color: inherit;
}
}
// 错误状态样式
&.@{cls}-error {
background-color: @input-color-bg_error;
border-color: @input-color-border_error;
&:hover {
background-color: @input-color-bg_error_hover;
border-color: @input-color-border_error_hover;
}
}
&.@{cls}-error:focus-within,
&.@{cls}-error&-focus {
z-index: 1;
background-color: @input-color-bg_error_focus;
border-color: @input-color-border_error_focus;
box-shadow: 0 0 0 @input-size-shadow_error_focus
@input-color-shadow_error_focus;
}
// 前后缀样式
.@{cls}-prefix,
.@{cls}-suffix {
display: inline-flex;
flex-shrink: 0;
align-items: center;
white-space: nowrap;
user-select: none;
> svg {
font-size: @input-size-default-icon-suffix-size;
}
}
.@{cls}-prefix {
padding-right: @input-padding-horizontal;
color: @input-color-prefix-text;
}
.@{cls}-suffix {
padding-left: @input-padding-horizontal;
color: @input-color-suffix-text;
.input-suffix-feedback-icon-color();
}
// 清除按钮样式
.@{cls}-clear-btn {
align-self: center;
color: @input-color-icon-clear;
font-size: @input-size-icon-clear;
visibility: hidden;
cursor: pointer;
> svg {
position: relative;
transition: color @transition-duration-1
@transition-timing-function-linear;
}
}
&:hover .@{cls}-clear-btn {
visibility: visible;
}
// 没有选中情况下显示深色
&:not(.@{cls}-focus) .@{cls}-icon-hover:hover::before {
background-color: @input-color-icon-clear-bg_hover;
}
}
.input-style() {
width: 100%;
padding-right: 0;
padding-left: 0;
color: inherit;
line-height: @line-height-base;
background: none;
border: none;
border-radius: 0;
outline: none;
cursor: inherit;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
&::placeholder {
color: @input-color-placeholder-text;
}
&[disabled]::placeholder {
color: @input-color-text_disabled;
}
// fix color error under disabled status in safari
&[disabled] {
-webkit-text-fill-color: @input-color-text_disabled;
}
}
.input-size(@size) {
@height: ~'input-size-@{size}-height';
@font-size: ~'input-size-@{size}-font-size';
@line-height: ~'input-size-@{size}-line-height';
/* prettier-ignore */
padding-top: (round(@@height - @input-border-width * 2 - $line-height * $font-size) / 2);
/* prettier-ignore */
padding-bottom: (round(@@height - @input-border-width * 2 - $line-height * $font-size) / 2);
font-size: @@font-size;
line-height: @@line-height;
}