diff --git a/packages/common/style/var.less b/packages/common/style/var.less index dc52cfb1..358e6155 100644 --- a/packages/common/style/var.less +++ b/packages/common/style/var.less @@ -111,3 +111,9 @@ // Search @search-background-color: #f7f8fA; + +// Stepper +@stepper-background-color: #f2f3f5; +@stepper-button-disabled-color: #f7f8fa; +@stepper-border-radius: 4px; +@stepper-input-disabled-color: #f2f3f5; diff --git a/packages/stepper/index.less b/packages/stepper/index.less index c20f39e8..3b19a08f 100644 --- a/packages/stepper/index.less +++ b/packages/stepper/index.less @@ -3,33 +3,17 @@ .van-stepper { font-size: 0; - &__minus, - &__plus, - &__input-wrapper { - display: inline-block; - vertical-align: middle; - background-color: @white; - } - - &__minus { - border-radius: 2px 0 0 2px; - - &::after { - display: none; - } - } - - &__plus { - border-radius: 0 2px 2px 0; - } - &__minus, &__plus { position: relative; - width: 40px; - height: 30px; + display: inline-block; + width: 28px; + height: 28px; padding: 5px; - border: 1px solid @border-color; + margin: 1px; + vertical-align: middle; + background-color: @stepper-background-color; + border: 0; box-sizing: border-box; &::before { @@ -50,7 +34,7 @@ bottom: 0; left: 0; margin: auto; - background-color: @gray-darker; + background-color: @text-color; content: ''; } @@ -59,7 +43,7 @@ } &--disabled { - background-color: @background-color; + background-color: @stepper-button-disabled-color; &::before, &::after { @@ -68,36 +52,42 @@ } &--disabled&--hover { - background-color: @background-color; + background-color: @stepper-button-disabled-color; } } - &__input-wrapper { - position: relative; - width: 35px; - height: 30px; - padding: 1px; - font-size: 14px; - color: @gray-darker; - text-align: center; - border: 1px solid @border-color; - border-width: 1px 0; - border-radius: 0; - box-sizing: border-box; + &__minus { + border-radius: @stepper-border-radius 0 0 @stepper-border-radius; - &--disabled { - color: @gray; - background-color: @background-color; + &::after { + display: none; } } + &__plus { + border-radius: 0 @stepper-border-radius @stepper-border-radius 0; + } + &__input { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - min-height: 0; // reset wechat default min height - transform: translate3d(-50%, -50%, 0); - appearance: none; + display: inline-block; + width: 30px; + height: 26px; + padding: 1px; + margin: 1px; + font-size: 14px; + color: @text-color; + text-align: center; + vertical-align: middle; + background-color: @stepper-background-color; + border: 0; + border-width: 1px 0; + border-radius: 0; + box-sizing: content-box; + -webkit-appearance: none; + + &--disabled { + color: @gray; + background-color: @stepper-input-disabled-color; + } } } diff --git a/packages/stepper/index.ts b/packages/stepper/index.ts index 40b1d0dd..5289dc3d 100644 --- a/packages/stepper/index.ts +++ b/packages/stepper/index.ts @@ -1,9 +1,5 @@ import { VantComponent } from '../common/component'; -// Note that the bitwise operators and shift operators operate on 32-bit ints -// so in that case, the max safe integer is 2^31-1, or 2147483647 -const MAX = 2147483647; - VantComponent({ field: true, @@ -25,7 +21,7 @@ VantComponent({ }, max: { type: null, - value: MAX + value: Number.MAX_SAFE_INTEGER }, step: { type: null, @@ -45,10 +41,14 @@ VantComponent({ watch: { value(value) { - if (value !== '') { - this.set({ - value: this.range(value) - }); + if (value === '') { + return; + } + + const newValue = this.range(value); + + if (typeof newValue === 'number' && value !== newValue) { + this.set({ value: newValue }); } } }, @@ -64,12 +64,6 @@ VantComponent({ }, methods: { - onClickWrapper() { - if (!this.data.focus) { - this.setData({ focus: true }); - } - }, - onFocus(event: Weapp.Event) { this.$emit('focus', event.detail); }, diff --git a/packages/stepper/index.wxml b/packages/stepper/index.wxml index b14e1fc4..923b5545 100644 --- a/packages/stepper/index.wxml +++ b/packages/stepper/index.wxml @@ -1,24 +1,24 @@ + + - - - +