From 569c1c6063f90298d6d285fec193488c0eea0c8e Mon Sep 17 00:00:00 2001 From: rex Date: Mon, 17 Dec 2018 22:31:32 +0800 Subject: [PATCH] feat(Stepper): add new prop async-change @rex-zsd (#2318) --- packages/stepper/demo/index.vue | 28 +++++++++++++++++-- packages/stepper/en-US.md | 1 + packages/stepper/index.vue | 22 +++++++++++---- .../test/__snapshots__/demo.spec.js.snap | 3 ++ packages/stepper/zh-CN.md | 1 + 5 files changed, 48 insertions(+), 7 deletions(-) diff --git a/packages/stepper/demo/index.vue b/packages/stepper/demo/index.vue index 1676c1a03..55b705d59 100644 --- a/packages/stepper/demo/index.vue +++ b/packages/stepper/demo/index.vue @@ -11,9 +11,18 @@ /> + + + + export default { + i18n: { + 'zh-CN': { + asyncChange: '异步变更' + }, + 'en-US': { + asyncChange: 'Async Change', + } + }, + data() { return { stepper1: 1, - stepper2: null + stepper2: 10, + stepper3: null }; + }, + methods: { + onChange(event) { + this.$toast(`change: ${event}`); + } } }; diff --git a/packages/stepper/en-US.md b/packages/stepper/en-US.md index 4f1400074..31fa7f8ec 100644 --- a/packages/stepper/en-US.md +++ b/packages/stepper/en-US.md @@ -55,6 +55,7 @@ export default { | integer | Whether to allow only integers | `Boolean` | `false` | | disabled | Disable value change | `Boolean` | `false` | | disable-input | Disable input | `Boolean` | `false` | +| async-change | not change input value, only emit event | `Boolean` | `false` | - | ### Event diff --git a/packages/stepper/index.vue b/packages/stepper/index.vue index d109edf62..2d10a8fa4 100644 --- a/packages/stepper/index.vue +++ b/packages/stepper/index.vue @@ -29,6 +29,7 @@ export default create({ value: null, integer: Boolean, disabled: Boolean, + asyncChange: Boolean, disableInput: Boolean, min: { type: [String, Number], @@ -98,11 +99,16 @@ export default create({ const { value } = event.target; const formatted = this.format(value); - if (+value !== formatted) { - event.target.value = formatted; + if (!this.asyncChange) { + if (+value !== formatted) { + event.target.value = formatted; + } + this.currentValue = formatted; + } else { + event.target.value = this.currentValue; + this.$emit('input', formatted); + this.$emit('change', formatted); } - - this.currentValue = formatted; }, onChange(type) { @@ -113,7 +119,13 @@ export default create({ const diff = type === 'minus' ? -this.step : +this.step; const value = Math.round((this.currentValue + diff) * 100) / 100; - this.currentValue = this.range(value); + + if (!this.asyncChange) { + this.currentValue = this.range(value); + } else { + this.$emit('input', value); + this.$emit('change', value); + } this.$emit(type); }, diff --git a/packages/stepper/test/__snapshots__/demo.spec.js.snap b/packages/stepper/test/__snapshots__/demo.spec.js.snap index 88230dd6c..716178cda 100644 --- a/packages/stepper/test/__snapshots__/demo.spec.js.snap +++ b/packages/stepper/test/__snapshots__/demo.spec.js.snap @@ -8,6 +8,9 @@ exports[`renders demo correctly 1`] = `
+
+
+
diff --git a/packages/stepper/zh-CN.md b/packages/stepper/zh-CN.md index 4db4d0366..67a4748bd 100644 --- a/packages/stepper/zh-CN.md +++ b/packages/stepper/zh-CN.md @@ -57,6 +57,7 @@ export default { | integer | 是否只允许输入整数 | `Boolean` | `false` | 1.1.1 | | disabled | 是否禁用步进器 | `Boolean` | `false` | - | | disable-input | 是否禁用输入框 | `Boolean` | `false` | - | +| async-change | 异步变更,为 `true` 时input值不变化,仅触发事件 | `Boolean` | `false` | - | ### Event