Skip to content

Commit 836087f

Browse files
committed
fix(VNumberInput): emit model when input is a number between max & min
fixes #20337
1 parent a0e7c3b commit 836087f

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

packages/vuetify/src/labs/VNumberInput/VNumberInput.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,14 @@ export const VNumberInput = genericComponent<VNumberInputSlots>()({
7575
const model = computed({
7676
get: () => _model.value,
7777
set (val) {
78-
if (typeof val !== 'string') _model.value = val
78+
if (val === null) {
79+
_model.value = null
80+
return
81+
}
82+
83+
if (!isNaN(+val) && +val <= props.max && +val >= props.min) {
84+
_model.value = +val
85+
}
7986
},
8087
})
8188

packages/vuetify/src/labs/VNumberInput/__tests__/VNumberInput.spec.cy.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,46 @@ describe('VNumberInput', () => {
4242
expect(model.value).equal(null)
4343
})
4444
})
45+
46+
// https://github.com/vuetifyjs/vuetify/issues/20337
47+
it('should emit model-value when input value is a legit number within range of the max and min', () => {
48+
const model = ref(null)
49+
50+
cy.mount(() => (
51+
<>
52+
<VNumberInput
53+
v-model={ model.value }
54+
min={ 5 }
55+
max={ 125 }
56+
/>
57+
</>
58+
))
59+
.get('.v-number-input input')
60+
.focus().realType('1')
61+
.then(() => {
62+
expect(model.value).equal(null)
63+
})
64+
.get('.v-number-input input')
65+
.realType('0')
66+
.then(() => {
67+
expect(model.value).equal(10)
68+
})
69+
.realType('0')
70+
.then(() => {
71+
expect(model.value).equal(100)
72+
})
73+
.realType('0')
74+
.get('.v-number-input input')
75+
.then(() => {
76+
expect(model.value).equal(100)
77+
})
78+
.get('.v-number-input input')
79+
.blur()
80+
.then(() => {
81+
expect(model.value).equal(125)
82+
})
83+
})
84+
4585
describe('readonly', () => {
4686
it('should prevent mutation when readonly applied', () => {
4787
const value = ref(1)

0 commit comments

Comments
 (0)