Skip to content

Commit 5e23dcb

Browse files
committedAug 1, 2023
fix: add support for handling range HTML inputs
1 parent 8edc397 commit 5e23dcb

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed
 

Diff for: ‎.changeset/ten-snails-bow.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'vee-validate': patch
3+
---
4+
5+
fix: add support for parsing range inputs

Diff for: ‎packages/vee-validate/src/utils/events.ts

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ function parseInputValue(el: HTMLInputElement) {
66
return Number.isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber;
77
}
88

9+
if (el.type === 'range') {
10+
return Number.isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber;
11+
}
12+
913
return el.value;
1014
}
1115

Diff for: ‎packages/vee-validate/tests/useField.spec.ts

+26
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,32 @@ describe('useField()', () => {
943943
expect(field.value.value).toBe('');
944944
});
945945

946+
test('handleChange parses input[type=range] value', async () => {
947+
let field!: FieldContext;
948+
949+
mountWithHoc({
950+
setup() {
951+
field = useField('field', undefined);
952+
const { handleChange } = field;
953+
954+
return {
955+
handleChange,
956+
};
957+
},
958+
template: `<input type="range" min="0" max="1000" step="100" @change="handleChange" />`,
959+
});
960+
961+
await flushPromises();
962+
const input = document.querySelector('input') as HTMLInputElement;
963+
setValue(input, '500');
964+
await flushPromises();
965+
expect(field.value.value).toBe(500);
966+
967+
setValue(input, '0');
968+
await flushPromises();
969+
expect(field.value.value).toBe(0);
970+
});
971+
946972
test('a validator can return multiple messages', async () => {
947973
let field!: FieldContext;
948974
const validator = vi.fn(val => (val ? true : [REQUIRED_MESSAGE, 'second']));

0 commit comments

Comments
 (0)
Please sign in to comment.