From 425886be0a524da9ebb63746db671efabbf02662 Mon Sep 17 00:00:00 2001 From: anlyyao Date: Wed, 4 Jan 2023 23:08:56 +0800 Subject: [PATCH 1/4] feat(Button): add some css variables --- src/button/button.less | 54 ++++++++++++++++++++++++++------- src/button/button.ts | 11 +++++-- src/button/button.wxml | 2 +- src/calendar/calendar.less | 5 ++- src/common/template/button.wxml | 1 + 5 files changed, 57 insertions(+), 16 deletions(-) diff --git a/src/button/button.less b/src/button/button.less index cf1f25bce..57741aa11 100644 --- a/src/button/button.less +++ b/src/button/button.less @@ -56,18 +56,24 @@ @button-danger-disabled-bg: var(--td-button-danger-disabled-bg, @error-color-3); // primary + outline @button-primary-outline-color: var(--td-button-primary-outline-color, @primary-color); +@button-primary-outline-border-color: var(--td-button-primary-outline-border-color, @button-primary-outline-color); @button-primary-outline-disabled-color: var(--td-button-primary-outline-disabled-color, @primary-color-3); // danger + outline @button-danger-outline-color: var(--td-button-danger-outline-color, @error-color); +@button-danger-outline-border-color: var(--td-button-danger-outline-border-color, @button-danger-outline-color); @button-danger-outline-disabled-color: var(--td-button-danger-outline-disabled-color, @button-danger-disabled-color); // light + outline @button-light-outline-color: var(--td-button-light-outline-color, @primary-color); +@button-light-outline-border-color: var(--td-button-light-outline-border-color, @button-light-outline-color); +@button-light-outline-bg-color: var(--td-button-light-outline-bg-color, @primary-color-1); @button-light-outline-disabled-color: var(--td-button-light-outline-disabled-color, @primary-color-3); // primary + dashed @button-primary-dashed-color: var(--td-button-primary-dashed-color, @primary-color); +@button-primary-dashed-border-color: var(--td-button-primary-dashed-border-color, @button-primary-dashed-color); @button-primary-dashed-disabled-color: var(--td-button-primary-dashed-disabled-color, @primary-color-3); // danger + dashed @button-danger-dashed-color: var(--td-button-danger-dashed-color, @error-color); +@button-danger-dashed-border-color: var(--td-button-danger-dashed-border-color, @button-danger-dashed-color); @button-danger-dashed-disabled-color: var(--td-button-danger-dashed-disabled-color, @button-danger-disabled-color); // primary + text @button-primary-text-color: var(--td-button-primary-text-color, @primary-color); @@ -86,6 +92,14 @@ @button-ghost-danger-color: var(--td-button-ghost-danger-color, @error-color); @button-ghost-danger-border-color: var(--td-button-ghost-danger-border-color, @error-color); +// 激活态背景色 +@button-default-active-bg-color: var(--td-button-default-active-bg-color, @gray-color-5); +@button-light-active-bg-color: var(--td-button-light-active-bg-color, @primary-color-2); +@button-primary-active-bg-color: var(--td-button-primary-active-bg-color, @primary-color-9); +@button-danger-active-bg-color: var(--td-button-danger-active-bg-color, @error-color-7); +@button-outline-active-bg-color: var(--td-button-outline-active-bg-color, @gray-color-1); +@button-text-active-bg-color: var(--td-button-text-active-bg-color, @primary-color-1); + @button: ~'@{prefix}-button'; .button-size(@size) { @@ -112,11 +126,16 @@ @borderColor: 'button-@{theme}-border-color'; @disabledColor: 'button-@{theme}-disabled-color'; @disabledBgColor: 'button-@{theme}-disabled-bg'; + @activeBgColor: 'button-@{theme}-active-bg-color'; .@{button}--@{theme} { color: @@color; background-color: @@bgColor; - border: 1px solid @@borderColor; + border: @button-border-width solid @@borderColor; + + &::after { + background-color: @@activeBgColor; + } &.@{button}--disabled { color: @@disabledColor; @@ -144,7 +163,6 @@ white-space: nowrap; text-align: center; background-image: none; - cursor: pointer; transition: all 0.3s; user-select: none; touch-action: manipulation; @@ -152,12 +170,15 @@ outline: none; font-family: PingFang SC, Microsoft YaHei, Arial Regular; font-weight: @button-font-weight; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + -webkit-user-select: none; + user-select: none; /* stylelint-disable-next-line */ -webkit-appearance: none; &::after { - background-color: #000; content: ' '; opacity: 0; top: 0; @@ -176,6 +197,10 @@ background: none; border: 0; + &::after { + background-color: @button-text-active-bg-color; + } + &.@{prefix}-button--size-medium { width: auto; height: auto; @@ -215,8 +240,8 @@ &--ghost { background-color: transparent; - border: 1px solid @button-ghost-color; - color: @button-ghost-border-color; + border-color: @button-ghost-border-color; + color: @button-ghost-color; &.@{button}--disabled { color: @button-ghost-disabled-color; @@ -238,9 +263,13 @@ border-color: @button-default-border-color; background-color: transparent; + &::after { + background-color: @button-outline-active-bg-color; + } + &.@{prefix}-button--primary { color: @button-primary-outline-color; - border-color: @button-primary-outline-color; + border-color: @button-primary-outline-border-color; &.@{button}--disabled { background-color: transparent; @@ -251,7 +280,7 @@ &.@{prefix}-button--danger { color: @button-danger-outline-color; - border-color: @button-danger-outline-color; + border-color: @button-danger-outline-border-color; &.@{button}--disabled { background-color: transparent; @@ -261,8 +290,9 @@ } &.@{prefix}-button--light { - background-color: @button-light-bg-color; - border-color: @button-light-outline-color; + color: @button-light-outline-color; + background-color: @button-light-outline-bg-color; + border-color: @button-light-outline-border-color; &.@{button}--disabled { background-color: transparent; @@ -278,7 +308,8 @@ &.@{prefix}-button--primary { color: @button-primary-dashed-color; - border-color: @button-primary-dashed-color; + border-color: @button-primary-dashed-border-color; + &.@{button}--disabled { background-color: transparent; color: @button-primary-dashed-disabled-color; @@ -288,7 +319,8 @@ &.@{prefix}-button--danger { color: @button-danger-dashed-color; - border-color: @button-danger-dashed-color; + border-color: @button-danger-dashed-border-color; + &.@{button}--disabled { background-color: transparent; color: @button-danger-dashed-disabled-color; diff --git a/src/button/button.ts b/src/button/button.ts index 1e6dbdcc8..73bb6a2db 100644 --- a/src/button/button.ts +++ b/src/button/button.ts @@ -44,9 +44,14 @@ export default class Button extends SuperComponent { methods = { setClass() { - const classList = [name, `${prefix}-class`, `${name}--${this.data.theme}`, `${name}--size-${this.data.size}`]; + const classList = [ + name, + `${prefix}-class`, + `${name}--${this.data.theme || 'default'}`, + `${name}--size-${this.data.size || 'medium'}`, + ]; - classList.push(`${name}--${this.data.shape}`); + classList.push(`${name}--${this.data.shape || 'rectangle'}`); if (this.data.block) { classList.push(`${name}--block`); @@ -54,7 +59,7 @@ export default class Button extends SuperComponent { if (this.data.disabled) { classList.push(`${name}--disabled`); } - classList.push(`${name}--${this.data.variant}`); + classList.push(`${name}--${this.data.variant || 'base'}`); if (this.data.ghost) { classList.push(`${name}--ghost`); } diff --git a/src/button/button.wxml b/src/button/button.wxml index 7cd74ca32..422402120 100644 --- a/src/button/button.wxml +++ b/src/button/button.wxml @@ -4,7 +4,7 @@