fix(Stepper): should format value when max、min changed (#5257)

This commit is contained in:
Waiter 2019-12-13 10:53:08 +08:00 committed by neverland
parent c9898d6bec
commit d19f676953
2 changed files with 70 additions and 0 deletions

View File

@ -114,6 +114,11 @@ export default createComponent({
}
},
max: 'check',
min: 'check',
integer: 'check',
decimalLength: 'check',
currentValue(val) {
this.$emit('input', val);
this.$emit('change', val, { name: this.name });
@ -121,6 +126,13 @@ export default createComponent({
},
methods: {
check() {
const val = this.format(this.currentValue);
if (!equal(val, this.currentValue)) {
this.currentValue = val;
}
},
// filter illegal characters
filter(value) {
value = String(value).replace(/[^0-9.-]/g, '');

View File

@ -271,3 +271,61 @@ test('name prop', () => {
plus.trigger('click');
expect(wrapper.emitted('change')[1][1]).toEqual({ name: 'name' });
});
test('change min and max', async () => {
const wrapper = mount(Stepper, {
propsData: {
value: 1
}
});
wrapper.setProps({
min: 10,
});
await later();
expect(wrapper.emitted('input')[0][0]).toEqual(10);
wrapper.setProps({
min: 3,
max: 8,
});
await later();
expect(wrapper.emitted('input')[1][0]).toEqual(8);
});
test('change decimal-length', async () => {
const wrapper = mount(Stepper, {
propsData: {
value: 1.33
}
});
wrapper.setProps({
decimalLength: 1
});
await later();
expect(wrapper.emitted('input')[0][0]).toEqual('1.3');
});
test('change integer', async () => {
const wrapper = mount(Stepper, {
propsData: {
value: 1.33
}
});
wrapper.setProps({
integer: true
});
await later();
expect(wrapper.emitted('input')[0][0]).toEqual(1);
});