@import '../custom.less';
@import './vars.less';
@button-prefix-cls: ~'@{css-prefix}button';
@svg-prefix-cls: ~'@{css-prefix}svg';
.@{button-prefix-cls} {
.inject-Button-vars();
display: inline-flex;
align-items: center;
justify-content: center;
appearance: none;
text-align: center;
white-space: nowrap;
text-overflow: ellipsis;
cursor: pointer;
user-select: none;
border-image: initial;
overflow: hidden;
transition: all 0.3s;
outline: 0;
vertical-align: middle;
font-weight: var(--tv-Button-font-weight);
border: var(--tv-Button-border-width) solid;
line-height: var(--tv-Button-line-height);
border-radius: var(--tv-Button-border-radius);
&.is-round {
border-radius: var(--tv-Button-border-radius-round);
}
&.is-circle.is-circle {
border-radius: var(--tv-Button-border-radius-circle);
aspect-ratio: 1;
min-width: initial;
padding: initial;
}
.size-mixin(@size) {
@fs: %('var(--tv-Button-font-size%a)', @size);
@h: %('var(--tv-Button-height%a)', @size);
@p: %('var(--tv-Button-padding-x%a)', @size);
@mw: %('var(--tv-Button-min-width%a)', @size);
@iconSize: %('var(--tv-Button-size-icon-font-size%a)', @size);
font-size: e(@fs);
height: e(@h);
padding: 0 e(@p);
min-width: e(@mw);
&.is-only-icon .@{svg-prefix-cls} {
font-size: e(@iconSize);
}
}
.size-mixin(e(''));
&.@{button-prefix-cls}--large {
.size-mixin(-large);
}
&.@{button-prefix-cls}--medium {
.size-mixin(-medium);
}
&.@{button-prefix-cls}--small {
.size-mixin(-small);
}
&.@{button-prefix-cls}--mini {
.size-mixin(-mini);
}
.color-theme-mixin(@theme) {
@c: %('var(--tv-Button-text-color-%a)', @theme);
@bg: %('var(--tv-Button-bg-color-%a)', @theme);
@border: %('var(--tv-Button-border-color-%a)', @theme);
@icon: %('var(--tv-Button-icon-color-%a)', @theme);
color: e(@c);
background-color: e(@bg);
border-color: e(@border);
fill: e(@icon);
}
.color-plain-mixin(@theme) {
@c: %('var(--tv-Button-text-color-plain-%a)', @theme);
@bg: %('var(--tv-Button-bg-color-plain-%a)', @theme);
@border: %('var(--tv-Button-border-color-plain-%a)', @theme);
color: e(@c);
background-color: e(@bg);
border-color: e(@border);
}
.color-ghost-mixin(@theme) {
@c: %('var(--tv-Button-text-color-ghost-%a)', @theme);
@border: %('var(--tv-Button-border-color-ghost-%a)', @theme);
color: e(@c);
border-color: e(@border);
}
.color-active-mixin(@theme, @plain) {
@bg: %('var(--tv-Button-bg-color%a-active-%a)', @plain, @theme);
@border: %('var(--tv-Button-border-color%a-active-%a)', @plain, @theme);
@c: %('var(--tv-Button-text-color%a-active-%a)', @plain, @theme);
&:active,
&:focus,
&:hover,
&.is-active,
&.is-loading.is-loading.is-loading.is-loading.is-loading {
background-color: e(@bg);
border-color: e(@border);
color: e(@c);
}
}
.color-ghost-active-mixin(@theme) {
@border: %('var(--tv-Button-border-color-ghost-active-%a)', @theme);
&:active,
&:focus,
&:hover,
&.is-active {
border-color: e(@border);
}
}
&.@{button-prefix-cls}--default {
.color-theme-mixin(default);
.color-active-mixin(default, e(''));
&.is-plain {
.color-plain-mixin(default);
.color-active-mixin(default, -plain);
}
&.is-ghost {
.color-ghost-mixin(default);
.color-ghost-active-mixin(default);
}
}
&.@{button-prefix-cls}--primary {
.color-theme-mixin(primary);
.color-active-mixin(primary, e(''));
&.is-plain {
.color-plain-mixin(primary);
.color-active-mixin(primary, -plain);
}
&.is-ghost {
.color-ghost-mixin(primary);
.color-ghost-active-mixin(primary);
}
}
&.@{button-prefix-cls}--success {
.color-theme-mixin(success);
.color-active-mixin(success, e(''));
&.is-plain {
.color-plain-mixin(success);
.color-active-mixin(success, -plain);
}
&.is-ghost {
.color-ghost-mixin(success);
.color-ghost-active-mixin(success);
}
}
&.@{button-prefix-cls}--warning {
.color-theme-mixin(warning);
.color-active-mixin(warning, e(''));
&.is-plain {
.color-plain-mixin(warning);
.color-active-mixin(warning, -plain);
}
&.is-ghost {
.color-ghost-mixin(warning);
.color-ghost-active-mixin(warning);
}
}
&.@{button-prefix-cls}--danger {
.color-theme-mixin(danger);
.color-active-mixin(danger, e(''));
&.is-plain {
.color-plain-mixin(danger);
.color-active-mixin(danger, -plain);
}
&.is-ghost {
.color-ghost-mixin(danger);
.color-ghost-active-mixin(danger);
}
}
&.@{button-prefix-cls}--info {
.color-theme-mixin(info);
.color-active-mixin(info, e(''));
&.is-plain {
.color-plain-mixin(info);
.color-active-mixin(info, -plain);
}
&.is-ghost {
.color-ghost-mixin(info);
.color-ghost-active-mixin(info);
}
}
&.is-ghost.is-ghost.is-ghost.is-ghost.is-ghost.is-ghost {
background-color: var(--tv-Button-bg-color-ghost);
}
&.is-disabled.is-disabled.is-disabled.is-disabled.is-disabled,
&[disabled][disabled][disabled][disabled][disabled] {
color: var(--tv-Button-text-color-disabled);
background-color: var(--tv-Button-bg-color-disabled);
border-color: var(--tv-Button-border-color-disabled);
fill: var(--tv-Button-icon-color-disabled);
cursor: not-allowed;
&.is-ghost {
border-color: var(--tv-Button-border-color-ghost-disabled);
}
&.is-only-icon {
.tiny-svg {
fill: var(--tv-Button-icon-color-disabled);
}
&.tiny-button--text {
background-color: transparent;
}
}
}
&.is-loading {
&.@{button-prefix-cls}--default {
.tiny-svg {
fill: var(--tv-Button-icon-color-default-loading);
}
}
&.@{button-prefix-cls}--primary {
.tiny-svg {
fill: var(--tv-Button-icon-color-primary-loading);
}
}
}
.size-only-icon-mixin(@size) {
@wh: %('var(--tv-Button-height%a)', @size);
width: e(@wh);
height: e(@wh);
min-width: e(@wh);
min-height: e(@wh);
}
.size-only-icon-ontext-iconsize-mixin(@size) {
@wh: %('calc( var(--tv-Button-height%a) - 8px)', @size);
font-size: e(@wh);
}
.tiny-svg {
vertical-align: text-top;
}
&.is-only-icon.is-only-icon {
display: inline-flex;
align-items: center;
justify-content: center;
&.@{button-prefix-cls}--default {
border-color: var(--tv-Button-border-color-only-icon-default);
svg {
fill: var(--tv-Button-color-only-icon-default);
}
&:active,
&:focus,
&:hover,
&.is-active {
border-color: var(--tv-Button-border-color-only-icon-default-hover);
svg {
fill: var(--tv-Button-color-only-icon-default-hover);
}
}
}
padding: 0;
.size-only-icon-mixin(e(''));
&.@{button-prefix-cls}--large {
.size-only-icon-mixin(-large);
}
&.@{button-prefix-cls}--medium {
.size-only-icon-mixin(-medium);
}
&.@{button-prefix-cls}--small {
.size-only-icon-mixin(-small);
}
&.@{button-prefix-cls}--mini {
.size-only-icon-mixin(-mini);
}
&:not(.is-circle) {
border-radius: var(--tv-Button-border-radius-only-icon);
}
&.@{button-prefix-cls}--text {
border: none;
border-radius: var(--tv-Button-border-radius-only-icon-ontext);
background-color: var(--tv-Button-bg-color-only-icon-ontext);
svg {
fill: var(--tv-Button-bg-color-only-icon);
}
&:active,
&:focus,
&:hover,
&.is-active {
background-color: var(--tv-Button-bg-color-only-icon-ontext-hover);
svg {
fill: var(--tv-Button-bg-color-only-icon-hover);
}
}
.size-only-icon-ontext-iconsize-mixin(e(''));
&.@{button-prefix-cls}--large {
.size-only-icon-ontext-iconsize-mixin(-large);
}
&.@{button-prefix-cls}--medium {
.size-only-icon-ontext-iconsize-mixin(-medium);
}
&.@{button-prefix-cls}--small {
.size-only-icon-ontext-iconsize-mixin(-small);
}
&.@{button-prefix-cls}--mini {
.size-only-icon-ontext-iconsize-mixin(-mini);
}
& .@{svg-prefix-cls} {
fill: var(--tv-Button-icon-color);
color: var(--tv-Button-icon-color);
}
&.is-disabled {
&:hover {
svg {
fill: var(--tv-Button-disabled-color-only-icon-hover);
}
}
}
}
}
&.@{button-prefix-cls}--text:not(.is-only-icon):not(.is-icon) {
border: none;
border-radius: 0;
padding: 0;
min-width: unset;
height: auto;
font-size: var(--tv-Button-font-size-ontext);
color: var(--tv-Button-text-color-ontext);
background-color: transparent;
&:hover {
text-decoration: underline;
}
&.is-disabled.is-disabled.is-disabled.is-disabled,
&.is-loading.is-loading.is-loading.is-loading,
&[disabled][disabled][disabled][disabled][disabled][disabled] {
color: var(--tv-Button-text-color-ontext-disabled);
background-color: transparent;
text-decoration: none;
}
}
&.is-icon {
display: inline-flex;
align-items: center;
.tiny-svg {
margin-right: var(--tv-Button-margin-right-isicon-svg);
fill: var(--tv-Button-color-icon-svg);
}
}
&.@{button-prefix-cls}--text.is-icon {
border: none;
border-radius: 0;
padding: 0;
min-width: unset;
height: auto;
font-size: var(--tv-Button-font-size-isicon-ontext);
color: var(--tv-Button-text-color-isicon-ontext);
background-color: transparent;
&:hover {
text-decoration: underline;
}
&.is-disabled.is-disabled.is-disabled.is-disabled,
&.is-loading.is-loading.is-loading.is-loading,
&[disabled][disabled][disabled][disabled][disabled][disabled] {
color: var(--tv-Button-text-color-ontext-disabled);
background-color: transparent;
text-decoration: none;
}
}
& > img {
margin-right: 4px;
vertical-align: middle;
}
& + & {
margin-left: var(--tv-Button-margin-left-btn-to-btn-md);
}
&.@{button-prefix-cls}--large + &.@{button-prefix-cls}--large,
&.@{button-prefix-cls}--medium + &.@{button-prefix-cls}--medium {
margin-left: var(--tv-Button-margin-left-btn-to-btn-lg);
}
&.is-loading > svg {
margin-right: var(--tv-Button-margin-right-isloading-svg);
}
}