463 lines
13 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@charset "UTF-8";
@import "../core/index-noreset.scss";
@import "../input/scss/variable.scss";
@import "../input/scss/mixin.scss";
@import "scss/mixin";
@import "scss/variable";
#{$select-prefix} {
@include box-sizing;
display: inline-block;
font-size: 0;
vertical-align: middle;
/* Select trigger */
&-trigger {
min-width: 100px;
outline: 0;
transition: all $motion-duration-immediately $motion-linear;
.#{$css-prefix}input-label {
flex: 0 0 auto;
width: auto;
}
#{$select-prefix}-values {
display: block;
width: 100%;
flex: 1 1 0;
overflow: hidden;
> em {
font-style: inherit;
}
input {
padding-left: 0;
padding-right: 0;
}
}
.#{$css-prefix}input-control {
flex: 0 0 auto;
width: auto;
> * {
display: inline-block;
width: auto;
}
> .#{$css-prefix}select-arrow {
padding-right: 0;
}
}
.#{$css-prefix}input.#{$css-prefix}disabled {
em {
color: $input-disabled-color;
}
#{$select-prefix}-arrow {
cursor: not-allowed;
}
}
.#{$css-prefix}select-clear {
display: none;
}
&.#{$css-prefix}has-clear:hover {
.#{$css-prefix}select-clear {
display: inline-block;
}
.#{$css-prefix}select-arrow {
display: none;
}
}
}
#{$select-prefix}-inner {
display: inline-flex;
align-items: center;
width: 100%;
min-width: 100px;
outline: 0;
color: $select-color;
#{$tag-prefix} {
line-height: 1;
margin-right: $select-tag-spacing-lr;
margin-bottom: $select-tag-spacing-tb;
padding-left: $select-tag-padding-lr;
padding-right: $select-tag-padding-lr;
}
.#{$css-prefix}input-inner {
width: auto;
}
}
&-trigger-search {
position: relative;
display: inline-block;
vertical-align: top;
overflow: hidden;
width: 100%;
max-width: 100%;
> input, > span {
display: block;
font-size: inherit;
font-family: inherit;
letter-spacing: inherit;
white-space: nowrap;
overflow: hidden;
}
input {
position: absolute;
background-color: $color-transparent;
width: 100%;
height: 100% !important;
z-index: 1;
left: 0;
border: 0;
outline: 0;
margin: 0;
padding: 0;
cursor: inherit;
}
> span {
position: relative;
visibility: hidden;
white-space: pre;
max-width: 100%; /* 在 table 布局中,100% 并没有什么x用 */
z-index: -1;
}
}
&-single {
&.#{$css-prefix}no-search {
cursor: pointer;
}
/* 搜索框激活时,展开后不显示值,只显示搜索框 */
&.#{$css-prefix}has-search.#{$css-prefix}active {
#{$select-prefix}-values > em {
display: none;
}
}
/* 搜索框未激活,或者menu未展开,如果有值,则不显示搜索(placeholder) */
&.#{$css-prefix}no-search,
&.#{$css-prefix}inactive {
#{$select-prefix}-values > em + #{$select-prefix}-trigger-search {
width: 1px;
opacity: 0;
filter: alpha(opacity=0); /* for IE 9 */
}
#{$select-prefix}-trigger-search input {
color: $color-transparent;
}
}
#{$select-prefix}-values {
display: inline-flex;
align-items: center;
> em {
vertical-align: middle;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
&-multiple {
#{$select-prefix}-compact {
position: relative;
white-space: nowrap;
#{$select-prefix}-trigger-search {
width: auto;
}
#{$select-prefix}-tag-compact {
position: absolute;
top: 0;
right: 0;
z-index: 1;
padding: 0 4px 0 16px;
color: $input-text-color;
background: linear-gradient(90deg, rgba(255, 255, 255, 0), $input-bg-color 10px);
}
}
}
&-multiple, &-tag {
#{$select-prefix}-values {
/* Tag 有 3px 的 margin-bottom,所以包裹 Tag 的容器要作一下处理 */
margin-bottom: -$select-tag-spacing-tb;
height: auto !important;
}
#{$select-prefix}-trigger-search {
margin-bottom: $select-tag-spacing-tb;
}
/* 如果有值,则搜索框变为1px */
#{$tag-prefix} + #{$select-prefix}-trigger-search {
width: auto;
min-width: 1px; /* 保留一个光标的宽度 */
}
.#{$css-prefix}input {
height: auto;
align-items: start;
}
&.#{$css-prefix}small {
#{$select-prefix}-values {
@include select-size($form-element-small-height, $select-s-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-small-height !important;
}
#{$tag-prefix} {
border: 0;
@include select-tag-size($select-s-lineheight, -1);
&-body {
line-height: $select-s-lineheight;
}
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-small-height - 2;
}
}
&.#{$css-prefix}medium {
#{$select-prefix}-values {
@include select-size($form-element-medium-height, $select-m-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-medium-height !important;
}
#{$tag-prefix} {
@include select-tag-size($select-m-lineheight);
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-medium-height - 2;
}
}
&.#{$css-prefix}large {
#{$select-prefix}-values {
@include select-size($form-element-large-height, $select-l-lineheight);
}
#{$select-prefix}-values-compact {
height: $form-element-large-height !important;
}
#{$tag-prefix} {
@include select-tag-size($select-l-lineheight);
}
.#{$css-prefix}input-label, .#{$css-prefix}input-control, #{$select-prefix}-tag-compact {
line-height: $form-element-large-height - 2;
}
}
}
&.#{$css-prefix}no-search {
/* 在搜索框未激活时,将 input 的 color 置为透明 */
/* ISSUE: 在 firefox 中,readonly 的 input 仍然会显示光标 */
#{$select-prefix}-trigger-search input {
color: $color-transparent;
}
}
&-auto-complete {
width: 160px;
.#{$css-prefix}input {
width: 100%;
.#{$css-prefix}input-hint-wrap {
padding-right: 1px;
}
/* table-cell 下 margin 无效 */
#{$select-prefix}-arrow {
padding-left: 0;
}
}
}
&.#{$css-prefix}active {
#{$select-prefix}-arrow .#{$css-prefix}icon-arrow-down {
transform: rotate(180deg);
}
}
&-arrow {
cursor: pointer;
width: auto !important;
text-align: center;
transition: all $motion-duration-immediately $motion-linear;
/* transform-origin: center 41.8%; // icon 图像中心 */
}
&-popup-wrap {
animation-duration: $motion-duration-standard;
animation-timing-function: $motion-ease;
}
&-menu-wrapper {
max-height: 260px;
overflow: auto;
border: $popup-local-border-width $popup-local-border-style $popup-local-border-color;
border-radius: $popup-local-corner;
box-shadow: $popup-local-shadow;
#{$select-prefix}-menu {
max-height: none;
border: none;
}
}
/* 弹层 */
&-menu {
max-height: 260px;
overflow: auto;
#{$select-prefix}-menu-empty-content {
padding-left: $s-2;
padding-right: $s-2;
color: $select-hint-color;
}
/* autoComplete 没有选项时 menu 不显示 */
&#{$select-prefix}-auto-complete-menu#{$select-prefix}-menu-empty {
display: none;
}
.#{$css-prefix}menu-item-text .#{$css-prefix}icon {
vertical-align: middle;
}
}
/* 全选按钮 */
&-all {
display: block;
cursor: pointer;
padding: 0 $s-2;
margin: 0 $s-3 $s-2;
border-bottom: 1px solid $color-line1-2;
&:hover {
color: $color-link-3;
}
.#{$css-prefix}menu-icon-selected.#{$css-prefix}icon {
// remove display: inline-block !important; in next Y
display: inline-block !important;
top: initial;
color: $select-menu-icon-color;
}
}
&-highlight {
color: $select-highlight-color;
font-size: $select-highlight-font;
}
/* -------------- IE polyfill -------------- */
/* 根据最新的数据,在中国,PC 端的 IE9 份额为 2%, */
/* 所以不应该因为 IE9 而不使用 flex,而是应该做降级 polyfill */
/* @see http://gs.statcounter.com/ */
/* IE10、IE11 虽然支持 flex,但还是会有各种各样奇奇怪怪的问题 */
&-in-ie#{$select-prefix}-trigger {
#{$select-prefix}-values {
/* 在 table 布局中,overflow: hidden 会导致负的 margin 失效 */
overflow: visible;
}
.#{$css-prefix}input-control, .#{$css-prefix}input-label {
width: 1px;
}
.#{$css-prefix}input-control > * {
display: table-cell;
width: 1%;
}
#{$select-prefix}-arrow {
display: table-cell;
}
#{$select-prefix}-clear {
display: none;
}
&#{$select-prefix}-multiple,
&#{$select-prefix}-tag {
#{$select-prefix}-inner {
vertical-align: top;
}
}
#{$select-prefix}-inner {
display: inline-table;
}
&#{$select-prefix}-single {
#{$select-prefix}-values {
display: inline-table;
}
.#{$css-prefix}input.#{$css-prefix}small #{$select-prefix}-values {
line-height: $form-element-small-height;
}
.#{$css-prefix}input.#{$css-prefix}medium #{$select-prefix}-values {
line-height: $form-element-medium-height;
}
.#{$css-prefix}input.#{$css-prefix}large #{$select-prefix}-values {
line-height: $form-element-large-height;
}
}
#{$select-prefix}-trigger-search {
> span {
max-width: 100px;
}
}
&#{$select-prefix}-single {
&#{$select-prefix}-in-ie-fixwidth #{$select-prefix}-values {
position: relative;
> em {
position: absolute;
display: inline-block;
height: 100%;
line-height: 1;
vertical-align: middle;
overflow: hidden;
left: 4px;
right: 0;
top: 30%;
}
}
/* 搜索框未激活,或者menu未展开,如果有值,则不显示搜索(placeholder) */
&.#{$css-prefix}no-search,
&.#{$css-prefix}inactive {
#{$select-prefix}-values > em + #{$select-prefix}-trigger-search {
filter: alpha(opacity=0); /* for IE 9 */
font-size: 0;
}
#{$select-prefix}-trigger-search input {
color: inherit;
}
}
}
&.#{$css-prefix}no-search {
#{$select-prefix}-trigger-search input {
color: inherit;
}
}
}
}
@import "./rtl.scss";