tdesign-react
Version:
TDesign Component for React
169 lines (137 loc) • 3.67 kB
text/less
@import "../../base.less";
@import "./_mixin.less";
@import "./_var.less";
@import "../../mixins/_reset.less";
.@{prefix}-range-input {
.reset;
width: 100%;
position: relative;
font: @range-input-font;
height: @range-input-height-default;
.range-input-base();
// borderless mode
&--borderless:not(.@{prefix}-is-focused) {
border-color: transparent;
transition: @range-input-inner-transition;
&:hover {
border-color: @component-border;
cursor: pointer;
}
&.@{prefix}-is-disabled {
border: none;
background-color: @range-input-bg-color-disabled;
}
}
&.@{prefix}-is-focused {
z-index: 1;
border-color: @range-input-border-color-default-focus;
box-shadow: @range-input-box-shadow-focus;
}
// 输入框状态
.range-input-status(success);
.range-input-status(warning);
.range-input-status(error);
.range-input-disabled();
// 输入框的前置、后置图标
.range-input-fix-position(prefix);
.range-input-fix-position(suffix);
// 输入框大小
&.@{prefix}-size-l {
height: @range-input-height-l;
font: @range-input-font-l;
padding-top: @comp-paddingTB-xs;
padding-bottom: @comp-paddingTB-xs;
.@{prefix}-input {
padding: 0 @comp-margin-s;
}
}
&.@{prefix}-size-s {
padding: @comp-paddingTB-xxs @comp-margin-xs;
height: @range-input-height-s;
font: @range-input-font-s;
}
&__inner {
height: 100%;
display: flex;
align-items: center;
gap: @range-input-inner-gap;
.@{prefix}-input__wrap {
height: 100%;
border-radius: @border-radius-small;
}
// 避免 label 文字被容器内其他元素挤压导致过早换行
& > .@{prefix}-range-input__prefix {
flex-shrink: 0;
}
.@{prefix}-input {
padding: @range-input-inner-padding;
height: 100%;
border: 0;
box-shadow: none;
font-size: inherit;
border-radius: @border-radius-small;
&:hover {
background-color: @bg-color-container-hover;
}
&__inner {
width: 100%;
height: 100%;
line-height: 1;
}
&.@{prefix}-is-focused {
background-color: @bg-color-component;
}
}
}
// 底部的额外消息
&__extra {
font: @range-input-extra-font;
color: @range-input-extra-color-default;
}
// 输入框后面的状态图标
&__status {
position: absolute;
right: @range-input-status-position-right;
top: 0;
}
&.@{prefix}-range-input--suffix .@{prefix}-input__clear {
opacity: 0;
visibility: hidden;
transition: @range-input-inner-transition;
}
&.@{prefix}-range-input--suffix:hover .@{prefix}-input__clear {
opacity: 1;
visibility: visible;
}
.@{prefix}-range-input__suffix-clear {
cursor: pointer;
}
}
.@{prefix}-range-input__prefix,
.@{prefix}-range-input__suffix {
> .t-icon {
transition: color @anim-duration-base linear;
font-size: @range-input-inner-icon-font-size;
color: @text-color-placeholder;
flex-shrink: 0;
}
}
.@{prefix}-range-input-popup {
width: 100%;
&--visible {
.@{prefix}-range-input {
border-color: @range-input-border-color-default-hover;
box-shadow: @range-input-box-shadow-focus;
// 只有time-picker、date-picker特殊使用的suffix icon需要改变颜色 若后续有新增组件继续扩展这个枚举
.t-icon-time,
.t-icon-calendar {
color: @range-input-border-color-default-focus;
}
.@{prefix}-input {
&.@{prefix}-is-focused {
background-color: @bg-color-component;
}
}
}
}
}