diff --git a/src/stepper/README.md b/src/stepper/README.md index 61e98680d..9d2f81b47 100644 --- a/src/stepper/README.md +++ b/src/stepper/README.md @@ -129,6 +129,7 @@ export default { | show-plus `v2.1.2` | Whether to show plus button | _boolean_ | `true` | | show-minus `v2.1.2` | Whether to show minus button | _boolean_ | `true` | | long-press `v2.4.3` | Whether to allow long press | _boolean_ | `true` | +| allow-empty `v2.9.1` | Whether to allow the input to be empty | _boolean_ | `false` | ### Events diff --git a/src/stepper/README.zh-CN.md b/src/stepper/README.zh-CN.md index 2cd2f4b1c..f8c03d49b 100644 --- a/src/stepper/README.zh-CN.md +++ b/src/stepper/README.zh-CN.md @@ -155,6 +155,7 @@ export default { | show-plus `v2.1.2` | 是否显示增加按钮 | _boolean_ | `true` | | show-minus `v2.1.2` | 是否显示减少按钮 | _boolean_ | `true` | | long-press `v2.4.3` | 是否开启长按手势 | _boolean_ | `true` | +| allow-empty `v2.9.1` | 是否允许输入的值为空 | _boolean_ | `false` | ### Events diff --git a/src/stepper/index.js b/src/stepper/index.js index 1d4ec2830..a665b2399 100644 --- a/src/stepper/index.js +++ b/src/stepper/index.js @@ -28,6 +28,7 @@ export default createComponent({ theme: String, integer: Boolean, disabled: Boolean, + allowEmpty: Boolean, inputWidth: [Number, String], buttonSize: [Number, String], asyncChange: Boolean, @@ -154,6 +155,10 @@ export default createComponent({ }, format(value) { + if (this.allowEmpty && value === '') { + return value; + } + value = this.formatNumber(value); // format range diff --git a/src/stepper/test/index.spec.js b/src/stepper/test/index.spec.js index d591d4741..bb1072689 100644 --- a/src/stepper/test/index.spec.js +++ b/src/stepper/test/index.spec.js @@ -387,3 +387,20 @@ test('placeholder prop', () => { }); expect(wrapper.find('.van-stepper__input')).toMatchSnapshot(); }); + +test('allow-empty prop', () => { + const wrapper = mount(Stepper, { + propsData: { + value: '', + allowEmpty: true, + }, + }); + + const input = wrapper.find('input'); + input.trigger('blur'); + expect(wrapper.emitted('input')).toBeFalsy(); + + wrapper.setProps({ allowEmpty: false }); + input.trigger('blur'); + expect(wrapper.emitted('input')[0][0]).toEqual(1); +});