choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
153 lines (125 loc) • 4.03 kB
text/less
@import '../../../../lib/style/themes/default';
@import '../../../../lib/style/mixins/index';
@import '../../../../lib/select/style/mixin';
@import '../../field/style/mixin';
@segmented-prefix: ~'@{c7n-pro-prefix}-segmented';
@pro-radio-prefix-cls: ~'@{c7n-pro-prefix}-radio';
.@{segmented-prefix} {
position: relative;
display: flex;
width: fit-content;
padding: @segmented-padding;
color: @segmented-color;
background: @segmented-bg;
border-radius: @border-radius-base;
&-wrapper {
position: relative;
display: inline-block;
&&-fullwidth {
display: flex;
}
}
&-float-label {
.@{c7n-pro-prefix}-field-label-wrapper {
position: absolute;
top: @segmented-float-label-top;
left: @segmented-float-label-left;
.@{c7n-pro-prefix}-field-label {
font-weight: @output-font-weight;
font-size: @output-float-label-font-size;
}
}
}
&&-vertical {
flex-direction: column;
.@{pro-radio-prefix-cls}-button:not(:first-of-type) {
.@{pro-radio-prefix-cls}-inner {
border-top: @segmented-interval-border-width @segmented-interval-border-color @segmented-interval-border-style;
border-left: none;
}
}
}
&&-fullwidth {
width: 100%;
.@{pro-radio-prefix-cls}-button {
flex: 1;
}
}
.@{pro-radio-prefix-cls}-button {
margin: 0;
line-height: @segmented-item-line-height-base;
background: transparent;
+ .@{pro-radio-prefix-cls}-button {
margin-left: 0;
}
.@{pro-radio-prefix-cls}:focus + .@{pro-radio-prefix-cls}-inner {
box-shadow: none;
}
.@{pro-radio-prefix-cls}:hover:not(:checked) + .@{pro-radio-prefix-cls}-inner {
border-color: @segmented-interval-border-color;
border-radius: 0;
}
&:hover {
.@{pro-radio-prefix-cls}:not(:checked) + .@{pro-radio-prefix-cls}-inner {
border-color: @segmented-interval-border-color;
}
}
.@{pro-radio-prefix-cls}-inner {
border: none;
border-radius: 0;
box-shadow: none;
}
.@{pro-radio-prefix-cls}-label {
text-align: center;
}
&:not(:first-of-type) {
.@{pro-radio-prefix-cls}-inner {
border-left: @segmented-interval-border-width @segmented-interval-border-color @segmented-interval-border-style;
}
}
}
&-sm {
font-size: @font-size-sm;
.@{segmented-prefix} {
padding: @segmented-padding-sm;
}
.@{pro-radio-prefix-cls}-button {
padding: @segmented-item-padding-sm;
line-height: @segmented-item-line-height-sm;
}
}
&-lg {
font-size: @font-size-lg;
.@{pro-radio-prefix-cls}-button {
line-height: @segmented-item-line-height-lg;
}
}
.@{pro-radio-prefix-cls} {
// 选中项的字体颜色及大小,类名选择沿用了 Radio 层级选择
&-button .@{pro-radio-prefix-cls}:not(:disabled):checked + .@{pro-radio-prefix-cls}-inner + span {
color: @segmented-checked-color;
font-weight: @segmented-checked-font-weight;
}
&:disabled + .@{pro-radio-prefix-cls}-inner {
background-color: transparent;
border-color: @segmented-interval-border-color ;
+ .@{pro-radio-prefix-cls}-label {
color: @disabled-color;
}
}
}
.@{pro-radio-prefix-cls}-checked.@{pro-radio-prefix-cls}-checked,
.@{pro-radio-prefix-cls}-checked + .@{pro-radio-prefix-cls}-button {
.@{pro-radio-prefix-cls}-inner {
border: none;
border-color: @segmented-interval-border-color;
}
}
&-active-show {
position: absolute;
background: @segmented-active-bg;
border-radius: @border-radius-base;
box-shadow: rgba(0, 0, 0, 0.05) 0 1px 3px, rgba(0, 0, 0, 0.1) 0 1px 2px;
transition: transform .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1);
}
}