UNPKG

winbox-ui-next

Version:

We Design Vue 2.0: A Vue.js 3 UI Library

284 lines (237 loc) 6.84 kB
@import '../../style/mixins/index.less'; @import './token.less'; @radio-prefix-cls: ~'@{prefix}-radio'; .@{radio-prefix-cls}, .@{radio-prefix-cls}-button { > input[type='radio'] { position: absolute; top: 0; left: 0; width: 0; height: 0; opacity: 0; &:focus + .@{prefix}-radio-icon-hover::before { background-color: @icon-hover-color-bg; } } } .icon-hover(@radio-prefix-cls, @radio-layout-height, 0); .@{radio-prefix-cls} { position: relative; display: inline-flex; align-items: center; padding-left: (@radio-size-mask-height / 2) - (@radio-layout-height / 2); font-size: @radio-font-text-size; line-height: unset; cursor: pointer; // radio circle &-label { margin-left: @radio-margin-text-left; color: @radio-color-text; } &-icon { position: relative; display: block; box-sizing: border-box; width: @radio-layout-height; height: @radio-layout-height; line-height: @radio-layout-height; border: @radio-border-width solid @radio-color-border; border-radius: @radio-border-radius; &::after { position: absolute; top: 0; left: 0; display: inline-block; box-sizing: border-box; width: @radio-layout-height - @radio-border-width * 2; height: @radio-layout-height - @radio-border-width * 2; background-color: @radio-color-bg; border-radius: @radio-border-radius; transform: scale(0); transition: transform @transition-duration-3 @transition-timing-function-overshoot; content: ''; } } &:hover &-icon { border-color: @radio-color-border_hover; } &-checked &-icon { border-color: @radio-color-bg_checked; &::after { background-color: @color-primary-6; transform: scale(0.6); } } &-checked:hover &-icon { border-color: @radio-color-bg_checked; } &-disabled { cursor: not-allowed; .@{prefix}-radio-icon-hover { cursor: not-allowed; } .@{radio-prefix-cls}-label { color: @radio-color-text_disabled; } } &-disabled &-icon { border-color: var(--color-neutral-3) !important; &::after { background-color: @radio-color-bg_disabled; } } &-disabled:hover &-icon { border-color: @radio-color-border_disabled; } &-checked&-disabled { .@{radio-prefix-cls}-icon, &:hover .@{radio-prefix-cls}-icon { //background-color: @radio-color-bg_checked_disabled; border-color: @radio-color-border_disabled; } .@{radio-prefix-cls}-icon::after { background-color: @radio-color-dot-bg_checked_disabled; } .@{radio-prefix-cls}-label { color: @radio-color-text_checked_disabled; } } &:hover { .@{prefix}-radio-icon-hover::before { background-color: var(~'@{winbox-cssvars-prefix}-color-fill-2'); border-radius: 2px; } } } // group type .@{radio-prefix-cls}-group { display: inline-block; box-sizing: border-box; .@{radio-prefix-cls} { margin-right: @radio-group-margin-right; } // button type &-button { display: inline-flex; // padding: (@radio-button-spacing / 2); line-height: @radio-size-default-height; background-color: @radio-group-button-color-bg; border-radius: @radio-button-bg-border-radius; } } .@{radio-prefix-cls}-button { position: relative; display: inline-block; margin: 0; color: @radio-button-color-text; font-size: @radio-font-text-size; line-height: @radio-size-default-height - 2; background-color: @radio-button-color-bg; border-radius: @radio-button-border-radius; cursor: pointer; transition: all @transition-duration-1 @transition-timing-function-linear; &-content { position: relative; display: block; padding: 0 @radio-button-padding-horizontal; border: 1px solid var(--color-border); border-left: 0; } &:first-child { .@{radio-prefix-cls}-button-content { border-left: 1px solid var(--color-border); } } // 按钮之间的分割线 &:not(:first-of-type)::before { position: absolute; top: 50%; left: -((@radio-button-spacing - @radio-button-size-separator-width) / 2) - @radio-button-size-separator-width; display: block; width: 0; height: @radio-button-size-separator-height; background-color: @radio-button-color-separator-bg; transform: translateY(-50%); transition: all @transition-duration-1 @transition-timing-function-linear; content: ''; } // 被选中的按钮不需要左右的分割线 &:hover::before, &:hover + &::before, &.@{radio-prefix-cls}-checked::before, &.@{radio-prefix-cls}-checked + &::before { opacity: 0; } &:hover { color: @radio-button-color-text_hover; background-color: @radio-button-color-bg_hover; } &.@{radio-prefix-cls}-checked { color: @radio-button-color-text_active; background-color: @radio-button-color-bg_active; .@{radio-prefix-cls}-button-content { border-color: @color-primary-6; } } &.@{radio-prefix-cls}-disabled { color: @radio-button-color-text_disabled; background-color: @radio-button-color-bg_disabled; cursor: not-allowed; } &.@{radio-prefix-cls}-disabled.@{radio-prefix-cls}-checked { color: @radio-button-color-text_checked_disabled; background-color: @radio-button-color-bg_checked_disabled; } } // size small default large huge .@{radio-prefix-cls}-group { &-size-small { line-height: @radio-size-small-height; &.@{radio-prefix-cls}-group-button, .@{radio-prefix-cls}-button { font-size: @radio-font-text-size_small; line-height: @radio-size-small-height; } } &-size-medium { line-height: @radio-size-medium-height; &.@{radio-prefix-cls}-group-button, .@{radio-prefix-cls}-button { font-size: @radio-font-text-size_medium; line-height: @radio-size-medium-height; } } &-size-mini { line-height: @radio-size-mini-height; &.@{radio-prefix-cls}-group-button, .@{radio-prefix-cls}-button { font-size: @radio-font-text-size_mini; line-height: @radio-size-mini-height; } } } // vertical direction .@{radio-prefix-cls}-group-direction-vertical { // default radio .@{radio-prefix-cls} { display: flex; margin-right: 0; line-height: @radio-group-size-line-height_vertical; } } // dark mode @{winbox-theme-tag}[winbox-theme='dark'] { .@{radio-prefix-cls}-button:not(.@{radio-prefix-cls}-disabled):hover { // color: @color-primary-6; // background-color: transparent; } .@{radio-prefix-cls}-button.@{radio-prefix-cls}-checked { color: var(--color-text-2); background-color: @color-primary-6; } .@{radio-prefix-cls}-button::after { background-color: var(~'@{winbox-cssvars-prefix}-color-bg-3'); } }