UNPKG

shineout

Version:

Shein 前端组件库

619 lines (551 loc) 14.9 kB
@import '../../styles/variables.less'; @import '../../styles/themes/@{so-theme}.less'; @treeSelect-prefix: ~'@{so-prefix}-treeSelect'; @tree-prefix: ~'@{so-prefix}-tree'; @input-prefix: ~'@{so-prefix}-input'; @input-title-prefix: ~'@{so-prefix}-input-title-box'; @tree-node-max-width: 300px; @indicator-start: 7px; @baseOffset: 12; @multiOffset: 22; .@{treeSelect-prefix} { position: relative; &-inner { width: 100%; outline: none; display: flex; } &-tree-wrapper { color: @gray-600; padding: 8px 8px 4px 8px; max-width: 100vw; .@{tree-prefix} { &-node { &:last-child > div { margin-bottom: @tree-node-margin-bottom; } } &-content { white-space: nowrap; padding-left: 4px; .@{tree-prefix}-text { overflow: hidden; text-overflow: ellipsis; } } } .@{treeSelect-prefix}-single .@{tree-prefix}-content { transition: all .2s; cursor: pointer; padding-left: 0; &:hover { .@{treeSelect-prefix}-content-wrapper:not(.@{treeSelect-prefix}-selected):not(.@{treeSelect-prefix}-disabled) { background: @select-tree-node-hover-bg; color: @select-tree-node-hover-color; } } } } &-result { cursor: pointer; display: flex; overflow: auto; max-height: 80px; flex-flow: wrap; flex-grow: 1; padding: @padding-base-vertical @padding-base-horizontal+@baseOffset 0 @padding-base-horizontal; .@{input-prefix}-rtl &, @{treeSelect-prefix}-rtl &{ padding: @padding-base-vertical @padding-base-horizontal 0 @padding-base-horizontal+@baseOffset; } span { display: inline-block; &.@{treeSelect-prefix}-ellipsis { display: block; overflow: hidden; flex: 1; text-overflow: ellipsis; white-space: nowrap; } } .@{treeSelect-prefix}-ellipsis { margin-bottom: @padding-base-vertical; &:after { content: '\feff '; } } .@{treeSelect-prefix}-input { display: block; min-width: 12px; flex: 1; margin-bottom: @padding-base-vertical; outline: none; white-space: pre-wrap; cursor: text; &:after { content: '\feff '; } } .@{treeSelect-prefix}-item { position: relative; display: inline-block; overflow: hidden; max-width: 80%; padding: @select-result-padding-vertical @select-result-space-16 @select-result-padding-vertical @select-result-space; margin-right: @select-result-space; margin-bottom: @padding-base-vertical; background: @select-result-bg; border-radius: @select-result-border-radius; color: inherit; text-overflow: ellipsis; .@{input-prefix}-rtl &, @{treeSelect-prefix}-rtl &{ padding: @select-result-padding-vertical @select-result-space @select-result-padding-vertical @select-result-space-16; margin-left: @select-result-space; margin-right: 0 } &-compressed { padding: 0 8px; font-size: 80%; opacity: .9; text-overflow: unset; transition: none; > span { vertical-align: middle; letter-spacing: 2px; } } &-more { background: @primary-color-fade-60; color: #fff; } &.@{treeSelect-prefix}-disabled { cursor: not-allowed; &-ltr{ padding-right: @select-result-space; } &-rtl { padding-left: @select-result-space; } } .@{treeSelect-prefix}-close { right: @select-result-space; display: block; background-color: transparent; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: @select-result-space; right: auto; } &:before, &:after { background-color: @gray-500; width: 8px; } &:hover { background-color: transparent; &:before, &:after { background-color: @gray-600; } } } } } &-compressed { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; flex-grow: 1; width: 0; .@{treeSelect-prefix}-ban { &-ltr{ padding-right: @select-result-space; } &-rtl { padding-left: @select-result-space; } } .@{treeSelect-prefix}-input { white-space: nowrap; } .@{treeSelect-prefix}-item { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; flex-shrink: 0; } .@{treeSelect-prefix}-item-only { flex-shrink: 1; } } &-close-warpper { position: absolute; top: 50%; right: 7px; display: block; width: 18px; height: 18px; transform: translate(0, -50%); .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { right: auto; left: 7px; z-index: 1; } .@{treeSelect-prefix}-indicator { right: 2px; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: 2px; right: auto; } } } &-indicator { position: absolute; top: 50%; right: @indicator-start; display: block; width: 12px; height: 12px; color: @gray-500; transform: translate(0, -50%); .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { right: auto; left: @indicator-start; } &.@{treeSelect-prefix}-close { box-sizing: content-box; border-left: 1px solid #fff; border-right: 1px solid #fff; display: none; .close(12px, @select-clear-bg-color); } &.@{treeSelect-prefix}-caret { transition: transform .3s cubic-bezier(0.78, 0.14, 0.15, 0.86); svg { fill: @gray-500; vertical-align: top; } } } &-focus &-close, &-result:hover &-close, &-title-box:hover &-close { display: block; } &-options, &-box-list { position: absolute; min-width: 100%; z-index: @zindex-dropdown; left: 0; display: none; overflow: hidden; background: @dropdown-bg; //background-clip: padding-box; border-radius: @input-dropdown-border-radius; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: auto; right: 0; } .@{treeSelect-prefix}-disabled { &, &:hover, &.@{treeSelect-prefix}-active { background: @input-bg-disabled; cursor: not-allowed; } } } &-options span.@{treeSelect-prefix}-content-wrapper { display: block; padding: 0px 4px; overflow: hidden; text-overflow: ellipsis; } &-options span.@{treeSelect-prefix}-selected { background-color: @select-tree-node-selected-bg; color: @select-tree-node-selected-color;; } &-box-list { display: flex; overflow: hidden; min-height: 200px; max-height: 300px; flex-direction: column; .@{treeSelect-prefix}-header { padding: @dropdown-item-padding-y @dropdown-padding-x; border-bottom: solid 1px #eee; } .@{treeSelect-prefix}-box-options { overflow: auto; flex: 1; padding: @dropdown-item-padding-y 0; .@{treeSelect-prefix}-no-data { padding-top: 60px; color: @gray-500; text-align: center; } } .@{treeSelect-prefix}-option { display: inline-block; &-ltr{ padding-right: @dropdown-padding-x; margin-right: 0; } &-rtl { padding-left: @dropdown-padding-x; margin-left: 0; } } .@{treeSelect-prefix}-filter-input { display: inline-flex; width: 180px; border-width: 1px; border-radius: 2px; float: right; svg { width: 22px; height: 22px; padding: 4px; path { fill: #999; } } } } &-drop-down &-options, &-drop-down &-box-list { top: 100%; margin-top: 4px; box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.02), @dropdown-box-shadow; transform-origin: 0 0; } &-drop-up &-options, &-drop-up &-box-list { bottom: 100%; margin-bottom: 4px; box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1), @dropup-box-shadow; transform-origin: 0 100%; } &-option { position: relative; display: block; overflow: hidden; padding: @dropdown-item-padding-y @dropdown-padding-x+12 @dropdown-item-padding-y @dropdown-padding-x; color: @dropdown-link-color; font-size: @font-size-base; line-height: @line-height-base; text-overflow: ellipsis; transition: none; white-space: nowrap; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { padding: @dropdown-item-padding-y @dropdown-padding-x @dropdown-item-padding-y @dropdown-padding-x+12; } &.@{treeSelect-prefix}-active { background-color: @select-option-active-bgc; color: @select-option-active-color; text-decoration: none; &::after { position: absolute; top: 50%; right: 8px; width: 12px; height: 12px; background: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='@{colors-primary}' d='M913.017 237.02c-25.311-25.312-66.349-25.312-91.66 0l-412.475 412.474-206.237-206.237c-25.312-25.312-66.35-25.312-91.661 0s-25.312 66.35 0 91.66l252.067 252.067c0.729 0.73 1.439 1.402 2.134 2.029 25.434 23.257 64.913 22.585 89.527-2.029l458.303-458.303c25.313-25.312 25.313-66.35 0.001-91.661z'%3E%3C/path%3E%3C/svg%3E"); color: @colors-primary; content: ' '; transform: translateY(-50%); } } &:hover { color: @dropdown-link-color; } &.@{treeSelect-prefix}-disabled { &, &:hover, &.@{treeSelect-prefix}-active { background: @input-bg-disabled; cursor: not-allowed; } } } &-control-mouse &-option:hover { background-color: @select-option-hover-bg; color: @select-option-hover-color; text-decoration: none; } &-control-mouse &-option&-disabled:hover { background: @input-bg-disabled; } &-control-keyboard &-option.@{treeSelect-prefix}-hover { background-color: @select-option-hover-bg; color: @select-option-hover-color; text-decoration: none; } &-control-keyboard &-option { cursor: none; } span&-option { color: @gray-500; } &-small &-result { padding: @padding-small-vertical @padding-small-horizontal+@baseOffset 0 @padding-small-horizontal; .@{treeSelect-prefix}-item, .@{treeSelect-prefix}-ellipsis, .@{treeSelect-prefix}-input { margin-bottom: @padding-small-vertical; } } &-large &-result { padding: @padding-large-vertical @padding-large-horizontal+@baseOffset 0 @padding-large-horizontal; .@{treeSelect-prefix}-item, .@{treeSelect-prefix}-ellipsis, .@{treeSelect-prefix}-input { margin-bottom: @padding-large-vertical; } } &-multiple &-result:not(&-empty) { padding-left: (@padding-base-horizontal / 2); padding-right: @padding-base-horizontal + 22; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { padding-right: (@padding-base-horizontal / 2); padding-left: @padding-base-horizontal + 22; } .@{treeSelect-prefix}-close-warpper { right: 17px; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: 17px; right: auto; } } } &-multiple &-compressed:not(&-empty) { padding-left: (@padding-base-horizontal / 2); padding-right: @padding-base-horizontal+@baseOffset; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { padding-right: (@padding-base-horizontal / 2); padding-left: @padding-base-horizontal+@baseOffset; } .@{treeSelect-prefix}-close-warpper { right: 7px; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: 7px; right: auto; } } } &-large&-multiple &-result { &-ltr { &:not(.@{treeSelect-prefix}-empty) { padding-left: (@padding-large-horizontal / 2); } } &-rtl { &:not(.@{treeSelect-prefix}-empty) { padding-right: (@padding-large-horizontal / 2); } } } &-small&-multiple &-result { &-ltr { &:not(.@{treeSelect-prefix}-empty) { padding-left: (@padding-small-horizontal / 2); } } &-rtl { &:not(.@{treeSelect-prefix}-empty) { padding-right: (@padding-small-horizontal / 2); } } } &-popover { .@{treeSelect-prefix}-result { padding: 14px 14px 8px 14px; max-height: 112px; max-width: 300px; .@{treeSelect-prefix}-item { max-width: 100%; color: @gray-600; font-size: 16px; } } } &-disabled { .@{treeSelect-prefix}-result { cursor: not-allowed; .@{treeSelect-prefix}-item { background: @input-bg-disabled; &-ltr{ padding-right: @select-result-space; } &-rtl { padding-left: @select-result-space; } .@{treeSelect-prefix}-close { display: none; } } } } } .@{treeSelect-prefix}{ &-title-box > .@{input-prefix}-title-box-content { display: flex; } &-title-box &-title-box-title, &-title-box &-result { .inner-title-responsive-offset(@treeSelect-prefix, 0, @baseOffset) } &-title-box &-result { .@{treeSelect-prefix}-item, .@{treeSelect-prefix}-ellipsis, .@{treeSelect-prefix}-input { .inner-title-responsive-scroll-item-bottom(@treeSelect-prefix) } } &-multiple &-title-box &-title-box-title, &-multiple &-title-box &-result { .inner-title-responsive-offset(@treeSelect-prefix, 0, @multiOffset, ~'1' ) } } .@{tree-prefix}-node { .@{treeSelect-prefix}-match { padding: 12px; position: absolute; top: 0; left: 0; display: inline-block; .@{input-prefix}-rtl & ,@{treeSelect-prefix}-rtl & { left: auto; right: 0; } > span { position: absolute; right: 5px; width: 3px; height: 3px; background: @gray-500; border-radius: 50%; margin-top: -1px; text-align: left; &:after, &:before { display: inline-block; content: ''; width: 3px; height: 3px; background: @gray-500; border-radius: 50%; position: absolute; } &:before { transform: translateX(-5px); } &:after { transform: translateX(-10px); } } &.@{treeSelect-prefix}-full { background: @primary-color-fade-10; > span, > span:after, > span:before { background: @colors-primary; } } } }