diff --git a/src/utils/edit/input.ts b/src/utils/edit/input.ts index cc858626..9919faff 100644 --- a/src/utils/edit/input.ts +++ b/src/utils/edit/input.ts @@ -128,7 +128,7 @@ function editInputElement( ) { let dataToInsert = data const spaceUntilMaxLength = getSpaceUntilMaxLength(element) - if (spaceUntilMaxLength !== undefined) { + if (spaceUntilMaxLength !== undefined && data.length > 0) { if (spaceUntilMaxLength > 0) { dataToInsert = data.substring(0, spaceUntilMaxLength) } else { diff --git a/tests/utils/edit/input.ts b/tests/utils/edit/input.ts index ef146ca8..6ed3d3c6 100644 --- a/tests/utils/edit/input.ts +++ b/tests/utils/edit/input.ts @@ -235,10 +235,10 @@ test('prevent input on `beforeinput` event', () => { cases( 'maxlength', - ({html, data, expectedValue}) => { + ({html, data, inputType, expectedValue}) => { const {element, eventWasFired} = render(html) - input(createConfig(), element, data) + input(createConfig(), element, data, inputType) expect(element).toHaveValue(expectedValue) expect(eventWasFired('beforeinput')).toBe(true) @@ -270,6 +270,12 @@ cases( data: '', expectedValue: '', }, + 'delete data when maxlength is reached': { + html: ``, + data: '', + inputType: 'deleteContentForward', + expectedValue: 'oo', + }, }, )