UNPKG

tdesign-react

Version:
593 lines (512 loc) 13.4 kB
// 组件允许单个组件打包,因此默认引入公共基础样式 @import "../../base.less"; @import "./_var.less"; @import "./_mixin.less"; @import "../../mixins/_reset.less"; .@{prefix}-color-picker__panel { padding: 0; width: @color-picker-panel-width; background: @bg-color-container; box-shadow: @color-picker-panel-shadow; border-radius: @border-radius-medium; user-select: none; } .@{prefix}-popup__content { .@{prefix}-color-picker__panel { background: transparent; box-shadow: unset; } } .@{prefix}-color-picker { .reset; &.t-popup__content { box-shadow: @color-picker-panel-shadow; } &__icon { display: flex; align-items: center; justify-content: center; font-size: @color-picker-icon-font-size; background: transparent; transition: @anim-duration-base linear; color: @text-color-secondary; border-radius: @color-picker-icon-radius; cursor: pointer; &:hover { background: @bg-color-container-hover; transition: @anim-duration-base linear; } &.@{prefix}-is-disabled { color: @text-color-disabled; pointer-events: none; } } } .@{prefix}-color-picker__head { display: flex; align-items: center; justify-content: space-between; padding: @color-picker-panel-padding; position: relative; z-index: 2; .@{prefix}-color-picker__close { flex-shrink: 0; } & + .@{prefix}-color-picker__body { padding-top: 0; } } .@{prefix}-color-picker__body { padding: @color-picker-panel-padding; padding-bottom: calc(@color-picker-panel-padding - 4px); } .@{prefix}-color-picker__thumb { position: absolute; z-index: 1; outline: none; border-color: currentcolor; width: @color-picker-slider-thumb-size; height: @color-picker-slider-thumb-size; border-radius: @border-radius-circle; box-shadow: @color-picker-thumbs-shadow; background: @text-color-anti; color: @text-color-brand; padding: @color-picker-slider-thumb-padding; box-sizing: border-box; &::before { content: ""; width: 100%; height: 100%; background: currentcolor; border-radius: @border-radius-circle; display: block; } } .@{prefix}-color-picker__saturation { height: @color-picker-saturation-height; border-radius: @color-picker-saturation-radius; position: relative; overflow: hidden; background: transparent; &::before, &::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } &::before { /* stylelint-disable-next-line color-no-hex */ background: linear-gradient(90deg, #fff, transparent); } &::after { /* stylelint-disable-next-line color-no-hex */ background: linear-gradient(0deg, #000, transparent); } .@{prefix}-color-picker__thumb { width: @color-picker-saturation-thumb-size; height: @color-picker-saturation-thumb-size; border-radius: @border-radius-circle; transform: translate(-50%, -50%); } } .transparentBgImage () { /* stylelint-disable-next-line color-no-hex */ background-image: linear-gradient(45deg, #c5c5c5 25%, transparent 0, transparent 75%, #c5c5c5 0, #c5c5c5), linear-gradient(45deg, #c5c5c5 25%, transparent 0, transparent 75%, #c5c5c5 0, #c5c5c5); background-size: 6px 6px; background-position: 0 0, 3px 3px; } .@{prefix}-color-picker__slider-wrapper { border-radius: @color-picker-slider-wrapper-radius; padding: @color-picker-slider-wrapper-padding; position: relative; &--hue-type { /* stylelint-disable-next-line color-named */ background: red; } &--alpha-type { background: @text-color-anti; .transparentBgImage(); } } .@{prefix}-color-picker__slider-padding { position: absolute; left: 0; top: 0; width: 100%; height: @color-picker-slider-height; border-radius: @color-picker-slider-wrapper-radius; } .@{prefix}-color-picker__slider { height: @color-picker-slider-height; position: relative; border-radius: @color-picker-slider-wrapper-radius; cursor: pointer; color: transparent; outline: none; z-index: 1; .@{prefix}-color-picker__thumb { transform: translate(@color-picker-slider-thumb-transform-x, -50%); top: 50%; } .@{prefix}-color-picker__rail { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; border-radius: inherit; } } .@{prefix}-color-picker__alpha, .@{prefix}-color-picker__format { margin: @color-picker-margin 0 0 0; } .@{prefix}-color-picker__hue { /* stylelint-disable color-no-hex, color-named */ background: linear-gradient( 90deg, red, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red ); } .@{prefix}-color-picker__alpha { .@{prefix}-color-picker__rail { background: linear-gradient(to right, transparent, currentcolor); } } .@{prefix}-color-picker__sliders-wrapper { display: flex; align-items: center; margin: @color-picker-margin 0; } .@{prefix}-color-picker__sliders { width: 100%; } .@{prefix}-color-picker__sliders-preview { flex-shrink: 0; margin-left: @color-picker-margin; width: @color-picker-gradient-preview-width; height: @color-picker-gradient-preview-height; border-radius: @color-picker-gradient-preview-radius; overflow: hidden; background: @text-color-anti; .transparentBgImage(); &-inner { display: block; width: 100%; height: 100%; } } .@{prefix}-color-picker__gradient { padding: 0; display: flex; align-items: center; margin-bottom: @color-picker-margin; &-slider { flex: 1; } &-degree { position: relative; flex-shrink: 0; margin-left: @color-picker-margin; width: @color-picker-degree-width; .@{prefix}-input { margin: 0; font: @color-picker-font; } .@{prefix}-input-number { width: 100%; padding: 0; } } .gradient-thumbs { position: absolute; width: 100%; height: 100%; top: 0; left: 0; margin: 0; padding: 0; list-style: none; border-radius: inherit; cursor: pointer; &__item { top: 50%; left: 0; transform: translate(-50%, -50%); z-index: 0; cursor: pointer; &::before { display: none; } &.@{prefix}-is-active { z-index: 1; outline: 2px solid @component-border; } &-inner { display: block; width: 100%; height: 100%; border-radius: @border-radius-circle; overflow: hidden; &::before { content: ""; width: 100%; height: 100%; display: block; background-color: currentcolor; } } } } } .@{prefix}-color-picker__format { display: flex; align-items: center; justify-content: space-between; &--item { &:first-child { flex-shrink: 0; } &:last-child { flex: 1; } .@{prefix}-size-m, .@{prefix}-input.@{prefix}-size-m { font: @color-picker-font; } .@{prefix}-input-number .@{prefix}-input { margin: 0; } .input-group { display: flex; align-items: center; justify-content: space-around; margin-left: @color-picker-input-format-margin-left; &__item { flex: 1; width: 0; margin-left: -1px; .@{prefix}-input { padding: 0 1px; &:focus, &:focus-within, &:hover { z-index: 1; } } &:not(:first-child):not(:last-child) { .@{prefix}-input { border-radius: 0; } } &:first-child:not(:last-child) { .@{prefix}-input { border-top-right-radius: 0; border-bottom-right-radius: 0; } } &:last-child:not(:first-child) { .@{prefix}-input { border-top-left-radius: 0; border-bottom-left-radius: 0; } } } .@{prefix}-input-number { width: 100%; padding: 0; max-width: 100%; } } } &-mode-select { width: @color-picker-select-format-width; display: flex; .t-select, .t-input { padding-right: 0; } .t-input--prefix > .t-input__suffix { padding-left: 0; } .t-select__right-icon { margin-right: @color-picker-select-format-margin-right; } } } .@{prefix}-color-picker__swatches-wrap { margin-top: @color-picker-margin; position: relative; .@{prefix}-color-picker__swatches { + .@{prefix}-color-picker__swatches { margin-top: @color-picker-margin; } &--title { font: @color-picker-font; padding: 0; color: @text-color-primary; display: flex; align-items: center; justify-content: space-between; } &--actions { margin-left: auto; display: flex; align-items: center; font-size: 0; .@{prefix}-color-picker__icon { width: @color-picker-swatch-icon-size; height: @color-picker-swatch-icon-size; margin-left: @color-picker-swatch-action-margin-left; } } &--items { width: 100%; list-style: none; display: grid; grid-template-columns: repeat(@color-picker-swatch-columns, @color-picker-swatch-width); gap: @color-picker-swatch-row-gap @color-picker-swatch-column-gap; max-height: @color-picker-swatch-rows-max-height; overflow-x: hidden; overflow-y: auto; padding: @color-picker-swatch-item-padding; position: relative; left: @color-picker-swatch-item-left-negative-padding; box-sizing: content-box; } &--item { display: flex; width: @color-picker-swatch-width; height: @color-picker-swatch-height; border-radius: @border-radius-default; padding: @color-picker-swatch-padding; overflow: hidden; cursor: pointer; align-items: center; justify-content: center; position: relative; transform-origin: center; transition: all @anim-duration-base @anim-time-fn-easing; box-sizing: border-box; &:hover { transform: scale(1.25); transform-origin: center; } // 暂时先不删,待react同步后再删除 &__color { width: 100%; height: 100%; position: relative; overflow: hidden; border: 1px solid @component-border; border-radius: @border-radius-default; flex-shrink: 0; } // 暂时先不删,待react同步后再删除 &__inner { width: 100%; height: 100%; display: block; } &:not(.@{prefix}-is-active):hover { padding: 0; } // 暂时先不删,待react同步后再删除 &.@{prefix}-is-active .@{prefix}-color-picker__swatches--item__color, &.@{prefix}-is-active .@{prefix}-color-picker__swatches--color { border-color: @text-color-brand; } } &--color { width: 100%; height: 100%; position: relative; overflow: hidden; border-radius: @border-radius-default; box-sizing: border-box; } &--inner { width: 100%; height: 100%; display: block; border-radius: @border-radius-default; box-shadow: @colot-picker-swatch-item-color-inset-shadow; } } } .@{prefix}-color-picker__trigger { &--default { display: inline-flex; align-items: center; > .@{prefix}-input { width: fit-content; } .@{prefix}-input { padding: @color-picker-trigger-input-padding; } &__color { width: 100%; height: 100%; box-sizing: border-box; display: flex; align-items: center; .color-inner { border: 1px solid @scrollbar-color; display: block; width: @color-picker-trigger-input-color-inner-size; height: @color-picker-trigger-input-color-inner-size; color: transparent; position: relative; border-radius: @border-radius-small; &.@{prefix}-size-s { width: @color-picker-trigger-input-color-inner-size-s; height: @color-picker-trigger-input-color-inner-size-s; } &.@{prefix}-size-l { width: @color-picker-trigger-input-color-inner-size-l; height: @color-picker-trigger-input-color-inner-size-l; } } } } } .@{prefix}-color-picker__gradient-slider { padding: @color-picker-slider-wrapper-padding; border-radius: @color-picker-slider-wrapper-radius; .@{prefix}-color-picker--bg-alpha { background: @text-color-anti; .transparentBgImage(); } } .@{prefix}-color-picker__panel.@{prefix}-is-disabled { .@{prefix}-color-picker__saturation, .@{prefix}-color-picker__slider, .@{prefix}-color-picker__swatches--item { opacity: .8; cursor: not-allowed; } .@{prefix}-color-picker__gradient-slider { .gradient-thumbs, .gradient-thumbs__item { cursor: not-allowed; } } .@{prefix}-color-picker__swatches--item:hover { padding: @color-picker-swatch-padding; } } // 覆盖select-option 默认样式,使其更紧凑点 .@{prefix}-color-picker__select-options { > .@{prefix}-popup__content { box-shadow: @shadow-1, @shadow-inset-top, @shadow-inset-right, @shadow-inset-bottom, @shadow-inset-left; } }